Таблицы «симптом — решение» для наиболее распространённых ошибок использования инструментов. Каждое решение содержит ссылку на страницу, которой принадлежит соответствующая функция.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Claude вызывает инструмент A, когда вы хотели инструмент B | Неоднозначность описания | Уточните описания. Различайте инструменты по тому, КОГДА их использовать, а не только по тому, ЧТО они делают. См. Определение инструментов. |
| Claude никогда не вызывает ваш инструмент | Конфликт имён инструментов или слишком общая схема | Проверьте наличие дублирующихся имён в вашем списке инструментов. Добавьте input_examples, чтобы сделать предполагаемое использование конкретным. |
| Claude вызывает с неправильными типами параметров | Модель угадывает при неоднозначной схеме | Добавьте strict: true (если ваша схема входит в поддерживаемое подмножество) или добавьте input_examples. |
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Параметр, которого нет в вашей схеме | Избыточная генерация модели без строгого режима | Добавьте strict: true, если ваша схема входит в поддерживаемое подмножество. |
| Значения параметров вне вашего enum | Отсутствует строгий режим или слишком большой enum | Сократите enum или добавьте input_examples, показывающие допустимые варианты. |
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Claude вызывает инструменты последовательно, когда параллельный вызов был бы лучше | Форматирование истории сообщений | Отправляйте несколько блоков tool_result в ОДНОМ пользовательском сообщении, а не по одному на ход. См. Параллельное использование инструментов. |
disable_parallel_tool_use, похоже, игнорируется | Установлен слишком поздно в разговоре | Должен быть установлен в запросе, который возвращает tool_use. Установка его в более позднем запросе не влияет на более ранние вызовы инструментов. |
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Каждый запрос — промах кэша | tool_choice, конфигурация мышления или output_config.effort меняются между запросами | Сохраняйте tool_choice стабильным или размещайте точку останова cache_control перед точкой изменения; сохраняйте конфигурацию мышления и уровень усилий постоянными на протяжении всего кэшированного разговора. См. Использование инструментов с кэшированием подсказок и Мышление и кэширование подсказок. |
| Добавление инструмента в середине разговора ломает кэш | Инструмент добавлен в начало массива инструментов | Используйте 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 или, на поддерживаемых моделях, в системном сообщении в середине разговора. Оставьте в результате инструмента только данные. См. Смягчение джейлбрейков и инъекций подсказок. |
| Симптом | Причина | Решение |
|---|---|---|
| Сравнение строк во входных данных инструментов не работает с более новыми моделями | Экранирование Unicode и прямых слэшей различается между версиями моделей | Выполняйте разбор с помощью json.loads() или JSON.parse(). Никогда не выполняйте сопоставление необработанных строк с сериализованными входными данными. |
Пишите схемы и описания, которые направляют Claude к правильному инструменту.
Выполняйте инструменты и возвращайте результаты в требуемом формате сообщений.
Полный каталог инструментов со схемами Anthropic и их строками версий.
Was this page helpful?