目次
Claudeの「思考(thinking)」まわりの仕様は、この1年で大きく形を変えた。かつての拡張思考(extended thinking)は「思考に使うトークン量を人間が指定する」方式だったが、現行世代では適応的思考(adaptive thinking)——考えるかどうか・どれだけ深く考えるかをモデル自身が決める方式——に置き換わった。さらに Claude Opus 5 では思考が既定でONになり、「何も指定しなければ思考なし」という前提すら過去のものになっている。
この記事では、拡張思考と適応的思考は何がどう違うのか、モデルごとに挙動がどう異なるのか、そしてコード移行時に踏みやすい落とし穴(400エラー・出力切れ・課金の増加)を、Anthropic公式ドキュメントに基づいて整理する。
「人間が深さを決める」から「モデルが決める」へ
思考仕様の世代交代を3ステップで
1. 思考(thinking)とは何か
思考とは、Claudeが最終回答を書き始める前に、自分の言葉で問題を解きほぐす工程のことだ。問いを言い直し、複数のアプローチを試し、途中結果を検証し、筋の悪い道を捨てる——その過程が thinking コンテンツブロックとして回答の前に生成される。数学・コーディング・分析・長時間のエージェント作業など、「途中の作業の質」が答えの質を決めるタスクで効果が大きい。
ただしタダではない。Anthropic公式ドキュメント「Thinking」が明記するとおり、思考に使ったトークンは出力トークンとして課金され、max_tokens にも算入される。思考テキストが返ってこない設定でも課金は同じだ(第6章)。つまり思考の設計は、品質の話であると同時にコストとレイテンシの話でもある。
2. 拡張思考の時代——budget_tokensで深さを指定
最初に導入されたのが拡張思考(extended thinking)だ。リクエストに thinking: {"type": "enabled", "budget_tokens": N} を付けると、Claudeはその予算を目安に考えてから回答する。「どれだけ考えるか」を人間が毎回指定する方式で、公式ドキュメントによればルールは次のとおり。
- 最小1,024トークン。それ未満はAPIがエラーで拒否する
max_tokensより小さくする。思考もmax_tokensに数えられるため、回答の分を残す必要がある- 予算は厳密な上限ではなく目安。実際の使用量はタスク次第で、予算を使い切る前に考え終わることも多い
- 32,000超の思考予算はタイムアウトの恐れがあるため、公式はバッチ処理を推奨
この方式の問題は素直で、適切な予算はタスクごとに違うのに、人間が事前に当てられないことだ。簡単な質問にも指定した予算ぶんの思考コストがかかりうるし、逆に難問には予算が足りない。予算値を変えるとプロンプトキャッシュも無効化される(公式が実測例つきで説明している)。
3. 適応的思考への転換——モデルが自分で決める
そこで2026年に登場したのが適応的思考(adaptive thinking)だ。指定は thinking: {"type": "adaptive"} の一行だけ。考えるかどうか、どれだけ深く考えるかは、リクエストの難しさを見てClaudeが自分で決める。簡単な入力なら思考をスキップして即答し、難問には深く潜る。
移行は公式ドキュメント「Extended thinking」に明記されたスケジュールで進んだ。Claude Opus 4.6 / Sonnet 4.6 で budget_tokens が非推奨になり(動作はする)、Claude Opus 4.7 以降のモデルでは 400 エラーで拒否される。旧コードをそのまま新モデルに向けると、次のエラーで止まる。
# 旧: 拡張思考(Opus 4.7以降では 400 エラー) "thinking": {"type": "enabled", "budget_tokens": 10000} → 400: "thinking.type.enabled" is not supported ... # 新: 適応的思考(深さは effort で指定) "thinking": {"type": "adaptive"}, "output_config": {"effort": "high"}
書き換え自体は小さい——budget_tokens を消して adaptive にし、深さの調整は effort に任せる。ただし公式が注意するとおり、これは構文だけでなく挙動の変化だ。固定予算では毎回必ず考えていたのに対し、適応的思考では低い effort 設定だと簡単な入力で思考をスキップすることがある。
4. モデル別の思考の扱い早見表
ややこしいのは、「既定でONかどうか」「OFFにできるかどうか」がモデルごとに違うことだ。公式ドキュメントの記載を1枚にまとめる。
| モデル | 何も指定しないと | 思考OFF(disabled) | budget_tokens |
|---|---|---|---|
| Claude Fable 5 / Mythos 5 | 思考ON(常時) | 不可(400) | 不可(400) |
| Claude Opus 5 | 思考ON(adaptive) | effort high 以下でのみ可 xhigh / max との併用は 400 |
不可(400) |
| Claude Sonnet 5 | 思考ON(adaptive) | 可 | 不可(400) |
| Claude Opus 4.8 / 4.7 | 思考なし(adaptive を明示して有効化) |
可 | 不可(400) |
| Claude Opus 4.6 / Sonnet 4.6 | 思考なし(adaptive を明示して有効化) |
可 | 非推奨(動作はする) |
| Sonnet 4.5 / Haiku 4.5 など旧世代 | 思考なし | —(そもそも既定OFF) | 必須(唯一の思考方式。adaptive は 400) |
出典:Anthropic「Thinking」・「Extended thinking」(2026年8月時点)
実務上の要点は2つ。①Opus 5 世代から「既定=思考ON」に反転した——Opus 4.8 で思考OFFのまま安く回していた処理をモデルIDだけ変えると、思考ぶん出力トークンが増えて回答が max_tokens で切れたり請求が増えたりする(Opus 5の破壊的変更の解説で詳述)。②旧世代だけが budget_tokens を使い続ける——Sonnet 4.5 以前を使う限りは移行不要で、新モデルに乗り換えるときにまとめて書き換えればよい。
5. 深さの調整はeffortで
「予算」が消えた代わりに、思考の深さは output_config: {"effort": ...} で調整する。low / medium / high / xhigh / max の5段階で、APIの既定は high。effort は思考の深さだけでなく、ツール呼び出しの統合度や前置きの量などトークン消費全体に効く。
定型処理・分類・サブエージェント。簡単な入力では思考をスキップすることがある=速くて安い
一般作業は high、コーディング・エージェントは xhigh が公式の推奨開始点
正しさがコストより重要な難問向け。常に最良とは限らないので固定しない
effort の5段階の意味・Claude Code 側のスライダー設定・保存方法はeffort(工数)設定の解説記事にまとめてある。なお公式ドキュメントによれば、adaptive モードではeffort の値もプロンプトに描画されるため、変更するとプロンプトキャッシュが無効化される。拡張思考時代の「budget を変えるとキャッシュが飛ぶ」と同じ構図なので、会話の途中で頻繁に切り替えないのが基本だ。
6. 思考は見えなくても課金される——displayの話
思考の「見え方」は display フィールドで制御する。値は2つ。
"summarized"——思考の要約テキストがthinkingブロックに入って返る。Opus 4.6 / Sonnet 4.6 以前の既定"omitted"——thinkingブロックは返るが中身は空文字列。Fable 5 / Mythos 5 / Opus 5 / Sonnet 5 / Opus 4.8 / 4.7 の既定
ここに罠が2つある。第一に、新しいモデルほど既定が「見せない」側なので、ストリーミングでユーザーに推論過程を見せていたアプリを新モデルに移すと、「長い沈黙のあと突然回答が出る」体験に変わる。見せたければ thinking: {"type": "adaptive", "display": "summarized"} を明示する。第二に、display は表示だけの設定で、課金は変わらない。公式は「omitted でも思考トークン全額が課金される。減るのはレイテンシであってコストではない」と明記している。そもそもどの設定でも生の思考過程(raw chain of thought)は返らない——summarized で見えるのは要約だ。
コストの実測方法:思考にいくら使ったかは、レスポンスの usage.output_tokens_details.thinking_tokens で確認できる。ストリーミング時は最後の message_delta イベントにだけ載る。「思考が見えない=使っていない」ではないので、移行後は必ずここを見る。
もうひとつ実務で重要なのがthinkingブロックの取り扱いだ。複数ターンの会話やツール使用時は、前の応答の thinking ブロックを一切書き換えずにそのまま次のリクエストへ渡す。編集すると 400 エラーになる——Claude Code 利用者が遭遇する「invalid signature in thinking block エラー」はまさにこの仕組みに起因する。
7. 思考OFFの落とし穴
「うちは速さ優先だから思考は切りたい」という判断はありうる。ただしOpus 5 で思考を切るのは条件付きだ。公式ドキュメントによれば:
思考OFF + effort low / medium / high
思考OFF + effort xhigh / max(リクエストごとに判定)
切らずに effort を low / medium に下げる
さらに、400 にならず通った場合でも副作用がある。公式は、思考を切った Opus 5 がツール呼び出しを本文テキストとして書いてしまうことがある(ツールは実行されないのに処理は「成功」して見える)、内部XMLタグが出力に漏れることがある、と明記している。エージェントを組んでいるなら思考はONのまま effort を下げるのが安全で、コスト削減効果もほぼ同じ方向に働く。
8. ツールの合間も考える——interleaved thinking
思考は「回答の前に1回」だけではない。interleaved thinking(交互思考)では、Claudeがツール呼び出しの合間にも思考し、ツールの結果を吟味してから次の一手を決める。検索結果を見て計画を修正する、コマンド出力を読んでから次のコマンドを選ぶ——エージェント的な動きの質を支える仕組みだ。
ここにも世代差がある。旧世代の拡張思考では interleaved-thinking-2025-05-14 というベータヘッダを付ける必要があったが、適応的思考では自動で有効になり、ヘッダは不要(公式ドキュメントは「adaptive thinking interleaves automatically」と明記し、移行後はヘッダを外してよいとしている)。適応的思考への移行は、この設定を1つ減らせるという意味でもコードを単純にする。
9. 速さが欲しいときは fast mode
「考える品質は欲しい、でも待ち時間を減らしたい」場合の選択肢が fast mode だ。Claude Code公式ドキュメント「Fast mode」によれば、fast mode は別モデルへの格下げではなく、同じ Claude Opus を速度優先の構成で動かすもの。出力は最大約2.5倍速になり、単価は2倍(Opus 5 / Opus 4.8 とも入力$10/出力$50)になる。対応は Opus 5 と Opus 4.8 のみで、Opus 4.7 の fast mode は2026年7月24日に提供終了した。
CLIで /fast と打つとオン/オフを切り替えられる(VS Code拡張は非対応)。対話的な高速イテレーションではオン、コスト重視の長作業ではオフ、が公式の使い分け。
Claude API 限定で、Amazon Bedrock・Google Cloud・Microsoft Foundry では使えない。速度の切り替えはプロンプトキャッシュを無効化する点にも注意。
思考・effort・fast mode は役割が違う。思考=考えるかどうかの仕組み、effort=どれだけ深く考えるか、fast mode=同じ思考をどれだけ速く出すか。「遅いから思考を切る」の前に、effort を下げる・fast mode を使う、の2枚のカードがあることを覚えておきたい。
まとめ
- 拡張思考(budget_tokens)は旧方式。Opus 4.6 / Sonnet 4.6 で非推奨、Opus 4.7 以降は 400 エラー。旧世代モデル(Sonnet 4.5 / Haiku 4.5 等)では今も唯一の思考方式
- 適応的思考(adaptive)が現行方式。考えるか・どれだけ考えるかはモデルが判断し、深さは
effort(5段階・既定 high)で調整する - Opus 5 / Sonnet 5 / Fable 5 は思考が既定でON。Fable 5 はOFF不可、Opus 5 は effort high 以下でのみOFF可
- 思考は見えなくても課金される。新世代の既定は
display: "omitted"(空の思考ブロック)。実測はusage.output_tokens_details.thinking_tokensで - 思考OFFには副作用(ツール呼び出しのテキスト化・タグ漏れ)。切るより effort を下げるのが安全
- interleaved thinking は adaptive なら自動。ベータヘッダは不要になった
- 速度が要るなら fast mode(約2.5倍速・単価2倍・Opus 5/4.8・Claude Code は
/fast)
FAQ
Q. budget_tokens を指定したら 400 エラーになりました。
A. Opus 4.7 以降のモデル(Opus 5 / Sonnet 5 / Fable 5 含む)は thinking: {"type": "enabled", "budget_tokens": N} を受け付けません。thinking: {"type": "adaptive"} に書き換え、深さの調整は output_config: {"effort": ...} で行ってください。Sonnet 4.5 / Haiku 4.5 など旧世代を使い続ける場合は書き換え不要です。
Q. 適応的思考にしたら回答が途中で切れるようになりました。
A. 思考トークンは max_tokens に算入されます。とくに Opus 5 は思考が既定ONなので、旧モデル向けに max_tokens を小さく絞っていたコードは思考に予算を食われて回答が切れがちです。max_tokens に余裕を持たせるか、effort を下げてください。
Q. 思考の中身が空で返ってきます。壊れていますか?
A. 仕様です。Opus 5 / Sonnet 5 / Fable 5 / Opus 4.8 / 4.7 では display の既定が "omitted"(空の思考ブロック)になっています。要約を見たい場合は thinking: {"type": "adaptive", "display": "summarized"} を明示してください。どちらでも課金額は同じです。
Q. 思考をOFFにすればその分安くなりますか?
A. 思考トークンが減る分は安くなります。ただし Opus 5 では effort xhigh/max と併用できず(400 エラー)、通った場合もツール呼び出しがテキスト化される・内部タグが漏れるといった副作用が公式に報告されています。エージェント用途では思考ONのまま effort を low / medium に下げる方が、安全にコストを削れます。
Q. Claude Code(チャットアプリ)でも思考の設定は要りますか?
A. Claude Code や claude.ai では思考の管理はアプリ側が行うため、APIパラメータの指定は不要です。ユーザーが触れるのは effort(工数)設定と /fast(fast mode の切り替え)の2つで、思考そのものの ON/OFF を意識する必要はありません。
※ 本記事の仕様・数値は、Anthropic公式ドキュメント「Thinking」・「Extended thinking」・Claude Code公式ドキュメント「Fast mode」(いずれも2026年8月時点)に基づく。仕様は変更されることがあるため、実装前に公式ドキュメントで最新の記載を確認してほしい。