Recherche web DeepSeek
Faites rechercher des informations en temps réel sur le web par DeepSeek V4.1 Flash, avec les sources citées, grâce à l'outil web_search de l'API Responses.
📝 Présentation
deepseek-v4.1-flash peut effectuer des recherches sur le web : le modèle décide lui-même s'il faut chercher et avec quels mots-clés, répond à partir des résultats et ajoute les liens des sources. Idéal pour les informations qui évoluent vite : actualités, météo, marchés, résultats sportifs.
La recherche web s'active avec l'outil web_search de l'API Responses (POST /v1/responses).
Prérequis
- Groupe du jeton : Deepseek官转
- Modèle :
deepseek-v4.1-flash - Point de terminaison :
POST https://api.88api.ai/v1/responses
💡 Exemples
Utilisation de base ✅
curl https://api.88api.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"tools": [{"type": "web_search"}],
"input": "Quel temps fait-il à Hangzhou aujourd’hui ?"
}'Python (SDK OpenAI) ✅
from openai import OpenAI
client = OpenAI(base_url="https://api.88api.ai/v1", api_key="sk-votre-jeton")
resp = client.responses.create(
model="deepseek-v4.1-flash",
tools=[{"type": "web_search"}],
input="Quel temps fait-il à Hangzhou aujourd’hui ?",
)
print(resp.output_text)Limiter les mots-clés et les résultats ✅
curl https://api.88api.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"max_tool_calls": 2,
"tools": [{
"type": "web_search",
"max_keyword": 2,
"limit": 5,
"user_location": {"type": "approximate", "country": "Chine", "region": "Zhejiang", "city": "Hangzhou"}
}],
"input": "Quel temps fait-il à Hangzhou aujourd’hui ?"
}'Streaming ✅
Ajoutez "stream": true au corps de la requête. Chaque recherche émet les événements suivants avant que le texte de la réponse ne commence :
| Événement | Signification |
|---|---|
response.web_search_call.in_progress | Une recherche commence |
response.web_search_call.searching | Recherche en cours |
response.web_search_call.completed | Recherche terminée |
response.output_text.delta | Texte de la réponse, morceau par morceau |
response.completed | Terminé ; contient usage |
📬 Exemple de réponse
Extrait ; les éléments de raisonnement (reasoning) et d’autres champs sont omis :
{
"object": "response",
"status": "completed",
"output": [
{
"type": "web_search_call",
"id": "ws_0217925902513450000...",
"status": "completed",
"action": {
"type": "search",
"query": "météo Hangzhou aujourd’hui"
}
},
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "À Hangzhou, la pluie s’est arrêtée ce matin et le temps est devenu nuageux, avec un maximum d’environ 21–24 °C...",
"annotations": [
{
"type": "url_citation",
"title": "中国气象局-天气预报-城市预报",
"url": "https://weather.cma.cn/web/text/HD/AZJ.html",
"site_name": "中国气象局",
"publish_time": "2026年10月21日 08:00:00(CST) 星期三"
}
]
}
]
}
],
"usage": {
"input_tokens": 4320,
"output_tokens": 418,
"total_tokens": 4738,
"tool_usage": {"web_search": 1},
"tool_usage_details": {"web_search": {"search_engine": 1}}
}
}| Champ | Description |
|---|---|
output[].type = "web_search_call" | Une recherche effectuée par le modèle ; action.query contient les mots-clés, séparés par ; quand un tour en utilise plusieurs |
output[].type = "message" | La réponse finale ; le texte est dans output_text.text |
annotations[].type = "url_citation" | Une source citée : titre, lien, nom du site et date de publication |
usage.tool_usage.web_search | Nombre de recherches de la requête (compté par mot-clé) |
⚙️ Paramètres
web_search dans tools
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
type | string | Oui | Toujours web_search |
max_keyword | integer | Non | Nombre maximal de mots-clés par tour de recherche, de 1 à 50 |
limit | integer | Non | Nombre maximal de résultats par recherche, de 1 à 50, 10 par défaut |
user_location | object | Non | Position approximative de l’utilisateur, améliore la météo et les questions locales. Format : {"type": "approximate", "country": "Chine", "region": "Zhejiang", "city": "Hangzhou"} |
Paramètres de la requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
max_tool_calls | integer | Non | Nombre maximal de tours de recherche dans une réponse, de 1 à 10, 3 par défaut |
stream | boolean | Non | Réponse en streaming |
Les autres paramètres (input, instructions, max_output_tokens, etc.) sont identiques à ceux d’OpenAI Responses.
💰 Facturation
Coût = tokens du modèle + recherches :
- Les recherches sont comptées par mot-clé : un tour qui utilise plusieurs mots-clés compte une fois par mot-clé, selon
usage.tool_usage.web_search. Aucun coût de recherche n’est facturé si le modèle décide de ne pas chercher. - Tokens : les résultats de recherche sont transmis au modèle en entrée ; les tokens d’entrée augmentent donc nettement (généralement de quelques milliers par recherche) et sont facturés au prix du modèle.
- Pour maîtriser le coût, limitez les mots-clés par tour avec
max_keywordet le nombre de tours avecmax_tool_calls.
❓ FAQ
Puis-je utiliser la recherche web avec /v1/chat/completions ?
Non. La recherche web ne fonctionne que sur /v1/responses. Un outil web_search envoyé à Chat Completions ne lance aucune recherche et n’est pas facturé.
Pourquoi le modèle n’a-t-il pas cherché ? Le modèle décide si la question nécessite une recherche. Les questions sans besoin d’informations récentes (calcul, culture générale) reçoivent une réponse directe. Pour forcer la recherche, demandez-le explicitement, par exemple « cherche sur le web avant de répondre ».
Les autres groupes peuvent-ils l’utiliser ?
Actuellement, seul deepseek-v4.1-flash du groupe Deepseek官转 prend en charge la recherche web.