Ermögliche Modellen, vor dem Generieren einer Antwort im Web nach aktuellen Informationen zu suchen.
Responses
Mit der Websuche können Modelle auf aktuelle Informationen aus dem Internet zugreifen und Antworten mit Quellenangaben liefern. Verwende dazu das Websuchtool in der Responses API oder, in bestimmten Fällen, Chat Completions.
Mit OpenAI-Modellen stehen drei grundlegende Arten der Websuche zur Verfügung:
Websuche ohne Reasoning-Aufwand: Das Modell ohne Reasoning-Funktion sendet die Anfrage an das Websuchtool, das anhand der besten Suchergebnisse eine Antwort zurückgibt. Es findet keine interne Planung statt, und das Modell gibt die Antworten des Suchtools einfach weiter. Diese Methode ist schnell und eignet sich ideal zum raschen Nachschlagen.
Bei der agentischen Suche mit Reasoning-Modellen steuert das Modell den Suchprozess aktiv. Es kann im Rahmen seiner Gedankenkette das Web durchsuchen, Ergebnisse analysieren und entscheiden, ob es weitersuchen soll. Dank dieser Flexibilität eignet sich die agentische Suche gut für komplexe Arbeitsabläufe, dauert allerdings auch länger als einfaches Nachschlagen. Bei Modellen wie gpt-5.5 kannst du beispielsweise den Reasoning-Aufwand anpassen und damit sowohl die Tiefe als auch die Latenz der Suche beeinflussen.
Deep Research ist eine spezialisierte, agentengesteuerte Methode für eingehende, umfangreiche Recherchen mit Reasoning-Modellen. Das Modell durchsucht das Web im Rahmen seiner Gedankenkette und greift dabei oft auf Hunderte von Quellen zurück. Deep Research kann mehrere Minuten dauern und lässt sich am besten im Hintergrundmodus nutzen. Verwende gpt-5.5 mit einem Reasoning-Aufwand von high oder xhigh.
Integration auswählen
Anwendungsfall
Empfohlenes Vorgehen
Hinweise
Neue Integration der Websuche
Responses API mit web_search und gpt-5.5
Unterstützt Steuerungsmöglichkeiten für die gehostete Websuche wie Filter, Quellen, die Steuerung des Live-Zugriffs und längere Recherchen
Bestehende Suchintegration mit Chat Completions
Chat Completions mit gpt-5-search-api
Verwende dies nur, wenn du eine bestehende Chat Completions-Integration beibehalten musst
Mehrstufige Recherche oder zeitaufwendige Berichterstellung
gpt-5.5 mit einem Reasoning-Aufwand von high oder xhigh
Verwende den Hintergrundmodus für Berichte, deren Erstellung mehrere Minuten dauern kann
In der Responses API kannst du die Websuche aktivieren, indem du sie im Array tools einer API-Anfrage zur Generierung von Inhalten konfigurierst. Wie bei jedem anderen Tool kann das Modell anhand des eingegebenen Prompts entscheiden, ob es das Web durchsucht.
Verwende für neue Integrationen mit der Responses API { "type": "web_search" }. Das ältere Tool web_search_preview bleibt für bestehende Integrationen verfügbar, unterstützt jedoch keine neueren Steuerungsmöglichkeiten wie filters, external_web_access und return_token_budget.
Beispiel für das Websuchtool
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
Ausgabe und Quellenangaben
Modellantworten, die das Websuchtool verwenden, bestehen aus zwei Teilen:
Ein Ausgabeelement web_search_call mit der ID des Suchaufrufs und der ausgeführten Aktion in web_search_call.action. Die Aktion ist eine der folgenden:
search steht für eine Websuche. Die Aktion enthält in der Regel, aber nicht immer, die verwendeten Suchanfragen in queries. Für Suchaktionen fallen Kosten für einen Tool-Aufruf an (siehe Preise).
open_page steht für das Öffnen einer Seite. Wird von Reasoning-Modellen unterstützt.
find_in_page steht für die Suche innerhalb einer Seite. Wird von Reasoning-Modellen unterstützt.
Ein Ausgabeelement message mit folgendem Inhalt:
Das Textergebnis in message.content[0].text
Annotationen in message.content[0].annotations für die zitierten URLs
Standardmäßig enthält die Modellantwort Quellenangaben direkt im Text für URLs aus den Websuchergebnissen. Zusätzlich enthält das Annotationsobjekt url_citation die URL, den Titel und die Position der zitierten Quelle.
Wenn du Nutzenden Websuchergebnisse oder darin enthaltene Informationen anzeigst, müssen die Quellenangaben direkt im Text deiner Benutzeroberfläche deutlich sichtbar und anklickbar sein.
Über die Chat Completions API kannst du direkt auf die durch Fine-Tuning angepassten Modelle und das Tool zugreifen, die ChatGPT Suche verwendet.
Bei Chat Completions ruft das Modell immer Informationen aus dem Web ab, bevor es deine Anfrage beantwortet. Wenn das Modell selbst entscheiden soll, ob es sucht, wechsle zur Responses API mit dem Tool web_search.
Verwende derzeit dieses Modell für die Websuche in Chat Completions:
gpt-5-search-api
Beispiel für Websuchparameter
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?" }] }'
Ausgabe und Quellenangaben
Das API-Antwortelement im Array choices enthält:
message.content mit dem Textergebnis des Modells einschließlich aller Quellenangaben direkt im Text
annotations mit einer Liste der zitierten URLs
Standardmäßig enthält die Modellantwort Quellenangaben direkt im Text für URLs aus den Websuchergebnissen. Zusätzlich enthält das Annotationsobjekt url_citation die URL und den Titel der zitierten Quelle sowie die Zeichenindizes für Anfang und Ende der Stellen in der Modellantwort, an denen diese Quellen verwendet wurden.
Wenn du Nutzenden Websuchergebnisse oder darin enthaltene Informationen anzeigst, müssen die Quellenangaben direkt im Text deiner Benutzeroberfläche deutlich sichtbar und anklickbar sein.
web_search unterstützt neuere Steuerungsmöglichkeiten wie filters, external_web_access und return_token_budget
gpt-4o-search-preview oder gpt-4o-mini-search-preview
Wechsle zu web_search in Responses oder verwende gpt-5-search-api, wenn du bei Chat Completions bleiben musst
Die Preview-Suchmodelle sind veraltet und werden am 23.07.2026 abgeschaltet
Suchintegrationen mit Chat Completions
Verwende gpt-5-search-api oder wechsle zu web_search in Responses, um mehr Steuerungsmöglichkeiten für das Tool und eine optionale Suche zu nutzen
Suchmodelle in Chat Completions suchen immer, bevor sie antworten; in Responses ist die Suche ein Tool
Größe des Suchkontexts
search_context_size steuert, wie viel Kontext aus Websuchergebnissen dem Modell zur Verfügung steht, bevor es eine Antwort generiert. Verwende low zum einfachen Nachschlagen, medium als ausgewogene Standardeinstellung und high, wenn die Antwort möglicherweise mehr Details aus den Suchergebnissen erfordert. Diese Einstellung legt keine genaue Token-Anzahl fest und garantiert keine bestimmte Anzahl von Quellen oder Quellenangaben.
Größe des Suchkontexts festlegen
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 steuert, wie viele Inhalte aus Websuchergebnissen das Tool während eines Suchlaufs der Responses API mit Reasoning-Modellen ab GPT-5 zurückgeben kann. Behalte für die meisten Anfragen die Standardeinstellung bei. Verwende unlimited nur für aufwendige Recherchen oder Evaluierungsläufe, die viele Seiten prüfen müssen und andernfalls möglicherweise an der standardmäßigen Obergrenze für zurückgegebene Token enden würden.
Verwende unlimited gezielt, da dies die Latenz und die Kosten erhöhen kann. Nutze für lang andauernde Aufgaben mit mehreren Suchvorgängen den Hintergrundmodus (background: true), damit die Anfrage asynchron weiterlaufen kann und du die endgültige Antwort später abrufen kannst.
Wert
Verhalten
default
Verwendet das standardmäßige Budget für zurückgegebene Token aus Websuchergebnissen. Das Verhalten ist dasselbe, wie wenn du return_token_budget weglässt.
unlimited
Hebt das standardmäßige Budget für zurückgegebene Token für den Websuchlauf auf.
Dieser Parameter gilt nur für das gehostete Tool web_search der Responses API bei der Websuche mit Reasoning-Modellen ab GPT-5. Er ändert das Kontextfenster der Suche nicht und gilt weder für die Websuche ohne Reasoning-Modelle noch für ältere Search API-Integrationen, die Websuche in Containern, Suchmodelle für Chat Completions oder web_search_preview. Als Werte werden nur default und unlimited unterstützt; null, Zahlen und andere Zeichenfolgen werden abgelehnt.
Längere Websuchen durchführen
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." }'
Nach Domains filtern
Mit Domainfiltern kannst du die Ergebnisse der Websuche auf bestimmte Domains beschränken. Über den Parameter filters kannst du bis zu 100 Domains unter allowed_domains oder bis zu 100 Domains unter blocked_domains konfigurieren. Gib Domains ohne HTTP- oder HTTPS-Präfix an. Verwende beispielsweise openai.com statt https://openai.com/. Dabei werden auch Subdomains in die Suche einbezogen. Beachte, dass Domainfilter nur in der Responses API mit dem Tool web_search verfügbar sind.
Quellen
Verwende das Feld sources, um alle während einer Websuche abgerufenen URLs anzuzeigen. Quellenverweise im Text zeigen nur die relevantesten Belege. Das Feld sources liefert dagegen die vollständige Liste der URLs, die das Modell beim Erstellen seiner Antwort herangezogen hat.
Die Anzahl der Quellen ist häufig größer als die Anzahl der Quellenverweise. Hier werden auch Echtzeit-Feeds von Drittanbietern angezeigt und als oai-sports, oai-weather oder oai-finance gekennzeichnet. Das Feld sources ist sowohl mit dem Tool web_search als auch mit dem Tool web_search_preview verfügbar.
Quellen auflisten
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." }'
Ergebnisse der Bildersuche
Die Websuche kann neben regulären Textergebnissen auch Bildergebnisse zurückgeben. Verwende die Bildersuche, wenn deine Anwendung aktuelle Bilder oder Bildmaterial aus dem Web benötigt, etwa Produktfotos, Bilder von Sehenswürdigkeiten, Orten oder Veranstaltungen oder visuelle Referenzen.
Um die Bildersuche zu verwenden, konfiguriere search_content_types so, dass image enthalten ist. Füge text hinzu, wenn du auch ergänzende Textergebnisse möchtest, die dem Modell helfen, die abgerufenen Bilder zusammenzufassen, zu bewerten oder zu erläutern.
Verwende image_settings, um das bildspezifische Verhalten zu steuern:
max_results: Gib eine positive Zahl für die Anzahl der angeforderten Bildergebnisse an.
caption: Fordere kurze Bildbeschreibungen an, sofern verfügbar.
Um die Rohdaten der Bildergebnisse zu prüfen, nimm web_search_call.results in die Anfrage auf und lies web_search_call.results[] aus der Antwort aus. Bildergebnisse werden getrennt von der Assistentennachricht zurückgegeben. Werte daher das Element web_search_call direkt aus, wenn deine Anwendung die URLs oder Metadaten benötigt.
Nach Bildern suchen
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)
Um Suchergebnisse geografisch einzugrenzen, kannst du den ungefähren Standort der nutzenden Person anhand von Land, Stadt, Region und/oder Zeitzone angeben.
Die Felder city und region enthalten Freitext, beispielsweise Minneapolis für die Stadt und Minnesota für die Region.
Das Feld country enthält einen aus zwei Buchstaben bestehenden ISO-Ländercode, etwa US.
Das Feld timezone enthält eine IANA-Zeitzone wie America/Chicago.
Beachte, dass Deep Research-Modelle bei der Websuche keine Standortangaben zur nutzenden Person unterstützen.
Steuere, ob das Websuchtool in der Responses API Inhalte live abruft oder nur zwischengespeicherte bzw. indexierte Ergebnisse verwendet.
Lege beim Tool web_search die Einstellung external_web_access: false fest, um es offline und ausschließlich mit zwischengespeicherten Ergebnissen auszuführen.
Wenn du keinen Wert festlegst, gilt standardmäßig true (Live-Zugriff).
Preview-Varianten (web_search_preview) ignorieren diesen Parameter und verhalten sich so, als wäre external_web_access auf true gesetzt.
Live-Internetzugang steuern
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)
Einschränkungen
Chat Completions API
Die Chat Completions API unterstützt für die Websuche nur spezialisierte Suchmodelle. Diese Modelle unterstützen keine Funktionen des Tools web_search der Responses API wie Domainfilter, vollständige Quellenlisten, die Steuerung des Live-Zugriffs oder des Budgets für zurückgegebene Token.
Modell
Kontextfenster
Einschränkung
gpt-5-search-api
200.000
Verwendet die Suchmodell-Integration von Chat Completions
Verwende das gehostete Tool web_search. Die Responses API akzeptiert für bestehende Integrationen weiterhin web_search_preview. Verwende für neue Integrationen jedoch web_search.
Verwende gpt-5.5, wenn du ein größeres Kontextfenster für das Modell benötigst. Das Kontextfenster der Websuche bleibt bei 128.000.
Bei der Websuche über die Responses API ist das Suchkontextfenster auf 128.000 begrenzt, auch wenn das Kontextfenster des Modells größer ist.
Die Websuche unterstützt gpt-5 nicht, wenn der Reasoning-Aufwand auf minimal eingestellt ist.
gpt-5.4 kann Ergebnisse von geringerer Qualität liefern, wenn der Reasoning-Aufwand auf none eingestellt ist.
Für die Websuche über die Responses API gelten die gestaffelten Ratenlimits des zugrunde liegenden Modells.
web_search_preview unterstützt weder filters noch return_token_budget und ignoriert external_web_access.
Mit tool_choice: "auto" ist die Suche optional. Verwende tool_choice: "required" oder wähle gezielt ein Websuchtool aus, wenn die Suche ausgeführt werden muss.