Таблицы «симптом — решение» для наиболее распространённых ошибок использования инструментов. Каждое решение содержит ссылку на страницу, описывающую соответствующую функцию.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Claude вызывает инструмент A, когда вам нужен инструмент B | Неоднозначность описания | Уточните описания. Разграничивайте инструменты по тому, КОГДА их использовать, а не только по тому, ЧТО они делают. См. Определение инструментов. |
| Claude никогда не вызывает ваш инструмент | Конфликт имён инструментов или слишком общая схема | Проверьте наличие дублирующихся имён в вашем списке инструментов. Добавьте input_examples, чтобы сделать предполагаемое использование конкретным. |
| Claude вызывает инструмент с неправильными типами параметров | Модель угадывает при неоднозначной схеме | Добавьте strict: true (если ваша схема входит в поддерживаемое подмножество) или добавьте input_examples. |
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Параметр, которого нет в вашей схеме | Избыточная генерация моделью без строгого режима | Добавьте strict: true, если ваша схема входит в поддерживаемое подмножество. |
| Значения параметров вне вашего перечисления (enum) | Отсутствует строгий режим или слишком большое перечисление | Сократите перечисление или добавьте input_examples, показывающие допустимые варианты. |
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Claude вызывает инструменты последовательно, когда параллельный вызов был бы лучше | Форматирование истории сообщений | Отправляйте несколько блоков tool_result в ОДНОМ пользовательском сообщении, а не по одному за ход. См. Параллельное использование инструментов. |
disable_parallel_tool_use кажется игнорируемым | Установлен слишком поздно в разговоре | Должен быть установлен в запросе, который возвращает tool_use. Установка его в более позднем запросе не влияет на предыдущие вызовы инструментов. |
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Каждый запрос — промах кэша | tool_choice меняется между запросами | Сохраняйте tool_choice стабильным или разместите точку останова cache_control перед точкой изменения. См. Использование инструментов с кэшированием подсказок. |
| Добавление инструмента в середине разговора ломает кэш | Инструмент добавлен в начало массива tools | Используйте defer_loading: true с поиском инструментов, чтобы добавить инструмент инлайн вместо изменения начала массива. |
| Ошибка | Причина | Решение |
|---|---|---|
tool_use ids were found without tool_result blocks immediately after | Отсутствует tool_result для некоторых идентификаторов tool_use, или tool_result не является первым блоком содержимого в пользовательском сообщении | Возвращайте один tool_result для каждого блока tool_use в ответе ассистента. Размещайте блоки tool_result перед любым текстом. См. Обработка вызовов инструментов и Параллельное использование инструментов. |
was found without a corresponding <name>_tool_result block | Предыдущий ход ассистента содержит блок server_tool_use без блока результата (чаще всего Claude вызвал его вместе с клиентским инструментом), и либо ваше следующее пользовательское сообщение завершило этот ход (например, текстом после блоков tool_result), либо повторный запрос больше не определяет этот серверный инструмент (сообщение тогда заканчивается на but no <name> tool was provided) | Отправьте пользовательское сообщение, содержащее только блоки tool_result для идентификаторов клиентских tool_use, и сохраните тот же массив tools. См. Причины остановки и резервный вариант. |
Input schema is not compatible with strict mode: string patterns are not supported | Использование pattern с strict: true | Удалите pattern или уберите strict: true. Ключевое слово pattern пока не входит в поддерживаемое подмножество JSON Schema. |
All tools have defer_loading: true | Модели не видны никакие инструменты | Хотя бы один инструмент должен быть загружен немедленно. Сам инструмент поиска инструментов никогда не должен иметь defer_loading: true. |
Если запрос завершается ошибкой 400 invalid_request_error, сообщение которой содержит `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified при продолжении разговора после вызова инструмента, ваше приложение изменяет блоки мышления ассистента перед их отправкой обратно. Отправляйте всё сообщение ассистента обратно без изменений, затем добавляйте ваш tool_result.
См. Блоки мышления не могут быть изменены для полного описания ошибки и шагов по исправлению.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Claude отказывается действовать на основе результата инструмента или просит пользователя подтвердить инструкции, пришедшие из него | Ваши собственные инструкции передаются внутри содержимого tool_result | Claude обучен рассматривать инструкции внутри результатов инструментов как потенциально недоверенное стороннее содержимое. Переместите ваши инструкции из результата инструмента: отправьте их в ходе user после блока tool_result или (в Claude Opus 4.8 и более поздних версиях) в системном сообщении в середине разговора. Оставьте в результате инструмента только данные. См. Предотвращение джейлбрейков и инъекций подсказок. |
| Симптом | Причина | Решение |
|---|---|---|
| Сравнение строк во входных данных инструментов не работает с более новыми моделями | Экранирование Unicode и прямой косой черты различается между версиями моделей | Разбирайте с помощью json.loads() или JSON.parse(). Никогда не выполняйте сравнение сырых строк на сериализованных входных данных. |
Пишите схемы и описания, которые направляют Claude к правильному инструменту.
Выполняйте инструменты и возвращайте результаты в требуемом формате сообщений.
Полный каталог инструментов со схемой Anthropic и их строк версий.
Was this page helpful?