Перейти к содержанию
Справочник APIWeb search / Web fetch

Web search / Web fetch

Веб-поиск и загрузка страниц: API, ограничения и стоимость.

Протокол модели

Claude Messages: Web search и Web fetch

В Anthropic Messages обоих режимов доступны ровно две серверные функции. Их исполняет Claude API: вашему коду не нужно возвращать обычный клиентский tool_result.

ФункцияТочный typeОбязательные лимиты
Web searchweb_search_20250305max_uses: 1–5
Web fetchweb_fetch_20250910max_uses: 1–3; max_content_tokens: 1–25 000 (приблизительно, только текст)
json
{
  "model": "claude-opus-5",
  "max_tokens": 2048,
  "tools": [
    {
      "type": "web_search_20250305",
      "name": "web_search",
      "max_uses": 3,
      "allowed_domains": ["docs.python.org"]
    },
    {
      "type": "web_fetch_20250910",
      "name": "web_fetch",
      "max_uses": 2,
      "max_content_tokens": 12000,
      "allowed_domains": ["docs.python.org"],
      "citations": {"enabled": true}
    }

Строгая форма объектов

ОбъектРазрешённые поля
Web searchtype, name, max_uses; опционально allowed_domains или blocked_domains, allowed_callers
Web fetchПоля Web search + обязательный max_content_tokens; опционально citations
  • name должен быть ровно web_search или web_fetch; в одном запросе допускается не больше одного server tool каждого типа. Guard принимает только перечисленные поля: неизвестные поля (включая официальный search-параметр user_location) и другие typed tool variants отклоняются с 400.
  • Если передан allowed_callers, допустимо только точное значение ["direct"].
  • allowed_domains и blocked_domains взаимоисключающие. Каждый список содержит не больше 100 ASCII-доменов: без схемы, IP-адресов, query/fragment, обратного слеша и wildcard в hostname.
  • Для Web search после домена разрешён опциональный path, например docs.python.org/3/*; для Web fetch разрешён только голый домен без path.
  • citations у Web fetch, если передан, имеет точную форму {"enabled": true} или {"enabled": false} без дополнительных полей. Client tools должны не иметь type либо использовать type: "custom".

Ограничения

  • Клиент обязан явно передать указанные лимиты. Превышение или неизвестная версия server tool отклоняются с 400 до запуска функции.
  • Обе функции сначала возвращают server_tool_use, затем соответствующий web_search_tool_result или web_fetch_tool_result; search citations обязательны, fetch citations опциональны.
  • Ошибка самой функции может прийти внутри успешного HTTP 200: ищите tool-result block, у которого content.type заканчивается на _tool_result_error, и читайте content.error_code.
  • Web fetch принимает URL не длиннее 250 символов, который уже встречался в user message, client tool result либо предыдущем search/fetch result. Поддерживаются текст, HTML и PDF; сайты с обязательным JavaScript-rendering не поддерживаются, а неудачные fetch-попытки расходуют max_uses.
  • Успешный Web search без совпадений возвращает content: [] — это не tool error.

Цена

ЧтоСписание
Web search$0.01 за каждый provider-reported billed request + обычные input tokens результата
Неоплачиваемая provider-ошибка Web searchПлата $0.01 не списывается
Web fetchБез отдельной платы; содержимое страницы считается input tokens

Kimi, Composer и Grok

  • Kimi. Поиск и загрузка страницы вынесены в два отдельных endpoint'а, POST /v1/kimi/search и POST /v1/kimi/fetch. Модель они не вызывают: возвращают текст, который вы сами кладёте в следующий чат-запрос. Отдельной платы за них нет, вы платите только за токены этого запроса. Тела запросов, лимиты и коды ошибок на странице Kimi: Chat Completions.
  • Composer и Grok. Встроенный веб-поиск доступен во время ответа. Отдельного публичного вызова для управления этим поиском нет; типизированные Anthropic server tools не принимаются. Клиентские функции подключаются отдельно полем tools и исполняются вашим клиентом.

Поиск model-directed: tools разрешает операцию, но модель решает, нужна ли она. Ниже — три точные формы; похожие объекты другого API не являются заменой.

Chat Completions:

json
{
  "type": "web_search",
  "web_search": {
    "enable": true,
    "search_engine": "search-prime",
    "search_result": true,
    "count": 2
  }
}

Messages:

json
{
  "type": "web_search_20250305",
  "name": "web_search",
  "max_uses": 1
}

Responses:

json
{"type": "web_search_preview"}
APIПодтверждение выполненной операции
ChatНепустой финальный web_search
Messagesserver_tool_use (web_search) с парным web_search_tool_result
ResponsesЗавершённый web_search_call

Guard добавляет $0.10 только за подтверждённый вызов. count: 2 в Chat означает два result rows, а не две платные операции. В Messages max_uses резервирует допустимое число операций, но итог платится по факту.

Gemini ищет в сети поиском Google. Поиск работает на всех трёх API и включается объектом в tools; оплачивается он отдельно, по числу поисковых запросов.

APIОбъект в tools
Messages{"type": "web_search_20250305", "name": "web_search"}
Chat Completions{"type": "web_search"}
Responses{"type": "web_search"}
json
{
  "model": "gemini-4-argon",
  "max_tokens": 4096,
  "messages": [{"role": "user", "content": "What is new today?"}],
  "tools": [{"type": "web_search_20250305", "name": "web_search"}]
}
ЧтоСписание
Поисковый запрос$0.014 за каждый запрос, начиная с первого
Перед ответомудерживается стоимость одного поиска ($0.014); итог считается по фактическому числу поисков
Найденный текстобычные входные токены
  • Инструмент web_search_20250305 присылает и Claude Code: поиск из Claude Code работает.
  • Отдельного инструмента web_fetch у Gemini пока нет: запрос с ним получает понятный отказ, а поиск Google работает.
  • Предел числа поисков max_uses принимается, но не соблюдается: сколько искать, решает Google. Каждый поиск оплачивается по цене, указанной выше.
  • Списки сайтов (allowed_domains, blocked_domains) не поддерживаются: запрос с ними получает понятный отказ.

Muse ищет в сети поиском Meta через Messages и Responses; в Chat Completions поиска нет. Инструмент web_search_20250305, который присылает Claude Code, Guard переводит в поиск Meta.

json
{
  "model": "muse-wonder-1.0",
  "max_tokens": 4096,
  "messages": [{"role": "user", "content": "What is new today?"}],
  "tools": [{"type": "web_search_20250305", "name": "web_search"}]
}
ЧтоСписание
Поисковый запрос$0.0025 за каждый запрос, начиная с первого
Перед ответомудерживается стоимость пяти поисков (5 × $0.0025 = $0.0125); итог считается по фактическому числу поисков
Чтение страницыидёт через родной поиск Meta и само по себе платным поиском не считается
  • Страницы читает сам поиск Meta. Отдельного инструмента web_fetch у Muse нет.
  • Предел числа поисков max_uses, который Claude Code присылает с каждым поиском, принимается, но не соблюдается: сколько искать, решает Meta. Каждый поиск оплачивается по цене, указанной выше. Поиск из Claude Code работает.
  • Списки сайтов (allowed_domains, blocked_domains) Meta не поддерживает: запрос с ними получает понятный отказ.

Разделы

На этой странице