For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Recherche web

Permettez aux modèles de rechercher les dernières informations sur le web avant de générer une réponse.

La recherche web permet aux modèles d’accéder à des informations à jour sur Internet et de fournir des réponses accompagnées de citations de leurs sources. Pour l’activer, utilisez l’outil de recherche web dans l’API Responses ou, dans certains cas, dans Chat Completions.

Les modèles OpenAI proposent trois grands types de recherche web :

  1. Recherche web sans raisonnement : le modèle sans raisonnement transmet la requête de l’utilisateur à l’outil de recherche web, qui renvoie une réponse fondée sur les premiers résultats. Il n’y a aucune planification interne : le modèle se contente de transmettre les réponses de l’outil de recherche. Cette méthode est rapide et idéale pour les recherches ponctuelles.
  2. Avec la recherche agentique, le modèle de raisonnement gère activement le processus de recherche. Il peut effectuer des recherches web dans le cadre de son raisonnement détaillé (« chain-of-thought »), analyser les résultats et décider de poursuivre ou non la recherche. Cette souplesse convient bien aux workflows complexes, mais implique aussi des recherches plus longues que de simples recherches ponctuelles. Par exemple, vous pouvez ajuster les niveaux de raisonnement de modèles comme gpt-5.5 pour modifier à la fois la profondeur et la latence de la recherche.
  3. La recherche approfondie est une méthode spécialisée, pilotée par un agent, qui permet aux modèles de raisonnement de mener des investigations poussées et de longue durée. Le modèle effectue des recherches web dans le cadre de son raisonnement détaillé (« chain-of-thought »), en consultant souvent des centaines de sources. La recherche approfondie peut prendre plusieurs minutes ; il est donc préférable de l’utiliser avec le mode en arrière-plan. Utilisez gpt-5.5 avec le raisonnement réglé sur high ou xhigh.

Choisissez une intégration

Cas d’utilisationApproche recommandéeRemarques
Nouvelle intégration de recherche webAPI Responses avec web_search et gpt-5.5Prend en charge les options de l’outil de recherche web hébergé, notamment les filtres, les sources, le contrôle de l’accès en direct et les recherches de plus longue durée
Intégration existante de recherche avec Chat CompletionsChat Completions avec gpt-5-search-apiUtilisez cette approche uniquement si vous devez conserver une intégration Chat Completions
Recherche en plusieurs étapes ou génération de rapports de longue duréegpt-5.5 avec le raisonnement réglé sur high ou xhighUtilisez le mode en arrière-plan pour les rapports dont la génération peut prendre plusieurs minutes

Avec l’API Responses, vous pouvez activer la recherche web en la configurant dans le tableau tools d’une requête API de génération de contenu. Comme pour tout autre outil, le modèle peut choisir d’effectuer ou non une recherche web en fonction du contenu du prompt d’entrée.

Pour les nouvelles intégrations de l’API Responses, utilisez { "type": "web_search" }. L’ancien outil web_search_preview reste disponible pour les intégrations existantes, mais ne prend pas en charge les options plus récentes telles que filters, external_web_access et return_token_budget.

Exemple d’utilisation de l’outil de recherche web
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  tools: [{ type: "web_search" }],
  input: "What was a positive news story from today?",
});

console.log(response.output_text);

Sortie et citations

Les réponses du modèle qui utilisent l’outil de recherche web comprennent deux parties :

  • Un élément de sortie web_search_call contenant l’identifiant de l’appel de recherche ainsi que l’action effectuée dans web_search_call.action. Cette action est l’une des suivantes :
    • search, qui correspond à une recherche web. Cette action contient généralement, mais pas toujours, les requêtes de recherche exécutées dans queries. Les actions de recherche entraînent des frais d’appel d’outil (voir les tarifs).
    • open_page, qui correspond à l’ouverture d’une page. Cette action est prise en charge par les modèles de raisonnement.
    • find_in_page, qui correspond à une recherche dans une page. Cette action est prise en charge par les modèles de raisonnement.
  • Un élément de sortie message contenant :
    • Le résultat textuel dans message.content[0].text
    • Les annotations message.content[0].annotations pour les URL citées

Par défaut, la réponse du modèle inclut des citations intégrées au texte pour les URL trouvées dans les résultats de recherche web. L’objet d’annotation url_citation contient également l’URL, le titre et l’emplacement de la source citée.

