Инструмент веб-поиска предоставляет Claude прямой доступ к контенту в реальном времени, позволяя ему отвечать на вопросы с актуальной информацией, выходящей за рамки его базы знаний. Claude автоматически указывает источники из результатов поиска в своих ответах.
Веб-поиск доступен в следующих моделях:
- Claude 3.7 Sonnet
- Claude 3.5 Sonnet
- Claude 3.5 Haiku
Когда вы добавляете инструмент веб-поиска в свой API-запрос:
- Claude сам решает, когда выполнять поиск, исходя из запроса.
- API выполняет поисковые запросы и предоставляет Claude полученные результаты. Этот процесс может повторяться несколько раз в рамках одного запроса.
- В конце своей сессии Claude возвращает финальный ответ с указанием использованных источников.
curl https://api.proxyapi.ru/anthropic/v1/messages \ --header "x-api-key: <КЛЮЧ>" \ --header "content-type: application/json" \ --data '{ "model": "claude-3-7-sonnet-20250219", "max_tokens": 1024, "messages": [ { "role": "user", "content": "Сколько людей живет в Москве?" } ], "tools": [{ "type": "web_search_20250305", "name": "web_search", "max_uses": 5 }] }'
Инструмент веб-поиска поддерживает следующие параметры:
{ "type": "web_search_20250305", "name": "web_search", // Необязательное поле: максимальное количество поисковых запросов "max_uses": 5, // Необязательное поле: включить результаты только для этих доменов "allowed_domains": ["example.com", "trusteddomain.org"], // Необязательное поле: исключить результаты для этих доменов "blocked_domains": ["untrustedsource.com"], // Необязательное поле: локализованные результаты поиска "user_location": { "type": "approximate", "city": "San Francisco", "region": "California", "country": "US", "timezone": "America/Los_Angeles" } }
Параметр max_uses
ограничивает количество выполняемых поисков. Если Claude попытается выполнить больше поисков, чем разрешено, web_search_tool_result
вернёт ошибку с кодом max_uses_exceeded
.
При использовании фильтров по доменам:
- Не указывайте схему HTTP/HTTPS (используйте
example.com
вместоhttps://example.com
) - Поддомены включаются автоматически (
example.com
охватываетdocs.example.com
) - Поддерживаются подпути (
example.com/blog
) - Вы можете использовать либо
allowed_domains
, либоblocked_domains
, но не оба параметра в одном запросе.
Параметр user_location
позволяет локализовать результаты поиска в зависимости от местоположения пользователя.
type
: Тип местоположения (должен бытьapproximate
)city
: Название городаregion
: Регион или штатcountry
: Странаtimezone
: IANA-идентификатор часового пояса
Веб-поиск работает с кэшированием. Чтобы включить кэширование, добавьте хотя бы одну точку останова cache_control
в ваш запрос. Система автоматически закэширует всё до последнего блока web_search_tool_result
при выполнении инструмента.
Для диалогов с несколькими итерациями установите точку останова cache_control
внутри или после последнего блока web_search_tool_result
, чтобы повторно использовать закэшированный контент.
Например, чтобы использовать кэширование с веб-поиском в диалоге с несколькими итерациями:
import anthropic client = anthropic.Anthropic( api_key="<КЛЮЧ>", base_url="https://api.proxyapi.ru/anthropic", ) # Первый запрос с веб-поиском и точкой останова кэширования messages = [ { "role": "user", "content": "Какая сегодня погода?" } ] response1 = client.messages.create( model="claude-3-7-sonnet-20250219", max_tokens=1024, messages=messages, tools=[{ "type": "web_search_20250305", "name": "web_search", "user_location": { "type": "approximate", "city": "Moscow", "region": "Moscow", "country": "RU", "timezone": "Europe/Moscow" } }] ) # Добавляем ответ Claude в диалог messages.append({ "role": "assistant", "content": response1.content }) # Второй запрос с точкой останова кэширования после результатов поиска messages.append({ "role": "user", "content": "Будет ли дождь на неделе?", "cache_control": {"type": "ephemeral"} # Кэшировать до этой точки }) response2 = client.messages.create( model="claude-3-7-sonnet-20250219", max_tokens=1024, messages=messages, tools=[{ "type": "web_search_20250305", "name": "web_search", "user_location": { "type": "approximate", "city": "Moscow", "region": "Moscow", "country": "RU", "timezone": "Europe/Moscow" } }] ) # Второй ответ будет использовать кэшированные результаты поиска # и все еще сможет выполнять новые поиски, если это необходимо print(f"Cache read tokens: {response2.usage.get('cache_read_input_tokens', 0)}")
Потребление токенов тарифицируется как обычно для выбранной модели. Каждый поиск считается отдельно, стоимость фиксированная. Цены здесь.