拡張思考(Extended Thinking)─ モデルが考えてから答える仕組み
結論から言うと、拡張思考(Extended Thinking)を使うと、モデルは答えを書く前に「頭の中で整理する時間」を確保できる。これにより数学的推論・論理的分析・複数ステップを要するタスクなどで精度が向上するとされる。APIに thinking パラメータを追加するだけで利用でき、思考の過程を「thinking ブロック」として受け取ることもできる。
なぜ「考えてから答える」と精度が上がるのか?
2022年のChain-of-Thought(CoT)研究(Wei ら)は、LLMが中間的な推論ステップを出力するだけで、複雑な問題の精度が大幅に向上することを示した。540億パラメータのモデルに8例のCoTプロンプトを与えるだけで、数学的推論ベンチマーク(GSM8K)でファインチューニングされたGPT-3を上回ったという(ただし、モデルや設定による差は大きい)。
拡張思考はその延長線上にある。CoTがプロンプトの中に推論ステップを書くのに対し、拡張思考ではモデルが内部で推論を行い、その内容をAPIレスポンスの「thinkingブロック」として受け取れる点が異なる。
使い方:budget_tokens を設定するだけ
APIで thinking パラメータに type: "enabled" と budget_tokens を指定する。budget_tokens は内部推論に使える最大トークン数だ。
{
"model": "claude-sonnet-4-6",
"max_tokens": 16000,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [{ "role": "user", "content": "複雑な問いかけ..." }]
}
レスポンスには thinking ブロック(推論過程)と text ブロック(最終回答)が含まれる。思考の中身を確認することで、エージェントがどのように推論したかをデバッグできる。
エージェントで使うときの注意点
拡張思考をエージェントのツール使用ループで使う場合、以下の制約がある(Anthropic公式ドキュメント参照)。
- ツール選択は
tool_choice: autoのみ対応 - ツール結果を返す際、元の
thinkingブロックをそのまま含める必要がある - モデルによって対応状況が異なる:Claude Opus 4.5 / Haiku 4.5 は
budget_tokensで手動設定、Claude Sonnet 4.6 以降は常時オンの「適応思考(Adaptive Thinking)」を使う
コストの面では、表示を省略(display: "omitted")にしても内部でフルに思考トークンが使われるため料金がかかる。タスクの複雑さに応じて budget_tokens を調整し、シンプルなタスクには通常モードを使い分けるのが賢明だ。
「思考ブロック」はデバッグに役立つ
通常の推論では最終回答しか返ってこないため、なぜその答えに至ったかが見えにくい。拡張思考では thinking ブロックに推論の道筋が入るため、エージェントが誤った方向に進んだときに「どこで考え方がずれたか」を追える。これはエージェントの改善サイクルをより速くする。
まとめ
拡張思考は「考える時間を与える」機能で、特に数学・論理・多段階推論など複雑なタスクでの精度向上が期待できるとされる。budget_tokens 一つで有効になる手軽さが魅力だが、トークンコストも増えるため用途を選ぶ必要がある。エージェントのデバッグにも活用でき、モデルが何を考えていたかを「thinking ブロック」で確認できる点が特に実用的だ。