Extended thinkingとAdaptive thinkingの違い — モデル別対応表
budget_tokensで予算を固定するextended thinkingと、Claudeが自律判断するadaptive thinkingの違いを、モデル別対応表とエラーの原因から示します。
Claude Opus 5やClaude Fable 5.1のリクエストにthinking: {"type": "enabled", "budget_tokens": N}を送ると400エラーになります。これらのモデルは思考量をトークン予算で固定するextended thinkingを廃止し、Claude自身が思考の要否と深さを判断するadaptive thinkingに一本化されているためです。逆にClaude Haiku 4.5やClaude Sonnet 4.5にthinking: {"type": "adaptive"}を送ると400エラーになります。extended thinkingしか実装されていないからです。どちらのモードをどのモデルが受け付けるか、切り替えると何が変わるかを、公式ドキュメントのモデル別対応表とエラーメッセージから確かめていきます。
Extended thinkingとAdaptive thinkingの根本的な違い
Extended thinkingとは、thinking: {"type": "enabled", "budget_tokens": N}で指定する手動モードです。リクエストごとにトークン予算を明示し、Claudeはその予算の範囲内で思考してから応答します。予算は開発者が決めるので、レイテンシとコストの見積もりが立てやすい一方、簡単な質問にも指定した予算ぶんの思考が走ります。
Adaptive thinkingとは、thinking: {"type": "adaptive"}で有効化する自動モードです。思考するかどうか、どれだけ深く思考するかをClaudeがリクエストの複雑さから判断します。深さの調整はbudget_tokensではなくeffortパラメータ(low / medium / high / xhigh / maxの5段階)で行います。簡単な入力では思考そのものをスキップすることがあり、これはextended thinkingには無い挙動です。固定予算のモードは「毎回同じだけ考える」設計、適応型は「考える必要があるかどうかも含めてモデルに委ねる」設計だと言えます。
思考の中身(thinking blockの形式、displayパラメータでの表示制御、ツール呼び出しとの絡み方)はどちらのモードでも共通です。違うのは「深さをどう指定するか」と「指定した設定をモデルが受け付けるか」の2点に絞られます。
モデルごとの対応表 — どちらのモードが使えるか
現行モデルと直近の旧世代で、対応するthinkingタイプ・既定値・拒否される設定は次のとおりです。
| モデル | 対応するthinkingタイプ | 既定値 | 400で拒否される設定 |
|---|---|---|---|
| Claude Fable 5.1 | 対応するthinkingタイプAdaptiveのみ | 既定値常時オン | 400で拒否される設定enabled / disabled |
| Claude Mythos 5.1 | 対応するthinkingタイプAdaptiveのみ | 既定値常時オン | 400で拒否される設定enabled / disabled |
| Claude Fable 5 | 対応するthinkingタイプAdaptiveのみ | 既定値常時オン | 400で拒否される設定enabled / disabled |
| Claude Mythos 5 | 対応するthinkingタイプAdaptiveのみ | 既定値常時オン | 400で拒否される設定enabled / disabled |
| Claude Mythos Preview | 対応するthinkingタイプAdaptive・Extended両方 | 既定値常時オン | 400で拒否される設定disabled |
| Claude Opus 5 | 対応するthinkingタイプAdaptiveのみ | 既定値オン | 400で拒否される設定enabled(常時)/ disabled(effort xhigh・maxのとき) |
| Claude Opus 4.8 | 対応するthinkingタイプAdaptiveのみ | 既定値オフ | 400で拒否される設定enabled |
| Claude Opus 4.7 | 対応するthinkingタイプAdaptiveのみ | 既定値オフ | 400で拒否される設定enabled |
| Claude Sonnet 5 | 対応するthinkingタイプAdaptiveのみ | 既定値オン | 400で拒否される設定enabled |
| Claude Opus 4.6 | 対応するthinkingタイプAdaptive・Extended(非推奨) | 既定値オフ | 400で拒否される設定なし |
| Claude Sonnet 4.6 | 対応するthinkingタイプAdaptive・Extended(非推奨) | 既定値オフ | 400で拒否される設定なし |
| Claude Opus 4.5 | 対応するthinkingタイプExtendedのみ | 既定値オフ | 400で拒否される設定adaptive |
| Claude Haiku 4.5 | 対応するthinkingタイプExtendedのみ | 既定値オフ | 400で拒否される設定adaptive |
| Claude Sonnet 4.5 | 対応するthinkingタイプExtendedのみ | 既定値オフ | 400で拒否される設定adaptive |
表から読み取れる境界線は3つです。新世代(Fable / Mythosクラスと4.7以降)はadaptive一択で、そもそも選択肢がありません。Opus 4.6とSonnet 4.6だけが両方のtypeを受け付ける移行期の2モデルで、enabledはまだ動きますが非推奨です。そしてHaiku 4.5・Sonnet 4.5・Opus 4.5はextended thinkingしか実装されていません。adaptiveを送ると「adaptive thinking is not supported」エラーになります。コストや速度を優先してHaiku 4.5・Sonnet 4.5を使い続けている実装は、意図せず対象外です。
budget_tokensからeffortへの書き換え方
移行が必要になるパターンは2つです。ひとつはOpus 4.6・Sonnet 4.6でbudget_tokensを使い続けている場合(動くが非推奨)、もうひとつはOpus 4.7以降・Sonnet 5・Fable/Mythosクラスへ移る場合(enabledが400で拒否される)です。書き換えの型は共通で、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の既定値と同じなので、省略しても挙動は変わりません。effortパラメータの使い分けは5段階それぞれの用途が異なるため、budget_tokensの数値をそのままeffortのどこかに機械的に対応させることはできません。予算の大小ではなく、タスクの性質(簡単な作業ならlow、コーディングやエージェント的タスクならxhigh)で選び直す作業になります。
実際にadaptive thinkingを有効化してレスポンスを受け取るリクエストの最小形は次のとおりです。
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-opus-5",
"max_tokens": 16000,
"thinking": {"type": "adaptive", "display": "summarized"},
"messages": [{"role": "user", "content": "1071と462の最大公約数は?"}]
}'displayを明示しない場合、新しいモデルでは既定値が"omitted"になっており、thinking blockのthinkingフィールドが空文字で返ります。要約テキストが欲しいときは"summarized"を明示します。
切り替えると構文以外に何が変わるか
budget_tokensをeffortに置き換える作業は構文の書き換えに見えますが、実際には挙動が変わります。
- 思考が毎回走るとは限らない: 固定予算なら常に思考しますが、adaptive thinkingは簡単な入力で思考をスキップします。thinking blockが一部のターンで出ない現象は不具合ではなく、この判断の結果です
interleaved-thinking-2025-05-14ベータヘッダーが不要になる: adaptive thinkingはツール呼び出しの間の思考を自動でinterleaveするため、ヘッダーを送ってもこれらのモデルでは無視されます- thinking blockの保持ルールが変わる: Opus 4.5以降のOpusとSonnet 4.6以降のSonnet、そしてFable / Mythosクラス全体は前ターンのthinking blockを既定でコンテキストに保持し、ツール結果と一緒にキャッシュされて入力トークンとして課金されます。Sonnet 4.5・Haiku 4.5までの全Haiku・それ以前のOpus / Sonnetは直近ターンぶんしか保持せず、古いthinking blockを送り返してもAPIが自動で取り除きます
- モード切り替え自体がキャッシュを無効化する:
typeをenabledからadaptiveに変える、あるいはbudget_tokensやeffortの値を変えるだけでも、その回のリクエストからキャッシュのブレークポイントが外れます - 強制ツール呼び出しの可否が入れ替わる:
tool_choice: {"type": "any"}のような強制ツール呼び出しは、手動のextended thinkingとは併用できません。adaptive thinkingでは使えますが、Fable 5.1・Mythos 5.1だけは例外でどちらのモードでも強制ツール呼び出しを拒否します。この2モデルで特定のツールを必ず呼ばせたい場合は、tool_choice: {"type": "auto"}と厳格なツール定義や構造化出力を組み合わせます - サンプリングパラメータの制約範囲が広がる: Fable/MythosクラスとOpus 5・4.8・4.7・Sonnet 5では、思考の有無に関わらず
temperature/top_p/top_kを既定値以外に変えると常に400エラーになります。旧世代では思考が有効な間だけ同じ制約がかかり、top_pは0.95〜1の範囲のみ許容されていました - 会話の追記専用ルールが加わる: Fable 5.1・Mythos 5.1以降は、送り返したthinking blockの署名(
signature)がそれ以前のsystemプロンプト・tools・メッセージ列と一致するかをAPIが検査します。途中の指示をシステムプロンプトの書き換えで差し込む、古いターンを編集・削除するといった操作をすると、それ以降のthinking blockがまとめて無効化されます。指示の追加はシステムプロンプトの書き換えではなく会話途中のシステムメッセージで行い、履歴は常に末尾へ追記する運用に変える必要があります。この検査が既定で効くかどうかはアカウントの作成時期で分かれます。2026年8月31日00:00 UTC以降に作成したアカウントは既定で検査が有効ですが、それより前のアカウントはリクエストでthinking.block_binding.prefix_mismatch_behaviorを指定しない限り検査が働きません。違反時の挙動は"error"(400で拒否)と"drop_block"(無効なブロックだけを落として処理を続ける)から選べます。thinking-binding-controls-2026-08-01ベータヘッダーを付けるとレスポンスにinput_transformations配列が加わり、どのブロックがどの理由で落とされたかを確認できます。古いアカウントでも今のうちにこのヘッダーを付けてdrop_blockの挙動を検証しておくと、検査が既定で有効になった後の切り替えに備えられます
常にオンの新モデルではthinking: {"type": "disabled"}も拒否されます。Fable 5・Mythos 5系で思考を止められない理由は、この既定オン設計の裏返しです。思考テキストを表に出したくないだけなら、無効化ではなくdisplay: "omitted"を使います。
なぜAnthropicはトークン予算から手を引いたのか
budget_tokensによる固定予算は、開発者がタスクの難度をあらかじめ正確に見積もれることを前提にした設計です。実際には見積もりは難しく、簡単な質問にも大きな予算を割り当てて思考させ、コストを膨らませるケースが多く出ていたと読めます。adaptive thinkingとeffortの組み合わせは、深さの決定権をモデル自身に渡し、開発者側の制御を「トークン数」から「タスクの性質を表す5段階のラベル」へ移す設計です。
固定予算からの脱却は、モデルが自分の答えの難度をある程度自己申告できるようになったことの裏返しでもあります。難しい問題には長く、簡単な問題には短く思考を配分する判断を、外部のパラメータ調整ではなくモデル自身の推論ループに組み込んだ格好です。ただし判断の主導権を手放すぶん、レイテンシの予測可能性は下がります。厳密なレイテンシSLAを持つ実装では、effortを固定して振れ幅を抑える運用が必要になります。
まとめ
新しいモデル(Fable 5.1・Mythos 5.1・Fable 5・Mythos 5・Opus 5・Sonnet 5・Opus 4.8・Opus 4.7)を使うなら、adaptive thinking一択です。そもそもbudget_tokensを送る選択肢がありません。Haiku 4.5・Sonnet 4.5・Opus 4.5を使い続けているなら、extended thinkingのままbudget_tokensで運用します。Opus 4.6とSonnet 4.6だけが両方のtypeを受け付ける移行期のモデルで、enabledはまだ動きますが非推奨です。新しいモデルへの切り替えを計画しているなら、budget_tokensを外してeffortに置き換える作業だけでなく、思考がスキップされる場合がある点とキャッシュへの影響も合わせて確認しておく必要があります。より広いOpus 4.x世代からの移行手順(モデルIDの書き換えやトークナイザーの増分)は、この記事の範囲外です。