Использование инструментов / вызов функций
Использование инструментов позволяет Claude вызывать функции, которые определяете вы — поиск, калькулятор, вашу базу данных, любой API — и использовать результаты. Это фундамент любого агента.
- Как работает четырёхшаговый агентный цикл, от определений инструментов до финального ответа
- Как определить инструмент на Python с именем, описанием и вводом по JSON-Schema
- Почему описания инструментов работают как промпты, формирующие то, когда и как Claude их вызывает
- Как валидировать ввод, возвращать ошибки как результаты и безопасно использовать серверные инструменты
Цикл
Использование инструментов — это диалог, а не одиночный вызов. Вы передаёте Claude меню инструментов; Claude выбирает один и приостанавливается; вы выполняете его и отчитываетесь; Claude встраивает результат в свой ответ — повторяя по мере необходимости.
- Вы включаете список определений инструментов — каждое с именем, описанием и вводом по JSON-Schema.
- Если Claude решает воспользоваться одним из них, он возвращает блок tool_use с аргументами и останавливается.
- Вы сами выполняете инструмент и отправляете вывод обратно как tool_result.
- Claude продолжает, возможно вызывая ещё инструменты, пока не ответит.
Определение инструмента (Python)
Определение инструмента — это просто имя, описание на естественном языке и JSON-Schema для ввода. Передайте его в tools, затем проверяйте stop_reason, чтобы понять, когда Claude хочет действовать.
Инструмент get_weather + первый вызов
tools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
msg = client.messages.create(
model="claude-sonnet-5", max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Rome?"}],
)
# If msg.stop_reason == "tool_use": run the tool, then send a tool_result back.Советы
Мелкие решения о том, как вы определяете и обрабатываете инструменты, сильно влияют на надёжность.
- Описания — это промпты. Ясное
descriptionинструмента и документация параметров сильно улучшают то, когда/как Claude его вызывает. - Валидируйте получаемый ввод перед выполнением — никогда не доверяйте ему вслепую.
- Возвращайте ошибки как результаты. Если инструмент даёт сбой, отправьте
tool_resultс описанием ошибки, чтобы Claude мог восстановиться. - Серверные инструменты. Anthropic также предлагает встроенные инструменты (например, веб-поиск, выполнение кода, использование компьютера) — смотрите актуальный набор в документации.
:::warning Инструменты = действия = риск Инструмент, совершающий реальные действия, наследует модель безопасности. Применяйте минимум привилегий и держите человека в цикле для рискованных вызовов — см. Защита агентов и инструментов. :::
Проверь себя
0/3- Использование инструментов — это цикл: отправьте определения инструментов, Claude возвращает блок tool_use и останавливается, вы выполняете и возвращаете tool_result, Claude продолжает, пока не ответит.
- Определение инструмента — это имя, описание и ввод по JSON-Schema — передайте его в tools и проверяйте stop_reason == tool_use.
- Описания — это промпты; валидируйте ввод перед выполнением; возвращайте сбои как ошибки tool_result, чтобы Claude мог восстановиться.
- Anthropic также предлагает серверные инструменты, и любому инструменту, совершающему реальные действия, нужны минимум привилегий плюс человек в цикле.