Permita que os modelos pesquisem na Web para encontrar informações atualizadas antes de gerar uma resposta.
Responses
A pesquisa na Web permite que os modelos consultem informações atualizadas na internet e citem as fontes nas respostas. Para habilitar esse recurso, use a ferramenta de pesquisa na Web na API Responses ou, em alguns casos, em Chat Completions.
Escolha como conduzir a pesquisa de acordo com a pergunta que você precisa responder.
Para uma consulta rápida, peça ao modelo que pesquise um fato específico e cite a fonte.
Se a pergunta exigir várias fontes, use um modelo de raciocínio como gpt-6-astra. O modelo pode refinar as pesquisas à medida que lê os resultados. Use o modo em segundo plano se a requisição puder levar vários minutos.
Escolha uma integração
Caso de uso
Integração recomendada
Observações
Nova integração de pesquisa na Web
API Responses com web_search e gpt-6-astra
A ferramenta hospedada de pesquisa na Web oferece filtros, consulta às fontes, controle de acesso em tempo real e suporte a pesquisas mais longas
Integração existente de pesquisa em Chat Completions
Chat Completions com gpt-5-search-api
Use esta opção somente se precisar manter uma integração com Chat Completions
Pesquisa em várias etapas ou geração demorada de relatórios
gpt-6-astra com nível de raciocínio high ou xhigh
Use o modo em segundo plano para relatórios que podem levar vários minutos
Na API Responses, você pode habilitar a pesquisa na Web configurando a ferramenta no array tools da requisição de geração de conteúdo. Assim como ocorre com outras ferramentas, o modelo pode decidir se vai pesquisar na Web com base no conteúdo do prompt de entrada.
Para novas integrações com a API Responses, use { "type": "web_search" }. A ferramenta anterior, web_search_preview, continua disponível para integrações legadas, mas não oferece controles mais recentes, como filters, external_web_access e return_token_budget.
Exemplo de uso da ferramenta de pesquisa na Web
JavaScript
1
2
3
4
5
6
7
8
9
10import OpenAI from"openai";constclient=newOpenAI();constresponse=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);
1
2
3
4
5
6
7
8
9
10
11from openai import OpenAIclient = OpenAI()response = client.responses.create( model="gpt-6-astra", tools=[{"type": "web_search"}], input="What was a positive news story from today?",)print(response.output_text)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15using OpenAI.Responses;#pragma warning disable OPENAI001string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;ResponsesClient client = new(key);CreateResponseOptions options = new() { Model = "gpt-6-astra" };options.Tools.Add(ResponseTool.CreateWebSearchTool());options.InputItems.Add( ResponseItem.CreateUserMessageItem("What was a positive news story from today?"));ResponseResult response = await client.CreateResponseAsync(options);Console.WriteLine(response.GetOutputText());
1
2
3
4
5
6
7
8
9
10
11require "openai"openai = OpenAI::Client.newresponse = openai.responses.create( model: "gpt-6-astra", tools: [{ type: "web_search" }], input: "What was a positive news story from today?")puts(response.output_text)
1
2
3
4
5
6
7
8curl "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"}], "input": "what was a positive news story from today?"}'
1
2
3
4
5
6
7
8openai responses create \ --model gpt-6-astra \ --raw-output \ --transform 'output.#(type=="message").content.0.text' <<'YAML'tools: - type: web_searchinput: What was a positive news story from today?YAML
Saída e citações
Quando o modelo usa a ferramenta de pesquisa na Web, a resposta inclui duas partes.
Um item de saída web_search_call com o ID da chamada de pesquisa e a ação executada em web_search_call.action. A ação pode ter um dos seguintes valores.
search indica uma pesquisa na Web. O campo queries geralmente contém as consultas executadas, mas pode estar ausente. As ações de pesquisa têm um custo por chamada de ferramenta (consulte os preços).
open_page indica que uma página foi aberta. Os modelos de raciocínio oferecem suporte a essa ação.
find_in_page indica uma busca dentro de uma página. Os modelos de raciocínio oferecem suporte a essa ação.
Um item de saída message com os seguintes dados.
O texto da resposta em message.content[0].text
As anotações em message.content[0].annotations referentes às URLs citadas
Por padrão, a resposta do modelo inclui citações no próprio texto para as URLs encontradas nos resultados da pesquisa na Web. O objeto de anotação url_citation também contém a URL, o título e a posição da citação no texto.
Quando sua interface exibir resultados da Web ou informações extraídas deles,
você deve apresentar as citações no próprio texto como links clicáveis em destaque.
Em Chat Completions, o modelo sempre busca informações na Web antes de responder à sua consulta. Para que o modelo decida se precisa pesquisar, use a API Responses com a ferramenta web_search.
Atualmente, use o seguinte modelo para pesquisa na Web em Chat Completions.
gpt-5-search-api
Exemplo de uso do parâmetro de pesquisa na Web
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import OpenAI from"openai";constclient=newOpenAI();constcompletion=await client.chat.completions.create({ model: "gpt-5-search-api", web_search_options: {}, messages: [ { role: "user", content: "What was a positive news story from today?", }, ],});console.log(completion.choices[0].message.content);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16from openai import OpenAIclient = OpenAI()completion = client.chat.completions.create( model="gpt-5-search-api", web_search_options={}, messages=[ { "role": "user", "content": "What was a positive news story from today?", } ],)print(completion.choices[0].message.content)
1
2
3
4
5
6
7
8
9
10
11curl -X POST "https://api.openai.com/v1/chat/completions" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-type: application/json" \ -d '{ "model": "gpt-5-search-api", "web_search_options": {}, "messages": [{ "role": "user", "content": "What was a positive news story from today?" }] }'
Saída e citações
O item de resposta da API no array choices inclui os seguintes campos.
message.content contém o texto da resposta do modelo, com as citações no próprio texto, quando houver
annotations contém a lista de URLs citadas
Por padrão, a resposta do modelo inclui citações no próprio texto para as URLs encontradas nos resultados da pesquisa na Web. O objeto de anotação url_citation também contém a URL e o título da fonte citada, além dos índices dos caracteres que delimitam o trecho da resposta em que o modelo usou essa fonte.
Quando sua interface exibir resultados da Web ou informações extraídas deles,
você deve apresentar as citações no próprio texto como links clicáveis em destaque.
Nas integrações que ainda usam gpt-5, a pesquisa na Web exige um nível de esforço de raciocínio acima de minimal.
Tamanho do contexto da pesquisa
search_context_size controla quanto contexto dos resultados da pesquisa na Web fica disponível para o modelo antes que ele gere uma resposta. Use low para consultas que exigem poucos detalhes, medium como opção padrão equilibrada e high quando a resposta puder exigir mais detalhes dos resultados. Essa configuração não determina uma contagem exata de tokens nem garante um número específico de fontes ou citações.
Definir o tamanho do contexto da pesquisa
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14import OpenAI from"openai";constopenai=newOpenAI();constresponse=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);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16from openai import OpenAIclient = OpenAI()response = client.responses.create( model="gpt-6-astra", tools=[ { "type": "web_search", "search_context_size": "low", } ], input="What movie won best picture in 2025?",)print(response.output_text)
return_token_budget controla a quantidade de conteúdo dos resultados da pesquisa na Web que a ferramenta pode retornar durante uma pesquisa na API Responses com modelos de raciocínio GPT-5 ou posteriores. Mantenha o valor padrão na maioria das requisições. Defina o valor como unlimited apenas para pesquisas ou avaliações intensivas que precisem examinar muitas páginas e que, de outra forma, possam ser interrompidas ao atingir o limite padrão de tokens retornados.
Use unlimited de forma seletiva, pois essa opção pode aumentar a latência e o custo. Para tarefas demoradas que envolvam várias pesquisas, use o modo em segundo plano (background: true). Assim, a requisição pode continuar em execução de forma assíncrona, e você pode recuperar a resposta final mais tarde.
Valor
Comportamento
default
Aplica o limite padrão de tokens retornados nos resultados da pesquisa na Web. Omitir return_token_budget tem o mesmo efeito.
unlimited
Remove o limite padrão de tokens que a ferramenta pode retornar durante a pesquisa na Web.
Esse parâmetro se aplica somente à ferramenta hospedada web_search da API Responses em pesquisas na Web com modelos de raciocínio GPT-5 ou posteriores. Ele não altera a janela de contexto da pesquisa. Também não se aplica à pesquisa na Web sem raciocínio, às rotas legadas da API de pesquisa, à pesquisa na Web em contêineres, aos modelos de pesquisa de Chat Completions nem à ferramenta web_search_preview. Os únicos valores aceitos são default e unlimited. A API rejeita null, números e outras strings.
Executar pesquisas mais longas na Web
curl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46import OpenAI from "openai";import { Agent, fetch } from "undici";// Allow long research runs without automatic request retries.const timeout = 15 * 60 * 1000;const dispatcher = new Agent({ headersTimeout: timeout, bodyTimeout: timeout,});const client = new OpenAI({ timeout, maxRetries: 0, fetch, fetchOptions: { dispatcher },});try { const stream = client.responses.stream({ 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.", "", "Do:", "- Include specific figures, trends, statistics, and measurable outcomes.", "- Prioritize reliable, up-to-date sources: peer-reviewed research, health organizations (e.g., WHO, CDC), regulatory agencies, or pharmaceutical earnings reports.", "- Include inline citations and return all source metadata.", "", "Be analytical, avoid generalities, and ensure that each section supports data-backed reasoning that could inform healthcare policy or financial modeling.", ].join("\n"), }); const response = await stream.finalResponse(); if (response.status !== "completed") { throw new Error(`Research response ended with status ${response.status}`); } console.log(response.output_text);} finally { await dispatcher.close();}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24from openai import OpenAIclient = OpenAI()response = client.responses.create( 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.Do:- Include specific figures, trends, statistics, and measurable outcomes.- Prioritize reliable, up-to-date sources: peer-reviewed research, health organizations (e.g., WHO, CDC), regulatory agencies, or pharmaceutical earnings reports.- Include inline citations and return all source metadata.Be analytical, avoid generalities, and ensure that each section supports data-backed reasoning that could inform healthcare policy or financial modeling.""",)print(response.output_text)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37package mainimport ( "context" "fmt" "strings" "github.com/openai/openai-go/v3" "github.com/openai/openai-go/v3/responses" "github.com/openai/openai-go/v3/shared")func main() { client := openai.NewClient() tool := responses.ToolParamOfWebSearch(responses.WebSearchToolTypeWebSearch) tool.OfWebSearch.SetExtraFields(map[string]any{"return_token_budget": "unlimited"}) input := strings.Join([]string{ "Research the economic impact of semaglutide on global healthcare systems.", "", "Do:", "- Include specific figures, trends, statistics, and measurable outcomes.", "- Prioritize reliable, up-to-date sources: peer-reviewed research, health organizations, regulatory agencies, or pharmaceutical earnings reports.", "- Include inline citations and return all source metadata.", "", "Be analytical, avoid generalities, and ensure that each section supports data-backed reasoning that could inform healthcare policy or financial modeling.", }, "\n") response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{ Model: "gpt-6-astra", Reasoning: shared.ReasoningParam{Effort: shared.ReasoningEffortXhigh}, Tools: []responses.ToolUnionParam{tool}, Input: responses.ResponseNewParamsInputUnion{OfString: openai.String(input)}, }) if err != nil { panic(err) } fmt.Println(response.OutputText())}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16require "openai"client = OpenAI::Client.newresponse = client.responses.create( model: "gpt-6-astra", input: "Research the economic impact of semaglutide on global healthcare systems. Include current figures and citations.", reasoning: { effort: :xhigh }, tools: [ { type: :web_search, return_token_budget: :unlimited } ])puts(response.output_text)
1
2
3
4
5
6
7
8
9
10
11
12
13
14curl"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." }'
Filtragem por domínio
A filtragem por domínio permite restringir os resultados da pesquisa na Web a um conjunto específico de domínios. Com o parâmetro filters, você pode configurar até 100 domínios em allowed_domains ou até 100 em blocked_domains. Ao informar os domínios, omita o prefixo HTTP ou HTTPS. Por exemplo, use openai.com em vez de https://openai.com/. A pesquisa também inclui os subdomínios. A filtragem por domínio está disponível somente na API Responses com a ferramenta web_search.
Fontes
Para ver todas as URLs recuperadas durante uma pesquisa na Web, use o campo sources. As citações no texto mostram apenas as referências mais relevantes. Já o campo sources retorna a lista completa de URLs que o modelo consultou para elaborar a resposta.
O número de fontes costuma ser maior que o de citações. Os feeds de terceiros com dados em tempo real também aparecem nessa lista, identificados como oai-sports, oai-weather ou oai-finance. O campo sources está disponível nas ferramentas web_search e web_search_preview.
Listar fontes
curl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28import OpenAI from "openai";const client = new OpenAI();const response = await client.responses.create({ 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.",});console.log(response.output_text);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32from openai import OpenAIclient = OpenAI()response = client.responses.create( 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.",)print(response.output_text)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30package mainimport ( "context" "fmt" "github.com/openai/openai-go/v3" "github.com/openai/openai-go/v3/responses" "github.com/openai/openai-go/v3/shared")func main() { client := openai.NewClient() tool := responses.ToolParamOfWebSearch(responses.WebSearchToolTypeWebSearch) tool.OfWebSearch.Filters = responses.WebSearchToolFiltersParam{ AllowedDomains: []string{"pubmed.ncbi.nlm.nih.gov", "clinicaltrials.gov", "www.who.int", "www.cdc.gov", "www.fda.gov"}, } tool.OfWebSearch.Filters.SetExtraFields(map[string]any{"blocked_domains": []string{"reddit.com", "quora.com", "wikipedia.org"}}) response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{ Model: "gpt-6-astra", Reasoning: shared.ReasoningParam{Effort: shared.ReasoningEffortLow}, Tools: []responses.ToolUnionParam{tool}, Include: []responses.ResponseIncludable{responses.ResponseIncludableWebSearchCallActionSources}, Input: responses.ResponseNewParamsInputUnion{OfString: openai.String("Please perform a web search on how semaglutide is used in the treatment of diabetes.")}, }) if err != nil { panic(err) } fmt.Println(response.OutputText())}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29curl"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." }'
Resultados da pesquisa de imagens
A pesquisa na Web pode retornar imagens junto com os resultados de texto habituais. Use a pesquisa de imagens quando seu aplicativo precisar de imagens atuais ou provenientes da Web, como fotos de produtos, pontos turísticos, lugares ou eventos, ou outras referências visuais.
Para usar a pesquisa de imagens, configure search_content_types para incluir image. Adicione text se também quiser resultados de texto que ajudem o modelo a resumir, classificar ou explicar as imagens encontradas.
Use image_settings para configurar as opções específicas de imagens.
max_results permite solicitar um número positivo de resultados de imagens.
caption permite solicitar descrições breves das imagens, quando disponíveis.
Para examinar os resultados brutos de imagens, inclua web_search_call.results na requisição e leia web_search_call.results[] na resposta. A ferramenta retorna os resultados de imagens separadamente da mensagem do assistente. Quando seu aplicativo precisar das URLs ou dos metadados, extraia esses dados diretamente do item web_search_call.
Pesquisar imagens
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import OpenAI from"openai";constclient=newOpenAI();constresponse=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);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22from openai import OpenAIclient = OpenAI()response = 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.",)print(response.output)
Para refinar os resultados da pesquisa por localização geográfica, você pode informar a localização aproximada do usuário usando um ou mais destes dados: país, cidade, região e fuso horário.
Os campos city e region aceitam strings de texto livre, como Minneapolis e Minnesota, respectivamente.
Na API Responses, você pode controlar se a ferramenta de pesquisa na Web busca conteúdo em tempo real ou usa apenas resultados em cache ou já indexados.
Defina external_web_access: false na ferramenta web_search para executá-la no modo offline, usando apenas o cache.
Se você omitir o parâmetro, o valor padrão será true (acesso em tempo real).
As versões preliminares (web_search_preview) ignoram esse parâmetro e funcionam como se external_web_access estivesse definido como true.
Controlar o acesso à internet em tempo real
curl
1
2
3
4
5
6
7
8
9
10
11curl"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." }'
1
2
3
4
5
6
7
8
9
10
11import OpenAI from "openai";const client = new OpenAI();const response = await client.responses.create({ 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.",});console.log(response.output_text);
1
2
3
4
5
6
7
8
9
10
11from openai import OpenAIclient = OpenAI()resp = client.responses.create( 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.",)print(resp.output_text)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24package mainimport ( "context" "fmt" "github.com/openai/openai-go/v3" "github.com/openai/openai-go/v3/responses")func main() { client := openai.NewClient() tool := responses.ToolParamOfWebSearch(responses.WebSearchToolTypeWebSearch) tool.OfWebSearch.SetExtraFields(map[string]any{"external_web_access": false}) response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{ Model: "gpt-6-astra", Tools: []responses.ToolUnionParam{tool}, Input: responses.ResponseNewParamsInputUnion{OfString: openai.String("Find when the Eiffel Tower opened to the public and cite the source.")}, }) if err != nil { panic(err) } fmt.Println(response.OutputText())}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.core.JsonValue;import com.openai.models.responses.ResponseCreateParams;import com.openai.models.responses.WebSearchTool;ResponseCreateParams params = ResponseCreateParams.builder() .model("gpt-6-astra") .input("Find when the Eiffel Tower opened to the public and cite the source.") .addTool( WebSearchTool.builder() .type(WebSearchTool.Type.WEB_SEARCH) .putAdditionalProperty("external_web_access", JsonValue.from(false)) .build()) .build();client.responses().create(params).output().stream() .flatMap(item -> item.message().stream()) .flatMap(message -> message.content().stream()) .flatMap(content -> content.outputText().stream()) .forEach(text -> System.out.println(text.text()));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16require "openai"client = OpenAI::Client.newresponse = client.responses.create( model: "gpt-6-astra", input: "Find when the Eiffel Tower opened to the public and cite the source.", tools: [ { type: :web_search, external_web_access: false } ])puts(response.output_text)
Limitações
API chat completions
A API chat completions oferece suporte à pesquisa na Web somente com modelos especializados em pesquisa. Esses modelos não oferecem os recursos da ferramenta web_search da API Responses, como filtros de domínio, listas completas de fontes, controle de acesso em tempo real e controle do limite de tokens retornados.
Modelo
Janela de contexto
Limitação
gpt-5-search-api
200 mil
Usa a rota dos modelos de pesquisa de Chat Completions
API Responses
Use a ferramenta hospedada web_search. A API Responses ainda aceita web_search_preview para integrações legadas, mas use web_search para novas integrações.
A janela de contexto da pesquisa na Web tem um limite de 128 mil tokens, mesmo quando a janela de contexto do modelo é maior. Para verificar o limite de contexto de gpt-6-astra ou de outro modelo compatível, consulte a página do modelo.
gpt-5.4 pode produzir resultados de qualidade inferior quando o esforço de raciocínio está definido como none.
A pesquisa na Web da API Responses segue os limites de taxa por nível do modelo utilizado.
A ferramenta web_search_preview não oferece suporte a filters nem a return_token_budget e ignora external_web_access.
Com tool_choice: "auto", a pesquisa é opcional. Quando a pesquisa for obrigatória, use tool_choice: "required" ou selecione explicitamente uma ferramenta de pesquisa na Web.