88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support
Recherche web

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énementSignification
response.web_search_call.in_progressUne recherche commence
response.web_search_call.searchingRecherche en cours
response.web_search_call.completedRecherche terminée
response.output_text.deltaTexte de la réponse, morceau par morceau
response.completedTerminé ; 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}}
  }
}
ChampDescription
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_searchNombre de recherches de la requête (compté par mot-clé)

⚙️ Paramètres

web_search dans tools

ParamètreTypeObligatoireDescription
typestringOuiToujours web_search
max_keywordintegerNonNombre maximal de mots-clés par tour de recherche, de 1 à 50
limitintegerNonNombre maximal de résultats par recherche, de 1 à 50, 10 par défaut
user_locationobjectNonPosition 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ètreTypeObligatoireDescription
max_tool_callsintegerNonNombre maximal de tours de recherche dans une réponse, de 1 à 10, 3 par défaut
streambooleanNonRé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_keyword et le nombre de tours avec max_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.