Claude Sonnet 5の適応型思考(Adaptive Thinking)とEffortパラメータでトークンコストを最適化する

2026年のAIフロンティアモデル市場で新たな標準となったClaude Sonnet 5は、前世代(Claude Sonnet 4.6)とAPIのリクエスト/レスポンス構造が同一のドロップイン・アップグレードだが、思考(Thinking)の制御方式に関しては従来とまったく異なる。Claude Sonnet 4.6まで使われていた手動の拡張思考(thinking: { type: "enabled", budget_tokens: N })はSonnet 5では完全に廃止され、400エラーを返すようになった。代わりに、デフォルトで有効化されている**適応型思考(Adaptive Thinking)**とoutput_config.effortパラメータによって、思考の深さ・トークン消費量を制御する。
本ガイドでは、Claude Sonnet 5 APIにおけるthinking: { type: "adaptive" } + effortの組み合わせによる制御構造、新しいトークナイザーがトークンコストの算定に与える影響、そしてプロダクションパイプラインでリクエスト単位のコストを最適化する実践パターンを解説する。
要点まとめ
- Claude Sonnet 5は、リクエストで
thinkingフィールドを省略するとデフォルトで適応型思考が有効化された状態で動作する(Sonnet 4.6まではこれとは逆で、デフォルトは無効だった)。無効にしたい場合はthinking: { type: "disabled" }を明示的に指定する必要がある。- 思考の深さは、もはや
budget_tokensの整数値ではなく、output_config: { effort: "low" | "medium" | "high" | "xhigh" | "max" }というレベルで制御する。デフォルト値はhigh。temperature/top_p/top_kをデフォルト値以外に設定すると400エラーが返される — これはSonnet 4.6にはなかった新しい制約だ。- Sonnet 5は新しいトークナイザーを採用しており、同一のテキストがSonnet 4.6と比べて約30%多いトークン数として計算される。料金はトークン単価ではなく、トークン数自体が増える形でコストに影響する。
- 導入価格として入力$2 / 出力$10(100万トークンあたり)が2026年8月31日まで適用され、その後は標準価格の**$3 / $15**に切り替わる。
Claude Sonnet 5 の思考制御アーキテクチャ
| パラメータ / モード | effort: "low" |
effort: "high"(デフォルト) |
effort: "xhigh" |
|---|---|---|---|
| 適用ユースケース | 単純な分類、チャットボット応答、高頻度・低遅延リクエスト | 複雑な推論、難易度の高いコーディング問題、エージェント型タスク | 30分以上かかる長時間のコーディング/エージェント型タスク |
| 思考方式 | ほとんどのリクエストで適応型思考が省略される | 必要な場合に適応型思考が発動 | より深く、より頻繁な思考 |
| 速度/コスト特性 | 最も高速かつ低コスト | バランス型(パラメータ省略時と同じ挙動) | トークン消費が大幅に増加 |
effortを明示しない場合はhighと同じ挙動になる。maxはトークン消費に制限を設けず最高性能を発揮するレベルで、本当に難易度の高い問題にのみ使用する。
Claude Sonnet 5 API呼び出しの実践コード
Node.js / TypeScript環境でAnthropic SDKを使い、effortをタスクの難易度に応じて動的に調整する実践コードだ。Sonnet 4.6以前で使っていたthinking.budget_tokensをそのまま流用すると400エラーになる — マイグレーション時には必ず以下のように書き換える必要がある。
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
type Effort = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
async function runAdaptiveThinking(prompt: string, effort: Effort) {
const response = await anthropic.messages.create({
model: 'claude-sonnet-5',
max_tokens: 8192,
// Sonnet 4.6まで使われていた { type: 'enabled', budget_tokens: N } は
// Sonnet 5では廃止され、400エラーを返す。無効にしたい場合のみ明示すればよく、
// 省略すると適応型思考がデフォルトで有効な状態で動作する。
thinking: { type: 'adaptive' },
output_config: { effort },
messages: [
{
role: 'user',
content: prompt,
},
],
});
for (const block of response.content) {
if (block.type === 'thinking') {
console.log('[Claude Sonnet 5 Thinking]:', block.thinking);
} else if (block.type === 'text') {
console.log('[Claude Sonnet 5 Response]:', block.text);
}
}
}
// 単純なタスクは low、複雑なリファクタリング/エージェント型タスクは xhigh
await runAdaptiveThinking('이 JSON을 스키마에 맞게 정규화해줘', 'low');
await runAdaptiveThinking('이 레포의 순환 의존성을 찾아서 리팩토링 계획을 세워줘', 'xhigh');
思考を完全にオフにしたいリクエスト(レイテンシが絶対的に重要な単純な応答)にはthinking: { type: 'disabled' }を明示する。temperatureやtop_pも併せて調整したくなるかもしれないが、Sonnet 5ではデフォルト値以外のサンプリングパラメータを送った瞬間に400エラーになるため、トーンの調整はシステムプロンプトの指示で代替する必要がある。
新しいトークナイザーとプロダクションのコスト最適化戦略
- トークンの再計測(Recount, Don’t Reuse):
Sonnet 4.6基準で測定しておいたトークン数/予算をそのまま再利用してはいけない。同一テキストが新しいトークナイザーでは約30%多いトークン数としてカウントされるため、
max_tokensを含むトークン予算関連のすべての値をToken Counting APIで改めて再計測する必要がある。 - Effortの動的ルーティング(Task Complexity Router):
ユーザーのリクエストやコード変更件数の複雑度を測定し、
effortの値を自動的にマッピングする。高頻度・単純な応答はlowでコストを抑え、エージェント型コーディングや深い分析にはxhighに昇格させる。 - プロンプトキャッシング(Prompt Caching):
大規模なコードベースやライブラリの型定義をSystem Promptとして渡す際は、
cache_control: { type: "ephemeral" }を指定することで、キャッシュヒット時に最大90%のトークン割引を受けられる。ただし、同一の会話内でeffortの値を変更するとキャッシュされたプレフィックスが無効化されるため、セッション開始時に決めたeffortはそのセッション内で維持したほうがキャッシュヒット率の観点で有利だ。 - 導入価格期間の活用: 2026年8月31日までは、入力$2 / 出力$10(100万トークンあたり)の導入価格が適用される。その後は標準価格の$3 / $15に切り替わるため、大規模なマイグレーションテストやバックフィル作業はこの期間内にまとめて処理したほうがコスト面で有利だ。
Claude Sonnet 5の適応型思考とeffortパラメータをプロダクションシステムに合わせて適切にルーティングすれば、Sonnet 4.6と比べて増加したトークン単価の負担を相殺しつつ、予測可能なパイプラインコストを維持できる。