Claude API の思考機能には extended thinking(拡張思考)と adaptive thinking(適応型思考)の2種類があります。名称が似ているため混同しやすいですが、設定方法も動作も異なります。

extended thinking とは

extended thinking は、トークン予算を数値で明示する方式です。thinking: {type: "enabled", budget_tokens: N} のように上限トークン数を指定します。

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000,
        "display": "summarized",  # "summarized" または "omitted"
    },
    messages=[{"role": "user", "content": "この数式を証明してください。..."}],
)

display フィールドは思考内容をどう返すかを指定します。"summarized" は要約テキストを返し、"omitted" はストリーミング時の TTFT(最初のトークンまでの時間)を削減しますが、いずれも課金は生成された生の思考トークン全体に対して発生します。

この方式は古いモデル(Opus 4.5 以前)で唯一利用できた方法です。現在は Opus 4.6 / Sonnet 4.6 でも動作しますが、非推奨扱いとなっています。Opus 4.8 / 4.7 では type: "enabled" を指定すると 400 エラーが返ります。

adaptive thinking とは

adaptive thinking は、Claude 自身がリクエストの複雑さに応じて「いつ・どれだけ思考するか」を判断する方式です。thinking: {type: "adaptive"} と指定するだけで有効になります。

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=16000,
    thinking={"type": "adaptive"},
    output_config={"effort": "high"},  # 思考の深さをガイドするオプション
    messages=[{"role": "user", "content": "..."}],
)

adaptive thinking ではインターリーブ思考(ツール呼び出しの間でも思考できる機能)が自動で有効になります。extended thinking でインターリーブを使うにはベータヘッダー interleaved-thinking-2025-05-14 が必要でしたが、adaptive ではその手間が不要です。エージェントがツール結果を受け取ったあと、次のアクションに進む前に再度推論できるため、複数ツールを使うワークフローの品質が向上します。

effort パラメータとの関係

effort パラメータは「adaptive thinking の深さに対するガイド」であり、思考モードそのものではありません。output_config: {"effort": "medium"} のように指定すると、Claude が思考量・ツール呼び出し回数・出力の詳細さを調整します。

budget_tokens が思考だけに影響するのに対し、effort はテキスト出力やツール呼び出し回数も含めたすべてのトークン消費に影響します。effort は adaptive thinking なしでも使えます。

モデル別対応表

モデル extended thinking adaptive thinking
Fable 5 / Mythos 5 ❌(400エラー) ✅ 常にオン
Opus 4.8 / 4.7 ❌(400エラー) ✅(明示設定必要)
Opus 4.6 / Sonnet 4.6 ⚠️ 非推奨・動作する ✅ 推奨
Opus 4.5 以前 ✅(唯一の方法)

Fable 5 / Mythos 5 は「常に思考する」世代であり、thinking: {type: "disabled"} 自体がエラーになります。思考は無効化できず、API の設計上も「思考するかどうか」ではなく「どれくらい思考するか」だけを制御するモデルです。

Opus 4.8 / 4.7 への移行

Opus 4.8 / 4.7 に移行する際は、budget_tokens の指定を削除し、thinking: {type: "adaptive"} に置き換えます。思考の深さを制御したい場合は output_config: {"effort": "xhigh"} などで調整します。合わせて max_tokens も 64,000 以上に引き上げることが推奨されます(xhigh 以上の effort では長い出力が生成される場合があるため)。

まとめ

  • extended thinking:トークン予算を手動指定。古いモデル向け、現在は非推奨
  • adaptive thinking:Claude が自己判断。最新モデルの推奨方式
  • effort:adaptive thinking の深さを制御するガイド。思考以外のトークンにも影響する
  • Opus 4.8 / 4.7 では extended thinking は 400 エラーになるため、adaptive thinking への移行が必須です
  • Fable 5 / Mythos 5 では思考は常にオンで無効化できない