Claudeの「思考(thinking)」まわりの仕様は、この1年で大きく形を変えた。かつての拡張思考(extended thinking)は「思考に使うトークン量を人間が指定する」方式だったが、現行世代では適応的思考(adaptive thinking)——考えるかどうか・どれだけ深く考えるかをモデル自身が決める方式——に置き換わった。さらに Claude Opus 5 では思考が既定でONになり、「何も指定しなければ思考なし」という前提すら過去のものになっている。

この記事では、拡張思考と適応的思考は何がどう違うのか、モデルごとに挙動がどう異なるのか、そしてコード移行時に踏みやすい落とし穴(400エラー・出力切れ・課金の増加)を、Anthropic公式ドキュメントに基づいて整理する。

THINKING: EXTENDED → ADAPTIVE

「人間が深さを決める」から「モデルが決める」へ

思考仕様の世代交代を3ステップで

拡張思考(旧)
budget_tokens: 10000
思考トークン量を人間が指定
適応的思考(現行)
type: "adaptive"
考えるか・どれだけかはモデルが判断
Opus 5 以降
思考が既定でON
深さは effort で調整する時代に
出典:Anthropic公式ドキュメント「Thinking」「Extended thinking」(2026年8月時点)

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 は思考の深さだけでなく、ツール呼び出しの統合度や前置きの量などトークン消費全体に効く。

low / medium

定型処理・分類・サブエージェント。簡単な入力では思考をスキップすることがある=速くて安い

high(既定)〜 xhigh

一般作業は high、コーディング・エージェントは xhigh が公式の推奨開始点

max

正しさがコストより重要な難問向け。常に最良とは限らないので固定しない

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

❌ 400 エラー

思考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日に提供終了した。

Claude Code では /fast

CLIで /fast と打つとオン/オフを切り替えられる(VS Code拡張は非対応)。対話的な高速イテレーションではオン、コスト重視の長作業ではオフ、が公式の使い分け。

API ではリサーチプレビュー

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月時点)に基づく。仕様は変更されることがあるため、実装前に公式ドキュメントで最新の記載を確認してほしい。