Sonnet 5 / Opus 4.8 の思考は effort で制御する — 手動 thinking budget の廃止と adaptive thinking 移行の実務

Claude Sonnet 5 / Opus 4.8 / Opus 4.7 / Fable 5 では、手動の extended thinking(thinking: {type: enabled, budget_tokens: N})が廃止され、指定すると 400 エラーになります。代わりに adaptive thinking(Claude が複雑さに応じて思考量を自動判断)+ effort パラメータ(low〜max のソフト指定)で推論深度を制御します。ただし既定は非対称で、Sonnet 5 は思考オン、Opus 4.8 は明示的に adaptive を指定しないと思考オフ。さらに temperature/top_p/top_k は非既定値だと 400、thinking.display は omitted が既定に変わりました。本記事では、この移行の破壊的変更と、effort を使った推論コストの制御を実装目線で整理します。

Claude Sonnet 5 / Opus 4.8 では、思考(extended thinking)の制御方法が刷新されました。従来の手動 thinking budget(thinking: {type: "enabled", budget_tokens: N})は廃止され、指定すると 400 エラーになります。代わりに adaptive thinking(Claude が複雑さに応じて思考量を自動判断)+ effort パラメータ(lowmax のソフト指定)で推論深度を制御します。しかも既定が非対称で、移行時にハマりどころがいくつかある。本記事では、この破壊的変更と、effort を使った推論コストの制御を実装目線で整理します。これは Opus/Sonnet を定額枠で使い倒すうえでの配分戦略の続きでもあります。

到達点

  • 手動 thinking budget の廃止(400 化)と対象モデルを把握する
  • Sonnet 5 と Opus 4.8 の既定の非対称性(思考オン/オフ)を押さえる
  • effort パラメータ(low〜max)で推論深度を制御する
  • 移行時の 3 つの落とし穴(sampling 固定・display 既定変更・課金)
  • effort と max_tokens推論コストを制御する

何が変わったか

手動 thinking budget が使えなくなりました。

// これは Sonnet 5 / Opus 4.8 / Opus 4.7 / Fable 5 で 400 エラー
{
  "thinking": { "type": "enabled", "budget_tokens": 8000 }
}

代わりに adaptive thinking を使います。Claude がリクエストごとの複雑さを見て、思考するか・どれだけ思考するかを自動で決めるモードです。

{
  "thinking": { "type": "adaptive" }
}

固定予算を手で刻むより、簡単な要求と難しい要求が混在するワークロードやエージェント作業で性能が出やすいとされています。beta ヘッダは不要です。

モデル手動 enabledadaptive
Sonnet 5 / Opus 4.8 / Opus 4.7 / Fable 5 / Mythos 5400 エラー対応
Opus 4.6 / Sonnet 4.6使えるが非推奨(deprecated)対応
Sonnet 4.5 / Opus 4.5 以前これのみ非対応

落とし穴 1:既定が非対称

ここが最大のハマりどころです。Sonnet 5 と Opus 4.8 で「思考の既定」が逆です。

モデル既定の思考意味
Sonnet 5オン(adaptive が既定)thinking を省くと思考する。切るなら {type: "disabled"} を明示
Opus 4.8 / 4.7オフ{type: "adaptive"}明示しないと思考しない(adaptive が唯一のモードだが既定オフ)

つまり Opus 4.8 を「賢いから」と選んでも、thinking: {type: "adaptive"} を付け忘れると思考なしで走ります。逆に Sonnet 5 は黙っていても思考する。「上位モデルなのに浅い」と感じたら、まず adaptive を明示しているか確認してください。

effort で推論深度を制御する

adaptive thinking は、effort パラメータで「どれだけ思考させるか」をソフトに誘導できます。output_config.effort に設定します。

{
  "thinking": { "type": "adaptive" },
  "output_config": { "effort": "medium" }
}
effort挙動
max制約なしで常に思考(全 adaptive 対応モデル)
xhigh常に深く探索(Fable 5 / Mythos 5 / Opus 4.8 / Opus 4.7 / Sonnet 5)
high(既定)ほぼ常に思考。複雑タスクで深い推論
medium中程度。単純な質問では思考を省くことも
low思考を最小化。速度優先で単純タスクは省く

