Claude Sonnet 5 / Opus 4.8 では、思考(extended thinking)の制御方法が刷新されました。従来の手動 thinking budget(thinking: {type: "enabled", budget_tokens: N})は廃止され、指定すると 400 エラーになります。代わりに adaptive thinking(Claude が複雑さに応じて思考量を自動判断)+ effort パラメータ(low〜max のソフト指定)で推論深度を制御します。しかも既定が非対称で、移行時にハマりどころがいくつかある。本記事では、この破壊的変更と、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 ヘッダは不要です。
| モデル | 手動 enabled | adaptive |
|---|---|---|
| Sonnet 5 / Opus 4.8 / Opus 4.7 / Fable 5 / Mythos 5 | 400 エラー | 対応 |
| 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 を調整する、あるいはプロンプトで思考を抑制する(「単純なら直接答えて」等の一文が効く)。
実務への落とし込み
- 手動 budget を adaptive に移行:
{type: "enabled", budget_tokens}を{type: "adaptive"}に置換。Sonnet 5 / Opus 4.8 では必須(でないと 400)。 - Opus 4.8 では adaptive を明示:既定オフなので、思考させたいなら
{type: "adaptive"}を付ける。 - sampling を既定に戻す:temperature / top_p / top_k を弄っていたら外す(でないと 400)。
- effort で深度を配分:大量・単純は
low/medium、難所はhigh/xhigh。思考トークンは出力課金なので、枠にもコストにも直結。 - 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 を無駄なく使い切る鍵になります。