このページでは、思考の設定時や思考ブロックのラウンドトリップ(返された思考ブロックを後続のリクエストで送り返すこと)時に発生する最も一般的な失敗について説明します。最初のセクションでは、各モデルがサポートする思考設定と拒否する設定を対応付けています。それ以降の各セクションは、観察される症状から始まるため、エラーメッセージや予期しないレスポンスをその原因と修正方法に直接照合できます。思考の仕組みについては、思考の概要を参照してください。
思考設定エラーのほとんどは、リクエスト内のthinking.type値とモデルがサポートする内容との不一致です。現行モデルでは、思考はthinking: {type: "adaptive"}として実行され、最新モデルではデフォルトでオンになっています。一部の以前のモデルでは、代わりに拡張思考を使用します。これはthinking: {type: "enabled", budget_tokens: N}として設定されるレガシーの手動モードです。
拡張思考(budget_tokensを伴うthinking.type: "enabled")は、Claude 4.6モデルでは非推奨です(これを使用するリクエストは引き続き成功します)。Claude 4.7以降のモデルはこれをサポートしておらず、使用するリクエストを拒否して400エラーを返します。思考をサポートするClaude 4.5以前のモデルでは、拡張思考が唯一利用可能な思考モードです。Claude Mythos Previewは両方のモードをサポートしています。両方のモードが利用可能な場合は、代わりに適応思考を使用してください。
この表は、各モデルがサポートする内容、デフォルト設定、および400エラーで拒否されるthinking.type値を示しています。拒否として記載されていない値はすべて受け入れられます。
| モデル | 思考タイプ | デフォルト | 400で拒否 |
|---|---|---|---|
| Claude Fable 5 | アダプティブのみ | 常時オン | "enabled"、"disabled" |
| Claude Mythos 5 | アダプティブのみ | 常時オン | "enabled"、"disabled" |
| Claude Mythos Preview | アダプティブ、拡張 | 常時オン | "disabled" |
| Claude Opus 5 | アダプティブのみ | オン | "enabled"、"disabled"2 |
| Claude Opus 4.8 | アダプティブのみ | オフ | "enabled" |
| Claude Opus 4.7 | アダプティブのみ | オフ | "enabled" |
| Claude Sonnet 5 | アダプティブのみ | オン | "enabled" |
| Claude Opus 4.6 | アダプティブ、拡張(非推奨)1 | オフ | なし |
| Claude Sonnet 4.6 | アダプティブ、拡張(非推奨)1 | オフ | なし |
| Claude Opus 4.5 | 拡張のみ | オフ | "adaptive" |
| Claude Haiku 4.5 | 拡張のみ | オフ | "adaptive" |
| Claude Sonnet 4.5 | 拡張のみ | オフ | "adaptive" |
1 これらのモデルではenabledとbudget_tokensは引き続き動作しますが非推奨です。代わりにアダプティブ思考を使用してください。
2 Claude Opus 5はeffortがhigh以下の場合に"disabled"を受け入れます。effortがxhighまたはmaxと組み合わせると400エラーが返されます。この制限はClaude Opus 5以降のモデルに適用され、各リクエストで強制されます。
常時オンとマークされたモデルは思考をオフにできません。オンとマークされたモデルはデフォルトで思考しますが、thinking: {type: "disabled"}を受け入れます。
以前のClaude 4モデル(Claude Opus 4.1、Claude Sonnet 4、Claude Opus 4)は拡張思考のみをサポートしています。それらの利用可能性についてはモデルの廃止を参照してください。Claude Fable 5とClaude Mythos 5はゼロデータ保持では利用できません。
"thinking.type.enabled"がサポートされていないと表示されるリクエストが400エラーで失敗し、次のメッセージが表示されます:
"thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.これは、リクエストしたモデルが拡張思考を削除したために発生します(各モデルが拒否する設定を参照)。
リクエストをthinking: {type: "adaptive"}に切り替え、budget_tokensの代わりにeffortで思考の深さを調整してください。アダプティブ思考への移行で変換手順を説明しています。
"thinking.type.disabled"がサポートされていないと表示されるリクエストが400エラーで失敗し、次のメッセージが表示されます:
"thinking.type.disabled" is not supported for this model. Thinking defaults to adaptive mode when not specified; use "thinking.type.enabled" with "budget_tokens" for extended thinking.これは思考が常時オンのモデルで発生します:Claude Fable 5、Claude Mythos 5、Claude Mythos Previewは"disabled"を拒否します。Claude Fable 5とClaude Mythos 5では、エラーテキストが提案する"thinking.type.enabled"も適用されません。これらのモデルはそれも拒否します。
thinkingパラメータを省略してください。これらのモデルは設定なしで思考します。レスポンスから思考テキストを除外することが目的だった場合は、思考を無効にする代わりにdisplay: "omitted"を使用してください。思考表示の制御を参照してください。
"disabled"に対する400エラーはClaude Opus 5でも発生する可能性があります。Claude Opus 5はeffortがhigh以下の場合にのみthinking: {type: "disabled"}を受け入れます。effortがxhighまたはmaxとの組み合わせは拒否されます。effortレベルを下げるか、思考をオンのままにしてください。
リクエストが400エラーで失敗し、次のメッセージが表示されます:
adaptive thinking is not supported on this modelこれは、モデルが拡張思考のみをサポートしているために発生します(各モデルが拒否する設定を参照)。
代わりにthinking: {type: "enabled", budget_tokens: N}を使用してください。設定については拡張思考を参照してください。
ツール結果を返すリクエストが400のinvalid_request_errorで失敗し、メッセージに次の内容が含まれます:
`thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modifiedマルチターンおよびツール使用の会話では、以前のアシスタントメッセージをthinkingおよびredacted_thinkingブロックを含めてAPIに送り返し、APIはそれらが変更されずに到着したことを検証します。このエラーは、送り返したアシスタントメッセージがAPIが返したものと異なる場合に発生します。最も多いのは、コードがコンテンツブロックをタイプでフィルタリングしてredacted_thinkingブロックを削除する場合、またはアシスタントメッセージをそのまま返す代わりに再構築する場合です。
アシスタントターンを思考ブロックを含めてそのまま返してください。ルールについては思考ブロックの保持を、すべてのSDKでの正しいコードについてはツールおよびマルチターンワークフローでの思考の実例ラウンドトリップを参照してください。
レスポンスにthinkingブロックが含まれていますが、そのthinkingフィールドが空の文字列で、signatureフィールドのみが設定されています。
これは、新しいモデルではdisplayがデフォルトで"omitted"になっており、テキストなしで思考ブロックが返されるために発生します。
要約された思考テキストを受け取るには、思考設定でdisplay: "summarized"を設定してください。モデルごとのデフォルトについては思考表示の制御を参照してください。
思考が設定されているにもかかわらず、一部のレスポンスにthinkingブロックがまったく含まれていません。
これはアダプティブモードでは正常です。Claudeは、直接回答できるほど単純だと判断したリクエストでは思考をスキップします。
思考をより頻繁に、またはより深く行わせたい場合は、effortを上げるか、プロンプトで誘導してください。Claudeが思考する頻度の調整を参照してください。
レスポンスが時折、tool_useブロックを出力する代わりにツール呼び出しをテキストに書き込んだり、<thinking>やその他の内部XMLタグを可視テキストに含めたりします。漏れたツール呼び出しは実行されず、エージェントループでは漏れたテキストが会話履歴に残るため、後続のターンにも影響します。
これは、思考が無効になっている場合にClaude Opus 5で発生し、検索などのツールを多用するワークロードで最も一般的です。モデルに思考しないように、または推論しないように指示するシステムプロンプトのルールは、タグの漏れを増加させます。
思考を再度有効にし(デフォルト)、代わりに低いeffortレベルを使用してトークンコストを制御してください。統合で思考を無効のままにする必要がある場合は、思考を無効にして実行するのプロンプトによる緩和策を適用してください。
stop_reason: "max_tokens"で停止するレスポンスがstop_reason: "max_tokens"で終了し、多くの場合テキストブロックが切り詰められているか欠落しています。
これは、思考トークンがmax_tokensにカウントされるため、長い思考パスがテキストレスポンスが完了する前に予算を消費してしまうために発生します。
思考とテキストの両方に余裕を持たせるためにmax_tokensを増やすか、Claudeが思考に費やす量を減らすためにeffortを下げてください。コスト制御および思考とコンテキストウィンドウを参照してください。
以前はキャッシュにヒットしていたリクエストでcache_read_input_tokensがゼロに低下します。
これは、思考設定とeffortレベル(またはそのデフォルト)がキャッシュされたプロンプトプレフィックスの一部であるため、それらのいずれかを変更すると新しいプレフィックスが開始されるために発生します。思考モードの切り替え、effort値の変更、budget_tokensの変更はすべてメッセージキャッシュブレークポイントを無効化し、モデルが設定をレンダリングする場所によっては、ツールおよびシステムプロンプトのブレークポイントも無効化する可能性があります。
会話を共有するリクエスト間で思考設定とeffortレベルを一定に保ってください。パラメータを明示的にデフォルト値に設定することは、それを省略することと同等であり、無効化しません。思考とプロンプトキャッシングを参照してください。
effortを変更しても、思考の頻度や深さが変わりません。
これは、effortがアダプティブモードでのみ主要な思考レバーであるために発生します。拡張思考のみのモデルでは、思考の深さは代わりにbudget_tokensで設定されます。
それらのモデルではbudget_tokensを調整するか、モデルがどのモードで実行されているかを確認してください。思考とeffortを参照してください。effortをサポートする唯一の拡張思考のみのモデルであるClaude Opus 4.5では、effortは予算と組み合わされます。予算のルールと調整を参照してください。
概要:思考とは何か、設定方法、ツール、キャッシング、ストリーミングとの相互作用について。
思考設定の400エラーとその正確なサーバーメッセージを含む、完全なエラーリファレンス。
budget_tokensリクエストをeffortを使用したアダプティブ思考に変換します。
Was this page helpful?