Web search и fetch API для нейросетей: архитектура, ошибки интеграции и оплата
По данным Хабра, web search и web fetch для нейросети работают не как единая кнопка «открыть интернет», а как управляемый цикл из поиска, загрузки, очистки и проверки.

Для бизнеса это важный параметр: агент может получать данные из документации, ценовых страниц и отчётов, но каждая лишняя загруженная страница расходует контекстное окно, лимит итераций и бюджет. Хабр также разбирает подключение с оплатой в рублях, а Клерк.ру опубликовал материал о платежах OpenAI, Claude и Gemini и учёте расходов.
Поиск находит, fetch загружает
Начнём с конкретной задачи: агенту нужно найти подходящую страницу документации и проверить нужный параметр, а не выдать пользователю список URL.
Рабочая цепочка выглядит так:
1. Модель получает описание доступного инструмента и формирует структурированный вызов.
2. Web search отправляет запрос и возвращает заголовки, адреса и короткие сниппеты результатов.
3. Агент выбирает наиболее релевантный источник.
4. Web fetch загружает конкретный URL и очищает страницу от HTML, навигации, рекламы и скриптов.
5. Вызывающий код проверяет результат, ограничивает объём и передаёт его модели для следующей итерации.
Сниппет помогает выбрать источник, но для сложного вопроса его часто недостаточно. Поэтому search и fetch обычно работают последовательно: первый этап сужает область поиска, второй извлекает содержимое конкретной страницы.
То же правило работает даже для узкой справочной задачи: для гайда по Ретри Паладину в WoW Forever полезна конкретная страница о талантах, ротациях и выборе расы, поэтому fetch должен адресно открыть её, а не нагружать контекст всем сайтом.
Инфраструктуру можно собрать тремя способами:
1. Серверные инструменты провайдера модели. Поиск и загрузка выполняются внутри запроса, этот вариант проще.
2. Отдельные Search и Fetch API. Код вызывает их самостоятельно, получая больше контроля над содержимым контекста.
3. Собственный метапоисковик и парсер. Такой контур не требует оплаты стороннему API, но заметно увеличивает объём поддержки.
Где агент съедает контекст
По приведённой в материале Хабра оценке Anthropic, страница документации размером 100 КБ может занять около 25 000 токенов. Для обычной страницы размером 10 КБ оценка составляет примерно 2 500 токенов. Пять больших страниц подряд способны быстро заполнить значительную часть контекстного окна и бюджета.
Есть ещё один практический барьер: Cloudflare по умолчанию блокирует ИИ-краулеры и может вернуть код 402 Payment Required. Поэтому неудачный fetch не всегда означает проблему с самим API. Ошибку нужно показать модели, чтобы она смогла изменить запрос или выбрать другой источник.
Типичные ошибки связки выглядят так:
1. Слишком общее описание инструмента заставляет модель искать без ограничений.
2. Отсутствие параметров в JSON Schema приводит к вызовам с пустыми аргументами.
3. В OpenAI-совместимом API аргументы приходят строкой JSON, поэтому их нужно разобрать и проверить самостоятельно.
4. Если модель вернула несколько вызовов, каждому требуется отдельный ответ с совпадающим tool_call_id.
5. Необработанное исключение прерывает цикл вместо того, чтобы дать модели chance выбрать другую стратегию.
6. Без лимита шагов агент может зациклиться на одной ошибке и продолжить расходовать деньги.
Рабочая итерация и контроль расходов
Надёжный контур начинается не с выбора API, а с описания задачи. Параметр description должен объяснять, когда инструмент действительно нужен. Затем код валидирует аргументы, очищает HTML, преобразует содержимое в Markdown и обрезает результат до заданного числа символов или токенов.
Отдельно стоит учитывать число запросов, загруженных страниц и шагов цикла. Эти значения полезно сохранять вместе с моделью, инструментом и аргументами вызова. Тогда расходы можно объяснить, а повторяющийся сбой быстро заметить до масштабирования.
По доступным фрагментам двух публикаций нельзя подтвердить конкретный рублёвый платёжный маршрут или список подходящих сервисов. Хабр заявляет разбор подключения с оплатой в рублях, а Клерк.ру рассматривает оплату OpenAI, Claude и Gemini, но конкретные условия в заголовках не раскрыты. Перед интеграцией нужно проверить актуальную документацию, доступные способы оплаты, тарифы и лимиты, после чего провести короткий тест: один search, один fetch, обработку ошибки 402 и ограничение числа итераций.