Claude Sonnet 5 を API で動かす - adaptive thinking と effort パラメータの実装
Anthropic は 2026年6月30日に Claude Sonnet 5(モデルID claude-sonnet-5)を公開した。Sonnet ティアでありながらコーディング・エージェント用途で従来の Opus 相当に迫る品質、というのが売り文句で、7月現在は 2026年8月31日まで有効な導入価格(入力 $2 / 出力 $10 per MTok、通常は $3 / $15)が適用されている。
この記事では、Sonnet 5 の API 面で 4.6 世代から変わった 2 点 — thinking パラメータの扱いと effort パラメータ — をエンジニア視点で整理し、実際に手元で動かして挙動を確かめる。
背景: 4.6 世代からの API の変化
Sonnet 5 は Opus 4.7 / 4.8 と同じリクエスト面に揃えられた。既存の Sonnet 4.6 向けコードをそのまま移すと引っかかる点が 2 つある。
1. 手動の extended thinking が廃止された。 従来の thinking={"type": "enabled", "budget_tokens": N} は Sonnet 5 では 400 エラーになる。4.6 では非推奨ながら動いていたが、Sonnet 5 では完全に使えない。代わりに adaptive thinking(thinking={"type": "adaptive"})を使い、思考の深さは effort パラメータで制御する。
さらに、thinking フィールドを省略した場合の既定挙動が変わった。Sonnet 4.6 は「省略=思考なし」だったが、Sonnet 5 は「省略=adaptive thinking が有効」になる。思考を止めたいなら thinking={"type": "disabled"} を明示する必要がある。
2. 非デフォルトのサンプリングパラメータが拒否される。 temperature / top_p / top_k に非デフォルト値を渡すと 400 エラーになる。出力のばらつきはプロンプトで制御する方針に変わった。
effort パラメータは output_config の中に入れる。low / medium / high / xhigh / max の 5 段階で、Claude API では既定値が high。Sonnet ティアで xhigh が使えるのは Sonnet 5 が初めてで、難しいコーディング・エージェント用途向けの推奨設定とされている。
実際に試す
前提
- Python 3.10 以上
anthropicSDK v0.69.0 以上(pip install -U anthropicで最新化。本稿は 0.69.0 で確認)- Anthropic の API キー
API キーは Anthropic Console の「API Keys」から発行し、環境変数に設定しておく。
1 | |
1. 基本呼び出し(adaptive thinking + effort)
まずは adaptive thinking を有効にし、思考の要約を表示する最小構成。display="summarized" を指定しないと thinking ブロックの本文は空文字列になる点に注意(既定は "omitted")。
1 | |
期待される出力(要約や表現は実行ごとに変わる):
1 | |
response.model が claude-sonnet-5 を返し、stop_reason が end_turn になっていれば正常。
2. thinking を明示的に無効化する
思考を止めたい(レイテンシ重視の)ケースでは、Sonnet 4.6 と違って省略では不十分で、disabled を明示する。
1 | |
thinking ブロックが返らず、テキストのみが即座に返る。
3. やってはいけない例(400 になる呼び出し)
以下は Sonnet 5 では 400 エラーになる。エラーの型を実際に確認しておくと移行時のデバッグが楽になる。
1 | |
同様に temperature=0.7 など非デフォルトのサンプリングパラメータを渡しても 400 になる。移行時はこの 2 点をまず外す。
4. トークン数を数え直す
Sonnet 5 は Opus 4.7 世代の新しいトークナイザを使っており、同じテキストでも Sonnet 4.6 比でおよそ 30% 多くトークンを消費する。max_tokens の上限やコスト試算を Sonnet 4.6 のまま流用すると出力が途中で切れることがある。count_tokens で数え直しておく。
1 | |
count_tokens エンドポイントはモデル固有なので、必ず実際に使うモデルID(claude-sonnet-5)を渡すこと。他社のトークナイザ(tiktoken 等)での概算は Claude では大きくずれる。
まとめ
Sonnet 5 への移行で押さえるべき API の要点は次の 3 つ。
thinking={"type": "adaptive"}を使う(budget_tokensは 400)。思考を止めるならdisabledを明示する(省略では adaptive が有効になる)。temperature/top_p/top_kの非デフォルト値は渡さない。- effort は
output_config={"effort": ...}に入れ、難しいコーディング用途ではxhighを検討する。新トークナイザ分、max_tokensとコスト試算は再計測する。
導入価格が有効な 8月31日までは、Sonnet 5 を実ワークロードで試すコストが低い。手元のパイプラインを 1 リクエストだけ差し替えて挙動を確かめるところから始めるとよい。
参照
- Models overview(モデルID・価格・仕様): https://platform.claude.com/docs/en/about-claude/models/overview
- Adaptive thinking: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking
- Effort パラメータ: https://platform.claude.com/docs/en/build-with-claude/effort