Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
最も一般的な「tool use」(ツール使用)のエラーに対する、症状から修正方法を導く表です。各修正方法は、その機能を扱うページを相互参照しています。
| 症状 | 考えられる原因 | 修正方法 |
|---|---|---|
| ツールBを使ってほしいのにClaudeがツールAを呼び出す | 説明の曖昧さ | 説明を明確にします。ツールが「何をするか」だけでなく、「いつ使うか」によってツールを区別します。ツールの定義を参照してください。 |
| Claudeがツールをまったく呼び出さない | ツール名の衝突、または汎用的すぎるスキーマ | ツールリスト全体で名前の重複がないか確認します。意図した使い方を具体的にするためにinput_examplesを追加します。 |
| Claudeが間違ったパラメータ型で呼び出す | 曖昧なスキーマに対してモデルが推測している | strict: trueを追加する(スキーマがサポート対象のサブセットに含まれる場合)か、input_examplesを追加します。 |
| 症状 | 考えられる原因 | 修正方法 |
|---|---|---|
| スキーマに存在しないパラメータ | strictモードなしでのモデルの過剰生成 | スキーマがサポート対象のサブセットに含まれる場合はstrict: trueを追加します。 |
| enumの範囲外のパラメータ値 | strictモードの欠如、または大きすぎるenum | enumを縮小するか、有効な選択肢を示すinput_examplesを追加します。 |
| 症状 | 考えられる原因 | 修正方法 |
|---|---|---|
| 並列のほうが適切な場面でClaudeがツールを順次呼び出す | メッセージ履歴のフォーマット | 複数のtool_resultブロックを、ターンごとに1つずつではなく、1つのユーザーメッセージにまとめて送信します。並列ツール使用を参照してください。 |
disable_parallel_tool_useが無視されているように見える | 会話の中で設定するのが遅すぎる | tool_useを返すリクエストで設定する必要があります。後のリクエストで設定しても、それ以前のツール呼び出しには影響しません。 |
| 症状 | 考えられる原因 | 修正方法 |
|---|---|---|
| すべてのリクエストがキャッシュミスになる | tool_choice、思考の設定、またはoutput_config.effortがリクエスト間で変化している | tool_choiceを一定に保つか、cache_controlブレークポイントを変化点より前に配置します。キャッシュされた会話の存続期間中は、思考の設定とeffortレベルを一定に保ちます。プロンプトキャッシングを使用したツール使用および思考とプロンプトキャッシングを参照してください。 |
| 会話の途中でツールを追加するとキャッシュが壊れる | ツールがtools配列の先頭に追加されている | 配列の先頭を変更する代わりに、ツール検索とともにdefer_loading: trueを使用してツールをインラインで末尾に追加します。 |
| エラー | 原因 | 修正方法 |
|---|---|---|
tool_use ids were found without tool_result blocks immediately after | 一部のtool_use idに対するtool_resultが欠けている、またはtool_resultがユーザーメッセージの最初のコンテンツブロックではない | アシスタントの応答内のすべてのtool_useブロックに対してtool_resultを1つずつ返します。tool_resultブロックはテキストより前に配置します。ツール呼び出しの処理および並列ツール使用を参照してください。 |
was found without a corresponding <name>_tool_result block | 直前のアシスタントターンに結果ブロックのないserver_tool_useブロックがあり(多くの場合、Claudeがクライアントツールと同時にそれを呼び出した)、かつ次のユーザーメッセージがそのターンを終了させた(たとえばtool_resultブロックの後にテキストがある)か、再開リクエストでそのサーバーツールが定義されなくなっている(この場合、メッセージはbut no <name> tool was providedで終わります) | クライアントのtool_use idに対するtool_resultブロックのみを含むユーザーメッセージを送信し、同じtools配列を維持します。停止理由とフォールバックを参照してください。 |
Unsupported regex feature in pattern field: ... | strictツールのinput_schema内のpatternが、後方参照、先読み・後読み、単語境界、大きな{n,m}範囲など、strictモードでコンパイルできない正規表現機能を使用している | パターンを簡素化します。基本的な量指定子、文字クラス、グループを使ったアンカー付きパターンはサポートされています。JSON Schemaの制限を参照してください。 |
All tools have defer_loading: true | モデルから見えるツールがない | 少なくとも1つのツールは即時にロードされる必要があります。ツール検索ツール自体には決してdefer_loading: trueを設定してはいけません。 |
ツール呼び出し後に会話を継続する際、リクエストが400 invalid_request_errorで失敗し、そのメッセージに`thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modifiedが含まれている場合、アプリケーションがアシスタントのthinkingブロックを送り返す前に変更しています。アシスタントメッセージ全体を変更せずにそのまま送り返し、その後にtool_resultを追加してください。
完全なエラーと修正手順については、thinkingブロックは変更できませんを参照してください。
| 症状 | 考えられる原因 | 修正方法 |
|---|---|---|
| Claudeがツール結果に基づいて行動することを拒否する、またはツール結果に含まれていた指示についてユーザーに確認を求める | 自分自身の指示がtool_resultのコンテンツ内で渡されている | Claudeは、ツール結果内の指示を信頼できない可能性のあるサードパーティコンテンツとして扱うよう訓練されています。指示をツール結果の外に移動してください。tool_resultブロックの後のuserターンで送信するか、サポート対象のモデルでは会話途中のシステムメッセージで送信します。ツール結果にはデータのみを含めるようにします。ジェイルブレイクとプロンプトインジェクションの軽減を参照してください。 |
| 症状 | 原因 | 修正方法 |
|---|---|---|
| 新しいモデルでツール入力の文字列比較が失敗する | Unicodeおよびスラッシュのエスケープがモデルバージョン間で異なる | json.loads()またはJSON.parse()でパースします。シリアライズされた入力に対して生の文字列マッチングを行わないでください。 |
Claudeを適切なツールへ導くスキーマと説明を記述します。
ツールを実行し、必要なメッセージ形式で結果を返します。
Anthropicスキーマのツールとそのバージョン文字列の完全な一覧です。
Was this page helpful?