Permite que los modelos busquen la información más reciente en la web antes de generar una respuesta.
Responses
La búsqueda web permite que los modelos accedan a información actualizada de internet y proporcionen respuestas con citas de las fuentes. Para habilitarla, usa la herramienta de búsqueda web en la API Responses o, en algunos casos, en Chat Completions.
Hay tres tipos principales de búsqueda web disponibles con los modelos de OpenAI:
Búsqueda web sin razonamiento: el modelo sin razonamiento envía la consulta del usuario a la herramienta de búsqueda web, que devuelve una respuesta basada en los principales resultados. No hay planificación interna y el modelo simplemente transmite las respuestas de la herramienta de búsqueda. Este método es rápido e ideal para consultas puntuales.
La búsqueda con agentes y modelos de razonamiento es un enfoque en el que el modelo gestiona activamente el proceso de búsqueda. Puede realizar búsquedas web como parte de su cadena de pensamiento, analizar los resultados y decidir si sigue buscando. Esta flexibilidad hace que la búsqueda con agentes sea adecuada para flujos de trabajo complejos, pero también implica que las búsquedas tarden más que las consultas puntuales. Por ejemplo, puedes ajustar los niveles de razonamiento en modelos como gpt-5.5 para cambiar tanto la profundidad como la latencia de la búsqueda.
La investigación profunda es un método especializado, dirigido por agentes, que permite a los modelos de razonamiento realizar investigaciones exhaustivas y prolongadas. El modelo realiza búsquedas web como parte de su cadena de pensamiento y suele consultar cientos de fuentes. La investigación profunda puede tardar varios minutos y conviene usarla con el modo en segundo plano. Usa gpt-5.5 con el razonamiento configurado en high o xhigh.
Elige una integración
Caso de uso
Opción recomendada
Notas
Nueva integración de búsqueda web
API Responses con web_search y gpt-5.5
Admite controles de búsqueda web alojada, como filtros, fuentes, control del acceso en tiempo real y ejecuciones de investigación más prolongadas
Integración de búsqueda existente con Chat Completions
Chat Completions con gpt-5-search-api
Usa esta opción solo cuando necesites conservar una integración con Chat Completions
Investigación en varios pasos o generación de informes de larga duración
gpt-5.5 con el razonamiento configurado en high o xhigh
Usa el modo en segundo plano para los informes que puedan tardar varios minutos
Con la API Responses, puedes habilitar la búsqueda web al configurarla en el arreglo tools de una solicitud a la API para generar contenido. Como con cualquier otra herramienta, el modelo puede decidir si busca en la web según el contenido del prompt de entrada.
Para las nuevas integraciones con la API Responses, usa { "type": "web_search" }. La herramienta anterior, web_search_preview, sigue disponible para las integraciones heredadas, pero no admite controles más recientes como filters, external_web_access y return_token_budget.
Ejemplo de la herramienta de búsqueda 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
Salida y citas
Las respuestas del modelo que usen la herramienta de búsqueda web incluirán dos partes:
Un elemento de salida web_search_call con el ID de la llamada de búsqueda y la acción realizada en web_search_call.action. La acción es una de las siguientes:
search, que representa una búsqueda web. Normalmente, aunque no siempre, incluye las consultas de búsqueda realizadas en queries. Las acciones de búsqueda generan un costo por llamada a la herramienta (consulta los precios).
open_page, que representa la apertura de una página. Disponible en los modelos de razonamiento.
find_in_page, que representa una búsqueda dentro de una página. Disponible en los modelos de razonamiento.
Un elemento de salida message que contiene:
El resultado de texto en message.content[0].text
Anotaciones en message.content[0].annotations para las URL citadas
De forma predeterminada, la respuesta del modelo incluirá citas dentro del texto para las URL encontradas en los resultados de búsqueda web. Además, el objeto de anotación url_citation contendrá la URL, el título y la ubicación de la fuente citada.
Al mostrar resultados web o información contenida en ellos a los usuarios finales,
las citas dentro del texto deben ser claramente visibles y se debe poder hacer clic en ellas
en tu interfaz de usuario.
Al usar Chat Completions, el modelo siempre obtiene información de la web antes de responder a tu consulta. Para que el modelo decida si debe buscar, cambia a la API Responses con la herramienta web_search.
Actualmente, usa este modelo para la búsqueda web en Chat Completions:
gpt-5-search-api
Ejemplo del parámetro de búsqueda 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?" }] }'
Salida y citas
El elemento de respuesta de la API en el arreglo choices incluirá:
message.content con el resultado de texto del modelo, incluidas las citas dentro del texto
annotations con una lista de las URL citadas
De forma predeterminada, la respuesta del modelo incluirá citas dentro del texto para las URL encontradas en los resultados de búsqueda web. Además, el objeto de anotación url_citation contendrá la URL y el título de la fuente citada, así como los índices de los caracteres de inicio y fin del fragmento de la respuesta del modelo donde se usaron esas fuentes.
Al mostrar resultados web o información contenida en ellos a los usuarios finales,
las citas dentro del texto deben ser claramente visibles y se debe poder hacer clic en ellas
en tu interfaz de usuario.
web_search admite controles más recientes como filters, external_web_access y return_token_budget
gpt-4o-search-preview o gpt-4o-mini-search-preview
Migra a web_search en Responses o usa gpt-5-search-api si debes seguir usando Chat Completions
Los modelos de búsqueda en versión preliminar están obsoletos y dejan de estar disponibles el 2026-07-23
Integraciones de búsqueda con Chat Completions
Usa gpt-5-search-api o migra a web_search en Responses para tener más controles de la herramienta y búsqueda opcional
Los modelos de búsqueda de Chat Completions siempre buscan antes de responder; la búsqueda en Responses es una herramienta
Tamaño del contexto de búsqueda
search_context_size controla cuánto contexto de los resultados de búsqueda web se pone a disposición del modelo antes de que genere una respuesta. Usa low para consultas sencillas, medium como opción predeterminada equilibrada y high cuando la respuesta pueda requerir más detalles de los resultados de búsqueda. Esta configuración no establece una cantidad exacta de tokens ni garantiza un número específico de fuentes o citas.
Configurar el tamaño del contexto de búsqueda
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 cuánto contenido de los resultados de búsqueda web puede devolver la herramienta durante una búsqueda con la API Responses y modelos de razonamiento GPT-5+. Conserva el valor predeterminado para la mayoría de las solicitudes. Establécelo en unlimited solo para investigaciones o evaluaciones que requieran un esfuerzo elevado, necesiten consultar muchas páginas y, de otro modo, puedan detenerse al alcanzar el límite estándar de tokens devueltos.
Usa unlimited de forma selectiva, ya que puede aumentar la latencia y el costo. Para tareas de larga duración que requieran varias búsquedas, usa el modo en segundo plano (background: true) para que la solicitud pueda seguir ejecutándose de forma asíncrona y puedas recuperar la respuesta final más adelante.
Valor
Comportamiento
default
Usa el presupuesto estándar de tokens devueltos para los resultados de búsqueda web. El comportamiento es el mismo que al omitir return_token_budget.
unlimited
Elimina el presupuesto predeterminado de tokens devueltos para la ejecución de la búsqueda web.
Este parámetro se aplica únicamente a la herramienta alojada web_search de la API Responses para búsquedas web con razonamiento de GPT-5+. No cambia la ventana de contexto de búsqueda ni se aplica a la búsqueda web sin razonamiento, las vías de integración heredadas de Search API, la búsqueda web en contenedores, los modelos de búsqueda de Chat Completions ni web_search_preview. Solo se admiten los valores default y unlimited; se rechazan null, los números y otras cadenas de texto.
Realizar búsquedas web más largas
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." }'
Filtrado por dominio
El filtrado por dominio en la búsqueda web te permite limitar los resultados a un conjunto específico de dominios. Con el parámetro filters, puedes configurar hasta 100 dominios en allowed_domains o hasta 100 en blocked_domains. Al escribir los dominios, omite el prefijo HTTP o HTTPS. Por ejemplo, usa openai.com en lugar de https://openai.com/. Este enfoque también incluye los subdominios en la búsqueda. Ten en cuenta que el filtrado por dominio solo está disponible en la API Responses con la herramienta web_search.
Fuentes
Para ver todas las URL recuperadas durante una búsqueda web, usa el campo sources. A diferencia de las citas en el texto, que muestran solo las referencias más relevantes, sources devuelve la lista completa de URL que el modelo consultó al elaborar su respuesta.
La cantidad de fuentes suele ser mayor que la cantidad de citas. Aquí también aparecen los feeds de terceros en tiempo real, identificados como oai-sports, oai-weather o oai-finance. El campo sources está disponible tanto con la herramienta web_search como con web_search_preview.
Listar fuentes
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 búsqueda de imágenes
La búsqueda web puede devolver resultados de imágenes junto con los resultados de texto habituales. Usa la búsqueda de imágenes cuando tu aplicación necesite imágenes actuales o provenientes de fuentes web, como fotos de productos, sitios emblemáticos, lugares, eventos o referencias visuales.
Para usar la búsqueda de imágenes, configura search_content_types para que incluya image. Agrega text cuando también quieras resultados de texto complementarios que ayuden al modelo a resumir, ordenar o explicar las imágenes recuperadas.
Usa image_settings para controlar el comportamiento específico de las imágenes:
max_results: solicita una cantidad positiva de resultados de imágenes.
caption: solicita descripciones breves de las imágenes cuando estén disponibles.
Para inspeccionar los resultados de imágenes sin procesar, incluye web_search_call.results en la solicitud y lee web_search_call.results[] en la respuesta. Los resultados de imágenes se devuelven por separado del mensaje del asistente, así que procesa directamente el elemento web_search_call cuando tu aplicación necesite las URL o los metadatos.
Buscar imágenes
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 precisar los resultados de búsqueda según la ubicación geográfica, puedes especificar una ubicación aproximada del usuario mediante el país, la ciudad, la región o la zona horaria, o una combinación de estos datos.
Los campos city y region son cadenas de texto libre, como Minneapolis y Minnesota, respectivamente.
Controla si la herramienta de búsqueda web obtiene contenido en tiempo real o usa únicamente resultados almacenados en caché o indexados en la API Responses.
Configura external_web_access: false en la herramienta web_search para que se ejecute en modo sin conexión, usando solo la caché.
Si no lo configuras, el valor predeterminado es true (acceso en tiempo real).
Las variantes preliminares (web_search_preview) ignoran este parámetro y se comportan como si external_web_access fuera true.
Controlar el acceso a Internet en tiempo 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)
Limitaciones
API para completar chats
La API para completar chats solo admite modelos de búsqueda especializados para la búsqueda web. Estos modelos no admiten funciones de web_search de la API Responses, como los filtros por dominio, las listas completas de fuentes, el control del acceso en tiempo real y el control del presupuesto de tokens devueltos.
Modelo
Ventana de contexto
Limitación
gpt-5-search-api
200k
Usa la vía de integración de modelos de búsqueda de Chat Completions
Usa la herramienta alojada web_search. La API Responses aún acepta web_search_preview para integraciones heredadas, pero usa web_search para las nuevas integraciones.
Para contar con una ventana de contexto del modelo más amplia, usa gpt-5.5. La ventana de contexto de la búsqueda web sigue siendo de 128k.
En la búsqueda web de la API Responses, la ventana de contexto de búsqueda está limitada a 128k, incluso cuando la ventana de contexto del modelo es más amplia.
La búsqueda web no admite gpt-5 con razonamiento minimal.
gpt-5.4 con el esfuerzo de razonamiento establecido en none puede producir resultados de menor calidad.
La búsqueda web de la API Responses utiliza los límites de solicitudes por nivel del modelo subyacente.
web_search_preview no admite filters ni return_token_budget, e ignora external_web_access.
Con tool_choice: "auto", la búsqueda es opcional. Usa tool_choice: "required" o selecciona una herramienta de búsqueda web específica cuando la búsqueda deba ejecutarse.