Lorsque vous présentez aux utilisateurs finaux des résultats web ou des informations issues de ces résultats, les citations intégrées au texte doivent être clairement visibles et cliquables dans votre interface utilisateur.

[
  {
    "type": "web_search_call",
    "id": "ws_67c9fa0502748190b7dd390736892e100be649c1a5ff9609",
    "status": "completed",
    "action": {
      "type": "search",
      "query": "latest news about AI"
    }
  },
  {
    "id": "msg_67c9fa077e288190af08fdffda2e34f20be649c1a5ff9609",
    "type": "message",
    "status": "completed",
    "role": "assistant",
    "content": [
      {
        "type": "output_text",
        "text": "On March 6, 2025, several news...",
        "annotations": [
          {
            "type": "url_citation",
            "start_index": 2606,
            "end_index": 2758,
            "url": "https://...",
            "title": "Title..."
          }
        ]
      }
    ]
  }
]
Si vous utilisezApproche recommandéeRemarques
web_search_preview dans ResponsesMigrez vers web_searchweb_search prend en charge des options plus récentes telles que filters, external_web_access et return_token_budget
gpt-4o-search-preview ou gpt-4o-mini-search-previewMigrez vers web_search dans Responses, ou utilisez gpt-5-search-api si vous devez conserver Chat CompletionsLes modèles de recherche en préversion sont obsolètes et leur arrêt est fixé au 2026-07-23
Intégrations de recherche avec Chat CompletionsUtilisez gpt-5-search-api, ou migrez vers web_search dans Responses pour disposer de davantage d’options de contrôle de l’outil et rendre la recherche facultativeLes modèles de recherche Chat Completions effectuent toujours une recherche avant de répondre ; dans Responses, la recherche est un outil

Taille du contexte de recherche

search_context_size détermine la quantité de contexte issue des résultats de recherche web mise à la disposition du modèle avant qu’il génère une réponse. Utilisez low pour les recherches simples, medium comme valeur par défaut équilibrée et high lorsque la réponse peut nécessiter davantage de détails provenant des résultats de recherche. Ce paramètre ne définit pas un nombre exact de tokens et ne garantit pas un nombre précis de sources ou de citations.

Définissez la taille du contexte de recherche
import OpenAI from "openai";
const openai = new OpenAI();

const response = await openai.responses.create({
  model: "gpt-6-astra",
  tools: [
    {
      type: "web_search",
      search_context_size: "low",
    },
  ],
  input: "What movie won best picture in 2025?",
});
console.log(response.output_text);

Effectuez des recherches web plus longues

return_token_budget contrôle la quantité de contenu issu des résultats de recherche web que l’outil peut renvoyer lors d’une recherche via l’API Responses avec les modèles de raisonnement GPT-5+. Conservez la valeur par défaut pour la plupart des requêtes. Définissez ce paramètre sur unlimited uniquement pour les recherches ou les évaluations nécessitant un effort important, qui doivent examiner de nombreuses pages et risqueraient autrement de s’arrêter au plafond standard de tokens renvoyés.

Utilisez unlimited de manière sélective, car cette valeur peut augmenter la latence et le coût. Pour les tâches de longue durée comportant plusieurs recherches, utilisez le mode en arrière-plan (background: true) afin que la requête puisse continuer à s’exécuter de manière asynchrone et que vous puissiez récupérer la réponse finale plus tard.

ValeurComportement
defaultUtilise le budget standard de tokens renvoyés pour les résultats de recherche web. Ce comportement est identique à celui obtenu lorsque vous omettez return_token_budget.
unlimitedSupprime le budget par défaut de tokens renvoyés pour la recherche web.

Ce paramètre s’applique uniquement à l’outil hébergé web_search de l’API Responses pour la recherche web avec les modèles de raisonnement GPT-5+. Il ne modifie pas la fenêtre de contexte de recherche et ne s’applique ni à la recherche web sans raisonnement, ni aux anciennes intégrations de l’API Search, ni à la recherche web dans les conteneurs, ni aux modèles de recherche de Chat Completions, ni à web_search_preview. Seules les valeurs default et unlimited sont prises en charge ; null, les nombres et les autres chaînes sont rejetés.

