手動モードの「extended thinking」(拡張思考)では、Claudeがどれだけ思考するかを直接制御できます。各リクエストでthinking: {type: "enabled", budget_tokens: N}を使用して思考トークンバジェットを設定すると、Claudeは最終的な回答を開始する前にそのバジェットに対して思考します。手動モードは、ワークロードが予測可能なレイテンシや思考コストの正確な制御を必要とする場合に引き続き有用です。このページでは、バジェットの設定と調整方法、手動モードがインターリーブ思考やプロンプトキャッシングとどのように相互作用するか、および適応型思考への移行方法について説明します。
思考ブロックやレスポンス形式、displayパラメータ、ストリーミング、ツール使用を伴う思考、暗号化など、思考自体の仕組みについては、思考の概要を参照してください。
拡張思考が唯一のモードであるモデルを含む、モデルごとの拡張思考の利用可否は、モデルごとの設定表に記載されています。
以下は、Messages APIで拡張思考を使用する例です。
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
}
],
)
# レスポンスには要約された思考ブロックとテキストブロックが含まれます
for block in response.content:
match block.type:
case "thinking":
print(f"\nThinking summary: {block.thinking}")
case "text":
print(f"\nResponse: {block.text}")手動拡張思考を有効にするには、typeをenabledに設定し、budget_tokens値を指定したthinkingオブジェクトを追加します。
budget_tokensパラメータは、Claudeが内部推論プロセスに使用できるトークン数の目標を設定します。バジェットを大きくすると、複雑な問題に対してより徹底的な分析が可能になり、レスポンスの品質が向上する可能性があります。
budget_tokensは以下の制約を満たす必要があります。
max_tokens未満。 思考トークンはそのターンのmax_tokens制限にカウントされるため、バジェットは最終レスポンスのための余地を残す必要があります。唯一の例外はインターリーブ思考で、バジェットが1つのアシスタントターン内のすべての思考ブロックにまたがるため、budget_tokensがmax_tokensを超えることができます。budget_tokensはmax_tokens未満でなければならないため、拡張思考はmax_tokens: 0(キャッシュの事前ウォーミング)と組み合わせることができません。バジェットは厳密な上限ではなく目標です。実際のトークン使用量はタスクによって異なり、Claudeはバジェットを使い切るかなり前に推論を停止することがあります。max_tokensは引き続き総出力の厳密な上限です。
拡張思考のみをサポートするモデルの中で唯一effortをサポートするClaude Opus 4.5では、effortがレスポンス全体を形成し、budget_tokensが思考の深さを設定します。両方を設定してください。
バジェットを調整するには:
バジェットが実際にどれだけのコストになっているかを追跡するには、レスポンスのusage.output_tokens_details.thinking_tokensフィールドを監視してください。このフィールドは、課金された出力トークンのうち内部推論に使用されたトークン数を報告します。ストリーミング時には、この内訳は最終のmessage_deltaイベントにのみ表示されます。
手動バジェットから移行する準備ができたら、適応型思考への移行を参照してください。
「interleaved thinking」(インターリーブ思考)により、Claudeは単一のアシスタントターン内でツール呼び出しの間に思考し、次に何をすべきかを決定する前に各ツール結果について推論できます。この概念、ターン構造、および適応型思考モデルでの動作については、思考の概要のインターリーブ思考を参照してください。このセクションでは、手動のtype: "enabled"思考を使用する場合の有効化方法について説明します。
Claude Opus 4.5、Claude Sonnet 4.5、およびそれ以前のClaude 4モデル(Claude Opus 4.1、Claude Opus 4、Claude Sonnet 4)では、APIリクエストにinterleaved-thinking-2025-05-14 ベータヘッダーを追加します。
4.6世代は手動モードで分かれます。
type: "enabled"でのベータヘッダーは引き続き機能しますが、非推奨です。ヘッダーなしで自動的にインターリーブする適応型思考を推奨します。thinking: {type: "adaptive"}に切り替えてください。Claude Haiku 4.5はインターリーブ思考をサポートしていません。Claude APIでは、ベータヘッダーは受け入れられますが無視されます。
手動モードでのインターリーブ思考に関するその他の2つの考慮事項:
budget_tokensがmax_tokensを超えることができます。バジェットのルールでこの例外について説明しています。プラットフォームによるベータヘッダーの扱いは異なります。Claude APIとAWS上のClaude Platformは、どのモデルでもinterleaved-thinking-2025-05-14を受け入れ、サポートされていない場合は無視します。受け入れは効果と同じではありません。type: "enabled"を拒否するモデル(4.7以降)や手動モードのインターリーブがないモデル(Claude Opus 4.6)では、ヘッダーは手動モードで効果がありません。そこでは適応型思考が自動的にインターリーブします。
パートナー運営のプラットフォーム(Amazon BedrockおよびGoogle Cloud)も同様に、どのモデルでもエラーを返さずにヘッダーを受け入れ、インターリーブ思考をサポートしていないモデルでは無視します。
単一ターンのツール使用ループ、ターン途中の競合処理、ターン間での思考の切り替えなど、一般的なターン構造のルールはツール使用を伴う思考に記載されています。
手動モードには1つの要件が追加されます。思考が有効なリクエストの最終アシスタントターンは、思考ブロックで始まる必要があります(適応型思考ではこの要件はありません)。ターン間で思考設定を変更すると、プロンプトキャッシングも無効になります。次のセクションを参照してください。
手動モードでは、思考とプロンプトキャッシングで説明されているモード中立のキャッシング動作に加えて、1つのルールが追加されます。リクエスト間でbudget_tokensを変更すると、思考モードを切り替えた場合と同様にキャッシュブレークポイントが無効になります。これは、バジェット値がプロンプトにレンダリングされるためです。バジェット変更後、メッセージレベルのブレークポイントは常にミスします。ツールおよびシステムプロンプトのブレークポイントもミスするかどうかは、モデルが設定をどこにレンダリングするかによって異なります。
実際には、バジェットを選択し、キャッシュされた会話の存続期間中は安定させてください。Claude Sonnet 4.6でメッセージレベルのキャッシングを使用してマルチターン会話を実行し、3番目のリクエストでバジェットを4,000トークンから8,000トークンに変更すると、無効化が直接確認できます。
First request - establishing cache
First response usage: { cache_creation_input_tokens: 1370, cache_read_input_tokens: 0, input_tokens: 17, output_tokens: 700 }
Second request - same thinking parameters (cache hit expected)
Second response usage: { cache_creation_input_tokens: 0, cache_read_input_tokens: 1370, input_tokens: 303, output_tokens: 874 }
Third request - different thinking budget (cache miss expected)
Third response usage: { cache_creation_input_tokens: 1370, cache_read_input_tokens: 0, input_tokens: 747, output_tokens: 619 }3番目のリクエストは、リクエスト間でバジェットが変更されたため、キャッシュを再作成します(cache_creation_input_tokens=1370、cache_read_input_tokens=0)。適応モードでの同じ実験の実行可能なバージョン(ここでのbudget_tokensが果たすキャッシュの役割をeffortレベルが果たす)については、ステアリングページのプロンプトキャッシングを参照してください。
ほとんどの思考動作はモード中立であり、思考ページで一度だけ文書化されています。そこに記載されているすべての内容は手動モードにも適用されます。
お使いのモデルが拡張思考のみをサポートしている場合(Claude Sonnet 4.5、Claude Opus 4.5、Claude Haiku 4.5、およびそれ以前のClaude 4モデル)、現時点で対応は不要です。そこでは適応型思考は利用できず、type: "adaptive"は400エラーを返します。適応型思考をサポートするモデルに移行するまでbudget_tokensを維持し、その後、以下のマッピングを適用してください。
以下の場合はtype: "enabled"から移行する必要があります。
budget_tokensが非推奨となっているClaude Opus 4.6またはClaude Sonnet 4.6を使用している場合。type: "enabled"が400エラーを返すClaude Opus 4.7、Claude Opus 4.8、Claude Opus 5、Claude Sonnet 5、Claude Fable 5、またはClaude Mythos 5に移行する場合。マッピングは小さなものです。budget_tokensを削除し、thinking: {type: "adaptive"}を設定し、トークンバジェットの代わりにoutput_config: {effort: ...}で推論の深さを制御します。
{
"model": "claude-sonnet-4-6",
"max_tokens": 16000,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
}
}は次のようになります。
{
"model": "claude-sonnet-4-6",
"max_tokens": 16000,
"thinking": {
"type": "adaptive"
},
"output_config": {
"effort": "high"
}
}effort: "high"はAPIのデフォルトと一致します。ここでは深さ制御がどこに移動したかを示すためだけに記載されており、省略しても同一の動作になります。
構文の変更だけでなく、動作の違いも予想してください。固定バジェットでは、Claudeはすべてのリクエストで思考します。適応型思考では、Claudeは各リクエストで思考するかどうか、およびどれだけ思考するかを決定し、低いeffort設定では簡単な入力に対して思考を完全にスキップすることがあります。移行後はinterleaved-thinking-2025-05-14ベータヘッダーも削除できます。適応型思考は自動的にインターリーブし、Claude APIはこれらのモデルでヘッダーを無視します。思考ブロックの保持も変わります。Claude Opus 4.5および4.6以降の番号のモデルは、前のターンの思考ブロックをコンテキストに保持し、入力として課金しますが、Claude Sonnet 4.5、Claude Haiku 4.5、およびそれ以前のモデルはそれらを削除していました。モデルごとの思考ブロック保持を参照してください。
モードの切り替えは思考設定の変更であるため、手動モードでのプロンプトキャッシングで説明されているように、切り替え後の最初のリクエストはキャッシュブレークポイントを無効にします。
詳細なガイダンスについては、適応型思考、effort、およびモデル移行ガイドを参照してください。
思考の仕組みを学びます:ブロック、表示、ストリーミング、ツール使用。
各リクエストでいつ、どれだけ思考するかをClaudeに決定させます。
ツール呼び出しとターンをまたいで思考ブロックを保持し、思考を管理します。
Was this page helpful?