Web Search API: Programmatische Websuche
Auf dieser Seite
Lektion aktualisiert am 2. November 2026 basierend auf der OpenAI-Dokumentation: Das Tool Code Interpreter erfordert nun einen
container-Parameter (in allen Beispielen hinzugefügt), Eingabetexte sind vom Typinput_text, und die Websuche verwendet das Toolweb_search(web_search_previewist nun ein veraltetes Tool ohne Bereichsfilter). Generierte Dateien werden mit den Funktionenfichiers_generesundtelechargeraus Lektion 10 abgerufen. Quellen: Code Interpreter · Websuche.
Web Search API: Programmatische Websuche
Das Web Search Tool ermöglicht es dem Modell, Echtzeit-Websuchen direkt über die Responses API durchzuführen. Sie müssen keine externe Such-API mehr integrieren: Das Modell formuliert die Abfrage, führt die Suche aus und synthetisiert die Ergebnisse.
Websuche aktivieren
Die Aktivierung erfolgt mit nur einer Zeile, was einen grundlegenden Wandel markiert: Ihre Anwendung ist nicht mehr durch den Wissensstandsschnitt des Modells begrenzt. Fragen zu Ereignissen von gestern, aktuellen Preisen oder neuen Vorschriften lassen sich beantworten, ohne eine externe Suchmaschine zu integrieren oder dafür zu bezahlen.
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5.6-terra",
input="Was sind die neuesten Ligue 1-Ergebnisse?",
tools=[{"type": "web_search"}]
)
print(response.output_text)
Das Modell entscheidet selbstständig, wann es suchen soll, und dies verdient Aufmerksamkeit: Es sucht nicht systematisch. Bei Fragen, die es innerhalb seines bestehenden Wissens einordnen kann, antwortet es direkt – schneller und kostengünstiger, aber mit dem Risiko, veraltete Informationen mit derselben Sicherheit vorzutragen. Wenn Aktualität kritisch ist, formulieren Sie dies explizit in Ihrem Prompt, statt darauf zu hoffen, dass das Modell dies korrekt errät.
Antwortstruktur
Quellen kommen als Annotationen an, die der Antwort angehängt sind, getrennt vom Text. Dies ermöglicht es Ihnen, diese nach Ihren Wünschen darzustellen, zu überprüfen oder Antworten zu kennzeichnen, die Quellen fehlen, wenn das Thema dies erfordert.
response = client.responses.create(
model="gpt-5.6-terra",
input="Was ist der aktuelle Aktienkurs von LVMH?",
tools=[{"type": "web_search"}]
)
# Synthetisierter Text
print(response.output_text)
# Quellen prüfen
for item in response.output:
if hasattr(item, "content"):
for block in item.content:
if hasattr(block, "annotations"):
for annotation in block.annotations:
if annotation.type == "url_citation":
print(f"Quelle: {annotation.url}")
print(f"Titel: {annotation.title}")
Benutzerkontext für Relevanz
Der Standort beeinflusst die Ergebnisse mehr, als man vielleicht erwartet, und nicht nur bei offensichtlich lokalen Suchen. Fragen zu Steuern, Preisen, Verfügbarkeit oder rechtlichen Verpflichtungen liefern je nach Land unterschiedliche Antworten: Ohne user_location verwendet das Modell einen Standardkontext, der oft US-zentriert ist.
response = client.responses.create(
model="gpt-5.6-terra",
input="Welches japanische Restaurant ist heute Abend geöffnet?",
tools=[{
"type": "web_search",
"user_location": {
"type": "approximate",
"city": "Paris",
"country": "FR"
}
}]
)
Der Parameter user_location akzeptiert verschiedene Ebenen der Präzision:
# Ungefähre Position
"user_location": {
"type": "approximate",
"city": "Lyon",
"region": "Auvergne-Rhone-Alpes",
"country": "FR"
}
Websuche mit benutzerdefinierten Funktionen kombinieren
Die produktivste Kombination folgt immer demselben Muster: Das Web liefert externe Informationen, Ihre Funktionen stellen den internen Kontext bereit, und das Modell verbindet die Punkte. Diese Verbindung ist der Wert – weder die Suche noch Ihre Daten allein beantworten die Frage „beeinflusst uns diese Änderung?”.
tools = [
{"type": "web_search"},
{
"type": "function",
"name": "sauvegarder_veille",
"description": "Speichert ein Überwachungsresultat in der Datenbank",
"parameters": {
"type": "object",
"properties": {
"titre": {"type": "string"},
"resume": {"type": "string"},
"url_source": {"type": "string"},
"categorie": {
"type": "string",
"enum": ["concurrent", "marche", "reglementation", "technologie"]
}
},
"required": ["titre", "resume", "categorie"],
"additionalProperties": False
},
"strict": True
}
]
response = client.responses.create(
model="gpt-5.6-terra",
input="Suchen Sie nach den neuesten Nachrichten zur KI-Regulierung in Europa "
"und speichern Sie wichtige Ergebnisse",
tools=tools
)
Produktionsanwendungen
Automatisierte Wettbewerbsanalyse
def veille_quotidienne(entreprises: list[str]):
"""Startet eine Webüberwachung für jeden Wettbewerber."""
resultats = []
for entreprise in entreprises:
response = client.responses.create(
model="gpt-5.6-terra",
input=f"Welche neuesten Nachrichten gibt es über {entreprise}? "
"Konzentrieren Sie sich auf Produktankündigungen, Finanzierungsrunden "
"und Partnerschaften der letzten 7 Tage.",
tools=[{"type": "web_search"}]
)
resultats.append({
"entreprise": entreprise,
"synthese": response.output_text
})
return resultats
Faktenprüfung
def verifier_affirmation(affirmation: str) -> dict:
"""Überprüft eine Behauptung durch Abgleich mit mehreren Webquellen."""
response = client.responses.create(
model="gpt-5.6-terra",
input=f"Überprüfen Sie diese Behauptung durch Suche nach zuverlässigen Quellen: "
f"'{affirmation}'. Geben Sie an, ob sie wahr, falsch oder unsicher ist, "
f"und nennen Sie die Quellen, die Ihre Schlussfolgerung stützen.",
tools=[{"type": "web_search"}]
)
# Zitate extrahieren
sources = []
for item in response.output:
if hasattr(item, "content"):
for block in item.content:
if hasattr(block, "annotations"):
for ann in block.annotations:
if ann.type == "url_citation":
sources.append(ann.url)
return {
"analyse": response.output_text,
"nombre_sources": len(sources),
"sources": sources
}
Bekannte Einschränkungen
- Das Modell kann für sehr spezialisierte Themen möglicherweise keine relevanten Ergebnisse finden
- Ergebnisse hängen vom Web-Index zum Zeitpunkt der Anfrage ab
- Die Anzahl der Suchen pro Aufruf ist begrenzt: Das Modell optimiert dies durch die Formulierung präziser Abfragen
- Inhalte hinter Paywalls oder Login-Bildschirmen sind nicht zugänglich
Kernaussagen
- Fügen Sie
web_searchin einer Zeile innerhalb vontoolshinzu - Das Modell entscheidet autonom, wann es das Web durchsuchen soll
user_locationverbessert die Relevanz für lokale Ergebnisseurl_citation-Annotationen liefern Quellen- Kombinieren Sie Websuche mit Ihren Funktionen, um Überwachungsprozesse zu automatisieren