Веб-поиск Online Search
По умолчанию модель отвечает по обучающим данным и не ходит в интернет. Чтобы получить актуальную информацию со ссылками на источники, нужно явно подключить инструмент веб-поиска. У каждого провайдера он свой и работает только в нативном/Responses-формате.
/v1/chat/completions объявление поиска чаще всего молча
игнорируется: запрос вернёт 200, но модель ответит по памяти, без захода в сеть.
Никогда не считайте, что «раз ошибки нет — поиск работает». Всегда проверяйте по полям ответа (ниже).
OpenAI — Responses API + web_search
Через Responses API (/v1/responses) с инструментом
web_search. Модели уровня gpt-5.x реально ищут и возвращают ответ с цитированием.
resp = client.responses.create(
model="gpt-5.4",
tools=[{"type": "web_search"}],
input="Что вышло у Anthropic за неделю? Поиск + ссылки на источники.",
)
Как проверить. В resp.output ищите элементы:
web_search_call | один реально выполненный поиск (по числу таких элементов идёт тарификация) |
message | финальный ответ; в content[].annotations — url_citation (title + url) |
Нет ни одного web_search_call — поиск не выполнялся. Один вопрос может вызвать несколько поисков.
Gemini — google_search (grounding)
Нативный generateContent с инструментом google_search — официальный поиск Google.
"tools": [{ "google_search": {} }]
Как проверить. В ответе должно быть поле candidates[0].groundingMetadata:
массив webSearchQueries (поисковые запросы модели) и источники в groundingChunks.
Нет этих полей — поиска не было. Детали — на странице Gemini.
Claude — web_search (server tool)
Нативный /v1/messages с серверным инструментом web_search:
"tools": [{ "type": "web_search_20260209", "name": "web_search" }]
Как проверить. В content появятся блоки server_tool_use и
web_search_tool_result, в usage — счётчик
server_tool_use.web_search_requests. Доп. параметры: max_uses,
allowed_domains / blocked_domains. Детали — на странице
Claude.
Альтернатива: свой поиск через function calling
Если важна полная предсказуемость (production), не зависьте от серверного поиска модели — сделайте собственный инструмент function calling: модель просит «искать», ваш код ходит в выбранный поисковый API, результат возвращается модели. Так вы контролируете источники, лимиты и стоимость. Для ответов по своим документам используйте RAG.
web_search_call / счётчик
web_search_requests). Один вопрос может вызвать несколько поисков.