Effectuez des recherches web plus longues
curl "https://api.openai.com/v1/responses" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "reasoning": { "effort": "xhigh" },
    "tools": [
      {
        "type": "web_search",
        "return_token_budget": "unlimited"
      }
    ],
    "input": "Research the economic impact of semaglutide on global healthcare systems.\n\nDo:\n- Include specific figures, trends, statistics, and measurable outcomes.\n- Prioritize reliable, up-to-date sources: peer-reviewed research, health organizations (e.g., WHO, CDC), regulatory agencies, or pharmaceutical earnings reports.\n- Include inline citations and return all source metadata.\n\nBe analytical, avoid generalities, and ensure that each section supports data-backed reasoning that could inform healthcare policy or financial modeling."
  }'

Filtrage par domaine

Le filtrage par domaine de la recherche web vous permet de limiter les résultats à un ensemble précis de domaines. Avec le paramètre filters, vous pouvez configurer jusqu’à 100 domaines dans allowed_domains ou jusqu’à 100 domaines dans blocked_domains. Saisissez les domaines sans le préfixe HTTP ou HTTPS. Par exemple, utilisez openai.com au lieu de https://openai.com/. Cette méthode inclut également les sous-domaines dans la recherche. Le filtrage par domaine est disponible uniquement dans l’API Responses avec l’outil web_search.

Sources

Pour afficher toutes les URL récupérées lors d’une recherche web, utilisez le champ sources. Contrairement aux citations intégrées au texte, qui n’affichent que les références les plus pertinentes, sources renvoie la liste complète des URL consultées par le modèle pour élaborer sa réponse. Le nombre de sources est souvent supérieur au nombre de citations. Les flux tiers en temps réel y figurent également, sous les libellés oai-sports, oai-weather ou oai-finance. Le champ sources est disponible avec les outils web_search et web_search_preview.

Listez les sources
curl "https://api.openai.com/v1/responses" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "reasoning": { "effort": "low" },
    "tools": [
      {
        "type": "web_search",
        "filters": {
          "allowed_domains": [
            "pubmed.ncbi.nlm.nih.gov",
            "clinicaltrials.gov",
            "www.who.int",
            "www.cdc.gov",
            "www.fda.gov"
          ],
          "blocked_domains": [
            "reddit.com",
            "quora.com",
            "wikipedia.org"
          ]
        }
      }
    ],
    "tool_choice": "auto",
    "include": ["web_search_call.action.sources"],
    "input": "Please perform a web search on how semaglutide is used in the treatment of diabetes."
  }'

Résultats de recherche d’images

La recherche web peut renvoyer des images en plus des résultats textuels habituels. Utilisez la recherche d’images lorsque votre application a besoin de visuels récents ou issus du web, par exemple des photos de produits, de monuments, de lieux ou d’événements, ou encore des références visuelles.

Pour utiliser la recherche d’images, configurez search_content_types pour y inclure image. Ajoutez text si vous souhaitez également obtenir des résultats textuels complémentaires pour aider le modèle à résumer, à classer ou à expliquer les images récupérées.

Utilisez image_settings pour contrôler le comportement propre aux images :

  • max_results : Demandez un nombre strictement positif de résultats d’images.
  • caption : Demandez de courtes descriptions des images lorsqu’elles sont disponibles.

Pour examiner les résultats d’images bruts, incluez web_search_call.results dans la requête et lisez web_search_call.results[] dans la réponse. Les résultats d’images sont renvoyés séparément du message de l’assistant. Analysez donc directement l’élément web_search_call lorsque votre application a besoin des URL ou des métadonnées.

Recherchez des images
import OpenAI from "openai";
const client = new OpenAI();

const response = await client.responses.create({
  model: "gpt-6-astra",
  reasoning: { effort: "low" },
  tools: [
    {
      type: "web_search",
      search_content_types: ["image", "text"],
      image_settings: {
        max_results: 3,
        caption: true,
      },
    },
  ],
  include: ["web_search_call.results"],
  input:
    "Search for recent images and supporting text sources about the Golden Gate Bridge at sunset.",
});

console.log(response.output);

Chaque image_result comprend :

  • image_url : L’URL canonique de l’image du résultat.
  • source_website_url : La page où l’image a été trouvée.
  • thumbnail_url : L’URL d’une miniature, lorsqu’elle est disponible.
  • caption : Une courte légende ou description, lorsqu’elle est disponible.
{
  "output": [
    {
      "type": "web_search_call",
      "status": "completed",
      "results": [
        {
          "type": "image_result",
          "image_url": "https://cdn.example/golden-gate-sunset.jpg",
          "thumbnail_url": "https://cdn.example/golden-gate-sunset-thumb.jpg",
          "source_website_url": "https://example.com/source-page",
          "caption": "Golden Gate Bridge at sunset"
        }
      ]
    }
  ]
}

