Принудительное использование инструментов

Тема дорожной карты · Claude от Anthropic

Когда Claude работает с инструментами, он по умолчанию самостоятельно определяет, какие инструменты использовать и когда. Однако, можно переопределить это поведение, задав параметр tool_choice в messages.create. Значение {"type": "auto"} позволяет модели самой выбирать инструменты, {"type": "any"} заставляет модель вызвать ровно один из переданных инструментов, а {"type": "tool", "name": "get_weather"} указывает на конкретный инструмент. Такой подход особенно полезен для извлечения структурированного вывода, где схема инструмента определяет форму JSON, и для state-машин, где следующим должен пойти строго определённый вызов. Для детерминированного выполнения одного потока без параллельного использования инструментов, используйте параметр disable_parallel_tool_use: true.

Как это работает

Принудительное использование инструментов (function calling) позволяет Claude запрашивать выполнение определённых функций от вашего кода. Для этого необходимо определить tools с именем и JSON-схемой аргументов. Когда Claude решает использовать инструмент, он возвращает tool_use-блок, содержащий выбранный инструмент и его аргументы. Ваш код выполняет указанный инструмент, возвращает результат через tool_result, и процесс продолжается до тех пор, пока Claude не вернёт обычное сообщение (ответ). Современный подход к использованию инструментов заключается в том, чтобы представлять их как типизированные функции на вашем backend (например, поиск в базе данных, вызов API, выполнение вычислений).

Когда применять

Инструменты Claude полезны в ситуациях, когда ему необходимы актуальные или проприетарные данные (например, запрос к базе данных, вызов внутреннего API, выполнение вычислений) или когда требуется выполнить определённое действие (например, отправка электронной почты, создание тикета). Лучше определять небольшие и сфокусированные схемы инструментов, чем использовать один мега-инструмент. Всегда валидируйте аргументы перед выполнением инструмента, поскольку Claude может галлюцинировать параметры. Логируйте каждый вызов инструмента для последующего аудита.

Типичные ошибки

Типичные ошибки при использовании принудительного использования инструментов включают мутирующие state без подтверждения (модель может срабатывать автономно, что требует наличия human-in-the-loop для деструктивных операций), инструменты с чувствительными данными, которые остаются нередактированными в результатах (что делает контекст Claude потенциально опасным), и бесконечные циклы (модель может продолжать вызывать инструменты бесконечно, что требует ограничения максимального количества итераций).

Связанные понятия

Полезные ресурсы