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〜maxの段階指定。xhighは対応モデルのみ)です。
固定予算なら毎回思考しますが、adaptive thinkingはeffortが低めのとき、簡単な入力で思考そのものをスキップすることがあります。thinking blockの形式やdisplayによる表示制御、ツール呼び出しとの絡み方は、どちらのモードでも共通です。違うのは「深さをどう指定するか」と「その設定をモデルが受け付けるか」の2点です。
モデルごとの対応表 — どちらのモードが使えるか
現行モデルと直近の旧世代で、対応するthinkingタイプ・既定値・400で拒否される設定を並べます。
| モデル | 対応するthinkingタイプ | 既定値 | 400で拒否される設定 |
|---|---|---|---|
| Claude Opus 5.5 | 対応するthinkingタイプAdaptiveのみ | 既定値常時オン | 400で拒否される設定enabled / disabled / between_tools |
| 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.5 | 対応するthinkingタイプAdaptiveのみ | 既定値オン | 400で拒否される設定enabled / disabled(代替はbetween_tools。high以下のeffortのみ) |
| 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つです。新世代はadaptive一択で、そもそも選択肢がありません。対象はFable 5.1・5、Mythos 5.1・5、Opus 5.5・5・4.8・4.7、Sonnet 5.5・5です。両方のtypeを受け付けるのはOpus 4.6・Sonnet 4.6・Mythos Previewだけです。このうちOpus 4.6とSonnet 4.6では、enabledは動きますが非推奨です。Opus 4.5・Haiku 4.5・Sonnet 4.5はextended thinkingしか実装されていません。adaptiveを送ると「adaptive thinking is not supported」エラーになります。コストや速度を優先してHaiku 4.5・Sonnet 4.5を使い続けている実装は、意図せず対象外です。
400エラーが出たときの切り分け
エラー文言から原因のモデルと直し方に戻れます。
thinking周りの400エラー5種
thinking.type.enabled is not supported
enabledを廃止したモデル(表でenabledが拒否されている行)にbudget_tokens付きで送った場合です。thinking: {"type": "adaptive"}にして、深さをoutput_config.effortで指定します。adaptive thinking is not supported on this model
Opus 4.5・Sonnet 4.5・Haiku 4.5のようにextended thinkingだけのモデルに
adaptiveを送った場合です。enabledとbudget_tokensに戻します。thinking.type.between_tools is not supported
between_toolsを受け付けるのはSonnet 5.5だけです。ほかのモデルではthinkingを省くか、表で拒否されていない値を使います。output_config.effort 'xhigh' is not supported when thinking is disabled
Sonnet 5.5に
between_toolsをxhighかmaxのeffortで送った場合です。リクエストが"disabled"でなくても、最初にまとめて考える段階が無いためこの文言になります。effortをhigh以下にするか、thinkingを省いてadaptiveで動かします。effort cannot change when thinking is disabled on this model
Sonnet 5.5で
between_toolsの間に、メッセージ単位のoutput_config.effortを直前までの値から変えた場合です。effortを固定するか、thinkingを省いてadaptiveに切り替えます。
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の既定値と同じなので、省略しても挙動は変わりません。ただしOpus 5.5の既定はmediumで、省略するとhighより一段低い設定で動きます。effortパラメータの使い分けは5段階それぞれの用途が異なるため、budget_tokensの数値をそのままeffortのどこかに機械的に対応させることはできません。予算の大小ではなく、タスクの性質で選び直す作業になります。出発点はモデルごとに異なり、Opus 4.8・4.7のコーディング用途ではxhigh、Fable 5.1・Opus 5ではhigh、Sonnet 5.5のエージェント用途ではmediumです。
旧来のextended thinking側には、書き換え前に守る決まりがあります。budget_tokensは1,024以上で、max_tokens未満でなければなりません。思考トークンもmax_tokensの枠に入るからです。例外はinterleaved thinkingで、予算が複数の思考ブロックをまたぐためmax_tokensを超えられます。
実際に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フィールドが空文字で返ります。空でもブロックは完結していて、signatureに思考が入っています。要約テキストが欲しいときは"summarized"を明示します。
切り替えると構文以外に何が変わるか
budget_tokensをeffortに置き換える作業は構文の書き換えに見えますが、実際には挙動が変わります。
- 思考が毎回走るとは限らない: 固定予算なら常に思考しますが、adaptive thinkingは簡単と判断した入力で思考をスキップします。thinking blockが一部のターンで出ない現象は不具合ではなく、この判断の結果です。もっと考えさせたいときは
effortを上げるか、プロンプトで誘導します interleaved-thinking-2025-05-14ベータヘッダーが不要になる: adaptive thinkingはツール呼び出しの間の思考を自動でinterleaveします。Claude APIではこれらのモデルでヘッダーが無視されるので、移行後は外せます- thinking blockの保持ルールが変わる: Opus 4.5以降のOpus、Sonnet 4.6以降のSonnet、Fable / Mythosクラス全体は、前ターンのthinking blockを既定でコンテキストに保持します。保持ぶんは入力トークンとして課金され、ツール結果と一緒にキャッシュもされます。Sonnet 4.5・Haiku 4.5までの全Haiku・それ以前のOpus / Sonnetは直近ターンぶんしか保持せず、古いブロックを送り返してもAPIが自動で取り除きます
- モード切り替え自体がキャッシュを無効化する:
typeをenabledからadaptiveに変える、あるいはbudget_tokensやeffortの値を変えるだけでも、その回のリクエストからキャッシュのブレークポイントが外れます。パラメータを既定値のまま明示しても、省略と同じ扱いで無効化されません - 強制ツール呼び出しの可否が入れ替わる:
tool_choice: {"type": "any"}や{"type": "tool", ...}は、手動のextended thinkingとは併用できません。adaptive thinkingでは使えます。ただしOpus 5.5・Sonnet 5.5・Fable 5.1・Mythos 5.1の4モデルは例外で、どちらのモードでも強制ツール呼び出しを400で拒否します。この4モデルで特定のツールを必ず呼ばせたい場合は、tool_choice: {"type": "auto"}と厳格なツール定義(strict tool use)や構造化出力を組み合わせます - サンプリングパラメータの制約範囲が広がる: Fable/MythosクラスとOpus 5.5・5・4.8・4.7、Sonnet 5.5・5では、
temperature/top_p/top_kを既定値以外にすると、思考の有無を問わず400エラーです。旧世代では思考が有効な間だけ制約がかかり、top_pは0.95〜1の範囲のみ許容されます - 会話の追記専用ルールが加わる: Fable 5.1・Mythos 5.1以降では、送り返したthinking blockの署名(
signature)をAPIが検査します。それ以前のsystemプロンプト・tools・メッセージ列と一致しているかを見ます。システムプロンプトの書き換えや古いターンの編集・削除をすると、それ以降のthinking blockがまとめて無効になります。指示の追加は会話途中のシステムメッセージで行い、履歴は常に末尾へ追記します。Sonnet 5.5の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"を使います。
二択に収まらない2つの例外 — Sonnet 5.5とOpus 4.5
adaptiveとextendedの二択で整理すると、2つのモデルが取りこぼされます。
Sonnet 5.5にはthinking: {"type": "between_tools"}という第三の値があります。最初にまとめて考える段階を切り、ツール呼び出しの間の思考だけを残す設定で、Sonnet 5.5での思考の最低設定にあたります。disabledが400になるこのモデルで思考を絞る手段はこれです。high以下のeffortでしか動かず、xhighやmaxでは400になります。しかもbetween_toolsの間は、メッセージ単位のoutput_config.effortで途中からレベルを変えることもできません。ターンごとにeffortを変えたいなら、adaptive thinkingを使います。
Opus 4.5はextended thinking専用なのに、effortを受け付ける唯一のモデルです。adaptiveは400になりますが、effortはbudget_tokensと組み合わせて効きます。Opus 4.5ではeffortが応答全体を、budget_tokensが思考の深さを決めるため、両方を設定します。
budget_tokensによる予算指定は、上の表ではMythos Preview、Opus 4.6、Sonnet 4.6、Opus 4.5、Sonnet 4.5、Haiku 4.5が受け付けます。表にない旧Claude 4系(Opus 4.1、Sonnet 4、Opus 4)は、extended thinkingのみ対応です。
まとめ
新しいモデルを使うなら、budget_tokensを外してadaptiveとeffortで制御します。Haiku 4.5・Sonnet 4.5・Opus 4.5を使い続ける間は、extended thinkingのままbudget_tokensで運用します。切り替える前に、思考がスキップされる場合がある点とキャッシュが一度無効になる点を、あらかじめ織り込んでおくと安全です。モデルIDの書き換えやトークナイザーの増分まで含めた移行は、モデル移行ガイドにあります。