Инструмент веб-поиска предоставляет 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 позволяет локализовать результаты поиска в зависимости от местоположения пользователя.

Веб-поиск работает с кэшированием. Чтобы включить кэширование, добавьте хотя бы одну точку останова 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)}")

Потребление токенов тарифицируется как обычно для выбранной модели. Каждый поиск считается отдельно, стоимость фиксированная. Цены здесь.

ProxyAPI Logo

Доступ к последним разработкам мировых лидеров в области AI для вашего проекта или бизнеса в России. Без VPN и блокировок. Оплата в рублях.

Accepted payment methods