Localisation de l’utilisateur

Pour affiner les résultats de recherche en fonction de critères géographiques, vous pouvez indiquer la localisation approximative de l’utilisateur à l’aide du pays, de la ville, de la région et/ou du fuseau horaire.

  • Les champs city et region sont des chaînes de texte libre, comme Minneapolis et Minnesota respectivement.
  • Le champ country contient un code pays ISO à deux lettres, comme US.
  • Le champ timezone contient un fuseau horaire IANA, comme America/Chicago.

La localisation de l’utilisateur n’est pas prise en charge par les modèles de recherche approfondie utilisant la recherche web.

Personnalisez la localisation de l’utilisateur
import OpenAI from "openai";
const openai = new OpenAI();

const response = await openai.responses.create({
  model: "gpt-6-astra",
  tools: [
    {
      type: "web_search",
      user_location: {
        type: "approximate",
        country: "GB",
        city: "London",
        region: "London",
      },
    },
  ],
  input: "What are the best restaurants near me?",
});
console.log(response.output_text);

Accès Internet en direct

Définissez si l’outil de recherche web récupère du contenu en direct ou utilise uniquement des résultats mis en cache ou indexés dans l’API Responses.

  • Définissez external_web_access: false sur l’outil web_search pour l’exécuter en mode hors ligne, en utilisant uniquement le cache.
  • Si vous ne définissez pas ce paramètre, sa valeur par défaut est true (accès en direct).
  • Les variantes en préversion (web_search_preview) ignorent ce paramètre et se comportent comme si external_web_access avait la valeur true.
Contrôlez l’accès Internet en direct
curl "https://api.openai.com/v1/responses" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "tools": [
      { "type": "web_search", "external_web_access": false }
    ],
    "tool_choice": "auto",
    "input": "Find when the Eiffel Tower opened to the public and cite the source."
  }'

Limites

API Chat Completions

L’API Chat Completions ne prend en charge que des modèles de recherche spécialisés pour la recherche web. Ces modèles ne prennent pas en charge les fonctionnalités de l’outil web_search de l’API Responses, comme les filtres par domaine, les listes complètes de sources, le contrôle de l’accès en direct et le contrôle du budget de tokens renvoyés.

ModèleFenêtre de contexteLimite
gpt-5-search-api200kUtilise l’intégration des modèles de recherche de Chat Completions
gpt-4o-search-preview128kPasse par les modèles de recherche de Chat Completions ; modèle obsolète, arrêt le 2026-07-23
gpt-4o-mini-search-preview128kPasse par les modèles de recherche de Chat Completions ; modèle obsolète, arrêt le 2026-07-23

API Responses

Utilisez l’outil hébergé web_search. L’API Responses accepte toujours web_search_preview pour les intégrations existantes, mais utilisez web_search pour les nouvelles intégrations.

Pour bénéficier d’une fenêtre de contexte plus grande pour le modèle, utilisez gpt-5.5. La fenêtre de contexte de la recherche web reste limitée à 128k.

ModèleFenêtre de contexte du modèleLimitation
gpt-4.11MLe contexte de recherche est limité à 128k
gpt-4.1-mini1MLe contexte de recherche est limité à 128k
o4-mini200kLe contexte de recherche est limité à 128k ; modèle obsolète, arrêt le 2026-10-23

Pour la recherche web dans l’API Responses, la fenêtre de contexte de recherche est limitée à 128k, même lorsque la fenêtre de contexte du modèle est plus grande.

  • La recherche web ne prend pas en charge gpt-5 avec un niveau de raisonnement minimal.
  • gpt-5.4 peut produire des résultats de moindre qualité lorsque l’effort de raisonnement est réglé sur none.
  • La recherche web dans l’API Responses utilise les limites de débit par palier du modèle sous-jacent.
  • web_search_preview ne prend en charge ni filters ni return_token_budget, et ignore external_web_access.
  • Avec tool_choice: "auto", la recherche est facultative. Utilisez tool_choice: "required" ou sélectionnez explicitement un outil de recherche web lorsque la recherche doit être exécutée.

Notes d’utilisation

Disponibilité dans les API Limites de débit Notes

Identiques aux limites de débit par palier du modèle sous-jacent utilisé avec l’outil.

Tarifs
ZDR et résidence des données