Permita que os modelos pesquisem na Web as informações mais recentes antes de gerar uma resposta.
Responses
A pesquisa na Web permite que os modelos acessem informações atualizadas da internet e forneçam respostas com citações das fontes. Para habilitar esse recurso, use a ferramenta de pesquisa na Web na Responses API ou, em alguns casos, em Chat Completions.
Há três tipos principais de pesquisa na Web disponíveis com os modelos da OpenAI:
Pesquisa na Web sem raciocínio: o modelo sem raciocínio envia a consulta do usuário à ferramenta de pesquisa na Web, que retorna a resposta com base nos principais resultados. Não há planejamento interno, e o modelo simplesmente repassa as respostas da ferramenta de pesquisa. Esse método é rápido e ideal para consultas pontuais.
A pesquisa agêntica com modelos de raciocínio é uma abordagem em que o modelo gerencia ativamente o processo de pesquisa. Ele pode pesquisar na Web como parte de sua cadeia de pensamento, analisar resultados e decidir se deve continuar pesquisando. Essa flexibilidade torna a pesquisa agêntica adequada para fluxos de trabalho complexos, mas também faz com que as pesquisas demorem mais do que consultas pontuais. Por exemplo, você pode ajustar os níveis de raciocínio em modelos como gpt-5.5 para alterar tanto a profundidade quanto a latência da pesquisa.
A pesquisa aprofundada é um método especializado, conduzido por agentes, para investigações extensas e detalhadas realizadas por modelos de raciocínio. O modelo pesquisa na Web como parte de sua cadeia de pensamento, muitas vezes consultando centenas de fontes. A pesquisa aprofundada pode levar vários minutos e funciona melhor no modo em segundo plano. Use gpt-5.5 com o raciocínio definido como high ou xhigh.
Escolha uma integração
Caso de uso
Caminho recomendado
Observações
Nova integração de pesquisa na Web
Responses API com web_search e gpt-5.5
Oferece suporte a controles da pesquisa na Web hospedada, como filtros, fontes, controle de acesso em tempo real e pesquisas mais longas
Integração existente de pesquisa com Chat Completions
Chat Completions com gpt-5-search-api
Use essa opção apenas quando precisar manter uma integração com Chat Completions
Pesquisa em várias etapas ou geração de relatórios de longa duração
gpt-5.5 com raciocínio definido como high ou xhigh
Use o modo em segundo plano para relatórios que podem levar vários minutos
Com a Responses API, você pode habilitar a pesquisa na Web configurando-a no array tools de uma requisição à API para gerar conteúdo. Como acontece com qualquer outra ferramenta, o modelo pode escolher pesquisar na Web ou não com base no conteúdo do prompt de entrada.
Para novas integrações com a Responses API, use { "type": "web_search" }. A ferramenta anterior, web_search_preview, continua disponível para integrações legadas, mas não oferece suporte a controles mais recentes, como filters, external_web_access e return_token_budget.
Exemplo 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
As respostas do modelo que usam a ferramenta de pesquisa na Web incluirão duas partes:
Um item de saída web_search_call com o ID da chamada de pesquisa e a ação realizada em web_search_call.action. A ação é uma das seguintes:
search, que representa uma pesquisa na Web. Geralmente, mas nem sempre, inclui as consultas realizadas em queries. As ações de pesquisa geram um custo de chamada de ferramenta (consulte os preços).
open_page, que representa a abertura de uma página. Disponível em modelos de raciocínio.
find_in_page, que representa uma pesquisa dentro de uma página. Disponível em modelos de raciocínio.
Um item de saída message contendo:
O resultado em texto em message.content[0].text
Anotações em message.content[0].annotations para as URLs citadas
Por padrão, a resposta do modelo incluirá citações no corpo do texto para URLs encontradas nos resultados da pesquisa na Web. Além disso, o objeto de anotação url_citation conterá a URL, o título e a localização da fonte citada.
Ao exibir resultados da Web ou informações contidas nesses resultados aos usuários
finais, as citações no corpo do texto devem estar claramente visíveis e ser clicáveis na sua
interface de usuário.
Ao usar Chat Completions, o modelo sempre busca informações na Web antes de responder à sua consulta. Para permitir que o modelo decida se deve pesquisar, mude para a Responses API com a ferramenta web_search.
Atualmente, use este modelo para pesquisa na Web em Chat Completions:
gpt-5-search-api
Exemplo 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 incluirá:
message.content com o resultado em texto do modelo, incluindo eventuais citações no corpo do texto
annotations com uma lista de URLs citadas
Por padrão, a resposta do modelo incluirá citações no corpo do texto para URLs encontradas nos resultados da pesquisa na Web. Além disso, o objeto de anotação url_citation conterá a URL e o título da fonte citada, bem como os índices dos caracteres inicial e final do trecho da resposta do modelo em que essas fontes foram usadas.
Ao exibir resultados da Web ou informações contidas nesses resultados aos usuários
finais, as citações no corpo do texto devem estar claramente visíveis e ser clicáveis na sua
interface de usuário.
web_search oferece suporte a controles mais recentes, como filters, external_web_access e return_token_budget
gpt-4o-search-preview ou gpt-4o-mini-search-preview
Migre para web_search em Responses ou use gpt-5-search-api se precisar continuar com Chat Completions
Os modelos de pesquisa em prévia estão descontinuados, com desligamento em 2026-07-23
Integrações de pesquisa com Chat Completions
Use gpt-5-search-api ou migre para web_search em Responses para ter mais controles da ferramenta e pesquisa opcional
Os modelos de pesquisa de Chat Completions sempre pesquisam antes de responder; a pesquisa em Responses é uma ferramenta
Tamanho do contexto de pesquisa
search_context_size controla quanto contexto dos resultados da pesquisa na Web é disponibilizado ao modelo antes de ele gerar uma resposta. Use low para consultas simples, medium como padrão equilibrado e high quando a resposta puder exigir mais detalhes dos resultados da pesquisa. Essa configuração não define uma quantidade exata de tokens nem garante um número específico de fontes ou citações.
Definir o tamanho do contexto de 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 de pesquisa na Web que a ferramenta pode retornar durante uma pesquisa na Responses API com modelos de raciocínio GPT-5+. Mantenha o valor padrão para a maioria das solicitações. Defina como unlimited apenas para pesquisas ou avaliações que exijam maior esforço, precisem examinar muitas páginas e que, sem essa configuração, possam ser interrompidas pelo limite padrão de tokens retornados.
Use unlimited de forma seletiva, pois isso pode aumentar a latência e o custo. Para tarefas de longa duração com várias pesquisas, use o modo em segundo plano (background: true) para que a solicitação continue sendo executada de forma assíncrona e você possa obter a resposta final depois.
Valor
Comportamento
default
Usa o limite padrão de tokens retornados para resultados de pesquisa na Web. Esse é o mesmo comportamento de omitir return_token_budget.
unlimited
Remove o limite padrão de tokens retornados durante a pesquisa na Web.
Esse parâmetro se aplica apenas à ferramenta hospedada web_search da Responses API em pesquisas na Web com raciocínio GPT-5+. Ele não altera a janela de contexto da pesquisa e não se aplica a pesquisas na Web sem raciocínio, integrações legadas da API de pesquisa, pesquisas na Web em contêineres, modelos de pesquisa do Chat Completions ou web_search_preview. Os únicos valores aceitos são default e unlimited; null, números e outras strings são rejeitados.
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
25import OpenAI from "openai";const client = new OpenAI();const response = await 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.", ].join("\n"),});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
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 na pesquisa na Web permite limitar os resultados 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 formatar os domínios, omita o prefixo HTTP ou HTTPS. Por exemplo, use openai.com em vez de https://openai.com/. Essa abordagem também inclui subdomínios na pesquisa. A filtragem por domínio está disponível apenas na Responses API com a ferramenta web_search.
Fontes
Para ver todas as URLs obtidas durante uma pesquisa na Web, use o campo sources. Ao contrário das citações no texto, que mostram apenas as referências mais relevantes, sources retorna a lista completa de URLs que o modelo consultou ao elaborar a resposta.
O número de fontes costuma ser maior que o de citações. Feeds de terceiros em tempo real também aparecem aqui, 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 de pesquisa de imagens
A pesquisa na Web pode retornar imagens junto com os resultados de texto convencionais. Use a pesquisa de imagens quando seu aplicativo precisar de conteúdo visual atual ou fundamentado em fontes da Web, como fotos de produtos, pontos de referência, lugares, eventos ou referências visuais.
Para usar a pesquisa de imagens, configure search_content_types para incluir image. Adicione text quando também quiser resultados de texto complementares que ajudem o modelo a resumir, classificar ou explicar as imagens obtidas.
Use image_settings para controlar o comportamento específico das imagens:
max_results: Solicite um número positivo de resultados de imagens.
caption: Solicite descrições curtas das imagens, quando disponíveis.
Para examinar os resultados brutos de imagens, inclua web_search_call.results na solicitação e leia web_search_call.results[] na resposta. Os resultados de imagens são retornados separadamente da mensagem do assistente, portanto processe diretamente o item web_search_call quando seu aplicativo precisar das URLs ou dos metadados.
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 de pesquisa com base na localização geográfica, você pode especificar a localização aproximada do usuário usando país, cidade, região e/ou fuso horário.
Os campos city e region são strings de texto livre, como Minneapolis e Minnesota, respectivamente.
Controle se a ferramenta de pesquisa na Web busca conteúdo em tempo real ou usa apenas resultados em cache ou indexados na Responses API.
Defina external_web_access: false na ferramenta web_search para executá-la no modo offline, usando apenas o cache.
Se você não definir esse parâmetro, o valor padrão será true (acesso em tempo real).
As variantes em prévia (web_search_preview) ignoram esse parâmetro e se comportam como se external_web_access fosse 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 apenas a modelos especializados de pesquisa para pesquisar na Web. Esses modelos não oferecem suporte aos recursos de web_search da Responses API, 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
200k
Usa a integração com modelos de pesquisa do Chat Completions
Use a ferramenta hospedada web_search. A Responses API ainda aceita web_search_preview para integrações legadas, mas use web_search para novas integrações.
Para uma janela de contexto maior no modelo, use gpt-5.5. A janela de contexto da pesquisa na Web permanece em 128k.
Na pesquisa na Web da Responses API, a janela de contexto da pesquisa é limitada a 128k, mesmo quando a janela de contexto do modelo é maior.
A pesquisa na Web não oferece suporte a gpt-5 com raciocínio minimal.
gpt-5.4 com o esforço de raciocínio definido como none pode produzir resultados de qualidade inferior.
A pesquisa na Web da Responses API usa os limites de taxa por nível do modelo subjacente.
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. Use tool_choice: "required" ou selecione uma ferramenta específica de pesquisa na Web quando a pesquisa precisar ser executada.