個人でニュース選定/要約アプリを作っていて、記事の関連度判定・分類を claude -p のサブプロセスにやらせている。
使うモデルを Sonnet 4.6 から 5 に上げたら、記事数はほぼ同じなのにトークン消費とコストが跳ね上がった。
原因を追ったのでメモしておく。
3行まとめ
- モデルを Sonnet 4.6 → 5 に変えたら消費トークンが約3倍になった
- Claude Code CLI の
--effortデフォルト(xhigh) × Sonnet 5 の adaptive thinking(デフォルトON)の組み合わせが原因だった模様 --effort mediumを明示指定することで解決した
症状(Before / After)
| 実行 | 選定対象記事数 | 選出 | 入力合計 | 出力 | コスト |
|---|---|---|---|---|---|
| Before A (4.6) | 132 | 52 | 34,808 | 10,409 | $0.32 |
| Before B (4.6) | 151 | 51 | 35,934 | 9,641 | $0.32 |
| After (Sonnet 5) | 153 | 51 | 119,551 | 29,622 | $0.84 |
記事数はほぼ同じ(132/151/153)なのに、入力 3.4x / 出力 3x / コスト 2.6x。プロンプト本文の増加では説明がつかない。
原因
ふたつの挙動が噛み合っていた。
- Claude Code CLI の
--effortデフォルトはxhigh - Sonnet 5 は
thinking未指定でも adaptive thinking がデフォルトでON(4.6 は “未指定=thinking OFF”)
この2つが組み合わさって thinking が非決定的に暴発していた模様。
公式ドキュメントにも「high(デフォルト)/xhigh/max ではほぼ必ず deep thinking する」とある。
対策
--effort medium を明示する。
- Sonnet 5 の
mediumは 4.6 のhigh相当、今回の用途にはたぶんこれで十分 - effort は低いほど厳密に守られる特性があるので、
mediumで thinking の暴発がほぼ止まる想定
効果
| 実行 | effort | 出力 | 備考 |
|---|---|---|---|
| xhigh(デフォルト) | xhigh | 20,632〜26,955 | thinking暴発あり |
| medium 指定 | medium | 8,931 | 4.6相当に回帰 |
少し実験した感じ、記事選定結果もほぼ変わらなかった。
教訓
- モデル変更は thinking のデフォルト挙動を変えてくるので、出力結果だけみてOKと思っていると、裏でコストが静かに倍増している可能性がある
- タスクによってちょうどよい effort を探るのは大事
リファレンス
- Sonnet 5.0はApaptive Thinkingがデフォルト有効
Migration guide
Guide for migrating to the latest Claude models from previous Claude versions
Claude Platform Docs
- Sonnet 5.0のeffort medium は4.6のhigh相当
Effort
Control how many tokens Claude uses when responding with the effort parameter, trading off between response thoroughness and token efficiency.
Claude Platform Docs