Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
最も一般的なツール使用エラーに対する、症状から解決策を導くテーブルです。各解決策は、その機能を扱うページへの相互参照を含んでいます。
| 症状 | 考えられる原因 | 解決策 |
|---|---|---|
| ツール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 が変動している | tool_choice を一定に保つか、cache_control ブレークポイントを変動箇所の前に配置してください。プロンプトキャッシングを使用したツール使用を参照してください。 |
| 会話の途中でツールを追加するとキャッシュが壊れる | ツールがtools配列の先頭に追加されている | ツール検索で defer_loading: true を使用し、配列の先頭を変更する代わりにツールをインラインで追加してください。 |
| エラー | 原因 | 解決策 |
|---|---|---|
tool_use ids were found without tool_result blocks immediately after | 一部の tool_use IDに対する tool_result が欠落している、または tool_result がユーザーメッセージの最初のコンテンツブロックになっていない | アシスタントのレスポンス内のすべての tool_use ブロックに対して1つずつ tool_result を返してください。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 配列を維持してください。停止理由とフォールバックを参照してください。 |
Input schema is not compatible with strict mode: string patterns are not supported | strict: true と共に pattern を使用している | patternを削除するか、strict: true を外してください。pattern キーワードはまだサポートされているJSON Schemaサブセットに含まれていません。 |
All tools have defer_loading: true | モデルから見えるツールがない | 少なくとも1つのツールは即座にロードされる必要があります。ツール検索ツール自体には defer_loading: true を設定してはいけません。 |
ツール呼び出し後に会話を継続する際、メッセージに `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified を含む400 invalid_request_error でリクエストが失敗する場合、アプリケーションがアシスタントのthinkingブロックを送り返す前に変更しています。アシスタントメッセージ全体を変更せずにそのまま送り返し、その後に tool_result を追加してください。
完全なエラー内容と修正手順については、thinkingブロックは変更できませんを参照してください。
| 症状 | 考えられる原因 | 解決策 |
|---|---|---|
| Claudeがツール結果に基づいて行動することを拒否する、またはツール結果から来た指示についてユーザーに確認を求める | あなた自身の指示が tool_result コンテンツ内で渡されている | Claudeは、ツール結果内の指示を潜在的に信頼できないサードパーティコンテンツとして扱うように訓練されています。指示をツール結果の外に移動してください。tool_result ブロックの後の user ターンで送信するか、(Claude Opus 4.8以降では)会話途中のシステムメッセージで送信してください。ツール結果にはデータのみを含めてください。ジェイルブレイクとプロンプトインジェクションの軽減を参照してください。 |
| 症状 | 原因 | 解決策 |
|---|---|---|
| 新しいモデルでツール入力の文字列比較が失敗する | Unicodeとスラッシュのエスケープがモデルバージョン間で異なる | json.loads() または JSON.parse() でパースしてください。シリアライズされた入力に対して生の文字列マッチングを行わないでください。 |
Claudeを適切なツールへ導くスキーマと説明を記述します。
ツールを実行し、必要なメッセージ形式で結果を返します。
Anthropicスキーマツールとそのバージョン文字列の完全なディレクトリです。
Was this page helpful?