Разбор блоков tool_use, форматирование ответов tool_result и обработка ошибок с помощью is_error.
Эта страница описывает жизненный цикл вызова инструмента: чтение блоков tool_use из ответа Claude, форматирование блоков tool_result в вашем ответе и сигнализация об ошибках. Для абстракции SDK, которая обрабатывает это автоматически, см. Tool Runner.
Ответ будет иметь stop_reason со значением tool_use и один или несколько блоков содержимого tool_use, которые включают:
id: Уникальный идентификатор этого конкретного блока использования инструмента. Он будет использоваться позже для сопоставления результатов инструмента.
Когда вы получаете ответ об использовании инструмента для клиентского инструмента, вы должны:
Извлечь name, id и input из блока tool_use.
Запустить фактический инструмент в вашей кодовой базе, соответствующий этому имени инструмента, передав ему input инструмента.
Продолжить разговор, отправив новое сообщение с role равным user и блоком content, содержащим тип tool_result и следующую информацию:
tool_use_id: id запроса на использование инструмента, для которого это является результатом.
content (необязательно): Результат работы инструмента в виде строки (например, "content": "15 degrees"), списка вложенных блоков содержимого (например, "content": [{"type": "text", "text": "15 degrees"}]) или списка блоков документов (например, "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]). Эти блоки содержимого могут использовать типы text, image, document или search_result.
is_error (необязательно): Установите в true, если выполнение инструмента привело к ошибке.
После получения результата инструмента Claude использует эту информацию для продолжения генерации ответа на исходную подсказку пользователя.
Обработка результатов от серверных инструментов
Claude выполняет инструмент внутренне и включает результаты непосредственно в свой ответ без необходимости дополнительного взаимодействия с пользователем.
Обработка ошибок с помощью is_error
Существует несколько различных типов ошибок, которые могут возникнуть при использовании инструментов с Claude: