Веб-поиск 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[].annotationsurl_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). Один вопрос может вызвать несколько поисков.

Function Calling RAG / Embeddings