effort はコストのつまみでもあります。思考トークンは出力トークンとして課金され、max_tokens を食います。high / max では思考が深くなり、max_tokens を使い切って stop_reason: "max_tokens" になりやすい。単純タスクを大量に回すなら low / medium に下げてトークンと枠を節約、難所だけ high / xhigh に上げる——という使い分けが効きます。

定額枠での配分と同じ発想です。Opus を要所に——それに加えて、effort でモデル内の思考量も要所に寄せる。二段で無駄な思考を削れます。

落とし穴 2:sampling パラメータの固定

Sonnet 5 / Opus 4.8 / Opus 4.7 / Fable 5 / Mythos 5 は、temperature / top_p / top_k を非既定値にすると 400 エラーです。思考の有無に関係なく、毎リクエスト適用されます。

温度を上げて多様性を出す、といった従来のプロンプト設計はそのまま移せません。サンプリングを弄っていたコードは、まずここで落ちます。移行時は sampling パラメータを既定に戻すのが先決です。

落とし穴 3:display が omitted 既定に

思考の表示も既定が変わりました。Sonnet 5 / Opus 4.8 / Opus 4.7 / Fable 5 / Mythos 5 では、thinking.display の既定が "omitted"(思考ブロックは返るが thinking フィールドは空)です。Opus 4.6 の "summarized" からのサイレントな変更です。

// 思考の要約テキストを見たいなら明示的に指定
{ "thinking": { "type": "adaptive", "display": "summarized" } }

"omitted" の利点はストリーミングの最初のテキストが速く出ること(思考トークンをストリームしない)。ただし——課金は変わりません。omitted でも 思考トークンはフルに課金され、レイテンシが下がるだけです。「見えない=タダ」ではない点に注意。

コスト制御の実務

推論コストを握る変数は 2 つです。

  • max_tokens:出力(思考 + テキスト)のハード上限。思考が食い尽くすと stop_reason: "max_tokens"
  • effort:思考量へのソフト誘導

この 2 つを組み合わせます。実際にどれだけ思考に使われたかは、レスポンスの usage.output_tokens_details.thinking_tokens で見えます。

{
  "usage": {
    "output_tokens": 348,
    "output_tokens_details": { "thinking_tokens": 312 }
  }
}

output_tokens が課金の総計、thinking_tokens はそのうち内部推論に使われた分(観測用)。思考が出力コストを支配していないかを、ここでモニタリングできます。過剰なら effort を下げる、max_tokens を調整する、あるいはプロンプトで思考を抑制する(「単純なら直接答えて」等の一文が効く)。

実務への落とし込み

  1. 手動 budget を adaptive に移行:{type: "enabled", budget_tokens}{type: "adaptive"} に置換。Sonnet 5 / Opus 4.8 では必須(でないと 400)。
  2. Opus 4.8 では adaptive を明示:既定オフなので、思考させたいなら {type: "adaptive"} を付ける。
  3. sampling を既定に戻す:temperature / top_p / top_k を弄っていたら外す(でないと 400)。
  4. effort で深度を配分:大量・単純は low/medium、難所は high/xhigh。思考トークンは出力課金なので、枠にもコストにも直結。
  5. thinking_tokens を監視:思考が出力を食いすぎていないか観測し、effort と max_tokens を調整。

まとめ

Sonnet 5 / Opus 4.8 では、手動 thinking budget が廃止(400)され、adaptive thinking + effort が推論制御の標準になりました。既定は非対称で——Sonnet 5 は思考オン、Opus 4.8 は adaptive を明示しないと思考オフ。加えて sampling パラメータの固定display の omitted 既定化という移行時の破壊的変更があります。

コスト面の勘所は 3 つ — effort で思考量を要所に寄せる(思考トークンは出力課金)、max_tokens で総量を締める、thinking_tokens で実消費を監視する。固定予算を手で刻む時代から、**「モデルに任せて、effort で誘導する」**時代へ。定額枠でも従量でも、この制御を握れるかどうかが、Opus/Sonnet を無駄なく使い切る鍵になります。