Вот пример того, как предоставить инструменты Claude с помощью Messages API:
Как работает использование инструментов
Claude поддерживает два типа инструментов:-
Клиентские инструменты: Инструменты, которые выполняются в ваших системах, включая:
- Пользовательские инструменты, которые вы создаете и реализуете
- Инструменты, определенные Anthropic, такие как использование компьютера и текстовый редактор, которые требуют клиентской реализации
- Серверные инструменты: Инструменты, которые выполняются на серверах Anthropic, такие как инструменты веб-поиска и веб-извлечения. Эти инструменты должны быть указаны в API-запросе, но не требуют реализации с вашей стороны.
Инструменты, определенные Anthropic, используют версионированные типы (например,
web_search_20250305, text_editor_20250124) для обеспечения совместимости между версиями моделей.Клиентские инструменты
Интегрируйте клиентские инструменты с Claude, выполнив следующие шаги:1
Предоставьте Claude инструменты и пользовательский запрос
- Определите клиентские инструменты с именами, описаниями и схемами входных данных в вашем API-запросе.
- Включите пользовательский запрос, который может потребовать эти инструменты, например, “Какая погода в Сан-Франциско?”
2
Claude решает использовать инструмент
- Claude оценивает, могут ли какие-либо инструменты помочь с запросом пользователя.
- Если да, Claude создает правильно отформатированный запрос на использование инструмента.
- Для клиентских инструментов API-ответ имеет
stop_reasonравныйtool_use, сигнализирующий о намерении Claude.
3
Выполните инструмент и верните результаты
- Извлеките имя инструмента и входные данные из запроса Claude
- Выполните код инструмента в вашей системе
- Верните результаты в новом сообщении
user, содержащем блок контентаtool_result
4
Claude использует результат инструмента для формулирования ответа
- Claude анализирует результаты инструмента для создания своего окончательного ответа на исходный пользовательский запрос.
Серверные инструменты
Серверные инструменты следуют другому рабочему процессу:1
Предоставьте Claude инструменты и пользовательский запрос
- Серверные инструменты, такие как веб-поиск и веб-извлечение, имеют свои собственные параметры.
- Включите пользовательский запрос, который может потребовать эти инструменты, например, “Найдите последние новости об ИИ” или “Проанализируйте содержимое по этому URL.”
2
Claude выполняет серверный инструмент
- Claude оценивает, может ли серверный инструмент помочь с запросом пользователя.
- Если да, Claude выполняет инструмент, и результаты автоматически включаются в ответ Claude.
3
Claude использует результат серверного инструмента для формулирования ответа
- Claude анализирует результаты серверного инструмента для создания своего окончательного ответа на исходный пользовательский запрос.
- Дополнительное взаимодействие с пользователем не требуется для выполнения серверного инструмента.
Примеры использования инструментов
Вот несколько примеров кода, демонстрирующих различные паттерны и техники использования инструментов. Для краткости инструменты являются простыми, а описания инструментов короче, чем было бы идеально для обеспечения наилучшей производительности.Пример одного инструмента
Пример одного инструмента
JSON
get_weather с предоставленными входными данными и вернуть результат в новом сообщении user:JSON
Параллельное использование инструментов
Параллельное использование инструментов
Claude может вызывать несколько инструментов параллельно в рамках одного ответа, что полезно для задач, требующих нескольких независимых операций. При использовании параллельных инструментов все блоки Для исчерпывающих примеров, тестовых скриптов и лучших практик реализации параллельных вызовов инструментов см. раздел параллельного использования инструментов в нашем руководстве по реализации.
tool_use включаются в одно сообщение ассистента, и все соответствующие блоки tool_result должны быть предоставлены в последующем сообщении пользователя.Важно: Результаты инструментов должны быть правильно отформатированы, чтобы избежать ошибок API и обеспечить продолжение использования параллельных инструментов Claude. См. наше руководство по реализации для подробных требований к форматированию и полных примеров кода.
Пример нескольких инструментов
Пример нескольких инструментов
Вы можете предоставить Claude несколько инструментов для выбора в одном запросе. Вот пример с инструментами В этом случае Claude может либо:
get_weather и get_time, а также пользовательским запросом, который запрашивает оба.- Использовать инструменты последовательно (по одному за раз) — сначала вызвать
get_weather, затемget_timeпосле получения результата погоды - Использовать параллельные вызовы инструментов — выводить несколько блоков
tool_useв одном ответе, когда операции независимы
user, с каждым результатом в своем собственном блоке tool_result.Недостающая информация
Недостающая информация
Если запрос пользователя не включает достаточно информации для заполнения всех обязательных параметров инструмента, Claude Opus гораздо более вероятно распознает, что параметр отсутствует, и запросит его. Claude Sonnet может спросить, особенно когда его просят подумать перед выводом запроса инструмента. Но он также может сделать все возможное, чтобы вывести разумное значение.Например, используя инструмент Это поведение не гарантировано, особенно для более неоднозначных запросов и для менее интеллектуальных моделей. Если Claude Opus не имеет достаточного контекста для заполнения обязательных параметров, он гораздо более вероятно ответит уточняющим вопросом вместо вызова инструмента.
get_weather выше, если вы спросите Claude “Какая погода?” без указания местоположения, Claude, особенно Claude Sonnet, может сделать предположение о входных данных инструментов:JSON
Последовательные инструменты
Последовательные инструменты
Некоторые задачи могут потребовать вызова нескольких инструментов последовательно, используя вывод одного инструмента в качестве входа для другого. В таком случае Claude будет вызывать по одному инструменту за раз. Если его попросить вызвать все инструменты сразу, Claude, вероятно, угадает параметры для инструментов дальше по потоку, если они зависят от результатов инструментов дальше вверх по потоку.Вот пример использования инструмента В этом случае Claude сначала вызовет инструмент
Этот пример демонстрирует, как Claude может связывать несколько вызовов инструментов для ответа на вопрос, который требует сбора данных из разных источников. Ключевые шаги:
get_location для получения местоположения пользователя, а затем передачи этого местоположения инструменту get_weather:get_location, чтобы получить местоположение пользователя. После того, как вы вернете местоположение в tool_result, Claude затем вызовет get_weather с этим местоположением, чтобы получить окончательный ответ.Полный разговор может выглядеть так:| Роль | Содержание |
|---|---|
| Пользователь | Какая погода там, где я нахожусь? |
| Ассистент | Сначала я найду ваше текущее местоположение, а затем проверю там погоду. [Использование инструмента для get_location] |
| Пользователь | [Результат инструмента для get_location с соответствующим id и результатом Сан-Франциско, Калифорния] |
| Ассистент | [Использование инструмента для get_weather со следующими входными данными]{ “location”: “San Francisco, CA”, “unit”: “fahrenheit” } |
| Пользователь | [Результат инструмента для get_weather с соответствующим id и результатом “59°F (15°C), в основном облачно”] |
| Ассистент | Основываясь на вашем текущем местоположении в Сан-Франциско, Калифорния, погода сейчас 59°F (15°C) и в основном облачно. Это довольно прохладный и пасмурный день в городе. Возможно, вы захотите взять легкую куртку, если собираетесь выходить на улицу. |
- Claude сначала понимает, что ему нужно местоположение пользователя, чтобы ответить на вопрос о погоде, поэтому он вызывает инструмент
get_location. - Пользователь (т.е. клиентский код) выполняет фактическую функцию
get_locationи возвращает результат “Сан-Франциско, Калифорния” в блокеtool_result. - Теперь, зная местоположение, Claude переходит к вызову инструмента
get_weather, передавая “Сан-Франциско, Калифорния” в качестве параметраlocation(а также угаданный параметрunit, посколькуunitне является обязательным параметром). - Пользователь снова выполняет фактическую функцию
get_weatherс предоставленными аргументами и возвращает данные о погоде в другом блокеtool_result. - Наконец, Claude включает данные о погоде в естественный языковой ответ на исходный вопрос.
Использование инструментов с цепочкой рассуждений
Использование инструментов с цепочкой рассуждений
По умолчанию Claude Opus настроен думать перед ответом на запрос использования инструмента, чтобы лучше определить, необходим ли инструмент, какой инструмент использовать и подходящие параметры. Claude Sonnet и Claude Haiku настроены пытаться использовать инструменты как можно больше и более склонны вызывать ненужный инструмент или выводить недостающие параметры. Чтобы побудить Sonnet или Haiku лучше оценивать пользовательский запрос перед вызовом инструментов, можно использовать следующий запрос:Запрос цепочки рассуждений
Ответьте на запрос пользователя, используя соответствующие инструменты (если они доступны). Перед вызовом инструмента проведите анализ. Во-первых, подумайте, какой из предоставленных инструментов является подходящим инструментом для ответа на запрос пользователя. Во-вторых, пройдите через каждый из обязательных параметров соответствующего инструмента и определите, предоставил ли пользователь напрямую или дал достаточно информации для вывода значения. При принятии решения о том, можно ли вывести параметр, внимательно рассмотрите весь контекст, чтобы увидеть, поддерживает ли он конкретное значение. Если все обязательные параметры присутствуют или могут быть разумно выведены, продолжайте с вызовом инструмента. НО, если одно из значений для обязательного параметра отсутствует, НЕ вызывайте функцию (даже не с заполнителями для недостающих параметров) и вместо этого попросите пользователя предоставить недостающие параметры. НЕ запрашивайте дополнительную информацию о необязательных параметрах, если она не предоставлена. JSON режим
JSON режим
Вы можете использовать инструменты, чтобы заставить Claude производить JSON-вывод, который следует схеме, даже если у вас нет намерения запускать этот вывод через инструмент или функцию.При использовании инструментов таким образом:
- Обычно вы хотите предоставить один инструмент
- Вы должны установить
tool_choice(см. Принуждение к использованию инструмента), чтобы явно указать модели использовать этот инструмент - Помните, что модель передаст
inputинструменту, поэтому имя инструмента и описание должны быть с точки зрения модели.
record_summary для описания изображения в определенном формате.Ценообразование
Tool use requests are priced based on:- The total number of input tokens sent to the model (including in the
toolsparameter) - The number of output tokens generated
- For server-side tools, additional usage-based pricing (e.g., web search charges per search performed)
- The
toolsparameter in API requests (tool names, descriptions, and schemas) tool_usecontent blocks in API requests and responsestool_resultcontent blocks in API requests
tools, we also automatically include a special system prompt for the model which enables tool use. The number of tool use tokens required for each model are listed below (excluding the additional tokens listed above). Note that the table assumes at least 1 tool is provided. If no tools are provided, then a tool choice of none uses 0 additional system prompt tokens.
| Model | Tool choice | Tool use system prompt token count |
|---|---|---|
| Claude Opus 4.1 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Opus 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 3.7 (deprecated) | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 3.5 | auto, noneany, tool | 264 tokens 340 tokens |
| Claude Opus 3 (deprecated) | auto, noneany, tool | 530 tokens 281 tokens |
| Claude Sonnet 3 | auto, noneany, tool | 159 tokens 235 tokens |
| Claude Haiku 3 | auto, noneany, tool | 264 tokens 340 tokens |
usage.
Следующие шаги
Изучите наш репозиторий готовых к реализации примеров кода использования инструментов в наших кулинарных книгах:Инструмент калькулятора
Узнайте, как интегрировать простой инструмент калькулятора с Claude для точных численных вычислений.
Агент службы поддержки клиентов
Создайте отзывчивого бота службы поддержки клиентов, который использует клиентские инструменты для
улучшения поддержки.
Экстрактор JSON
Посмотрите, как Claude и использование инструментов могут извлекать структурированные данные из неструктурированного текста.