Claude Interleaved Thinking完全解説:ツール呼び出しの合間に思考を挟む高精度エージェント設計
2025年5月22日betaリリースのInterleaved Thinkingを解説。従来の拡張思考との違い、マルチステップエージェントでの精度向上の仕組み、Adaptive思考とeffortへの移行方法を網羅。
TL;DR
- 従来: 思考してからツールを呼ぶ(1回だけ考える)
- Interleaved Thinking: ツール結果を受け取った後にも思考してから次の判断(ステップごとに考える)
- 現行モデルでは
thinking: {"type": "adaptive"}を指定すれば自動で交互に思考します。betaヘッダーは不要です budget_tokensは Opus 4.7 以降のモデルでは 400エラーになります。深さの指定はoutput_config.effortへ移行しました
概要
Interleaved Thinking は、2025年5月22日にbetaとして公開された拡張思考の機能です。
従来の拡張思考は「最初に1回だけ深く考えてから処理を始める」設計でしたが、Interleaved Thinkingはツール呼び出しとツール結果の間にも思考ブロックを挟みます。これにより、各ステップの結果を踏まえた適切な次手を考えられるようになります。
現在この挙動は Adaptive思考(thinking: {"type": "adaptive"})に統合され、専用のbetaヘッダーを指定しなくても自動的に有効になります。
従来との比較
通常の拡張思考
[考える] → [ツール呼び出し] → [ツール結果] → [ツール呼び出し] → [ツール結果] → [回答]
↑ここだけ
Interleaved Thinking
[考える] → [ツール呼び出し] → [ツール結果] → [考える] → [ツール呼び出し] → [ツール結果] → [考える] → [回答]
↑ ↑ ↑
毎ステップで考える
ツール結果を受け取るたびに状況を再評価するため、複数のツールを組み合わせる複雑なタスクで特に効果が出ます。
基本的な使い方
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=16000,
# adaptive を指定すると交互思考が自動で有効になる
thinking={"type": "adaptive"},
output_config={"effort": "high"},
tools=[
{
"name": "search_web",
"description": "Webを検索して最新情報を取得します",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "検索クエリ"}
},
"required": ["query"]
}
},
{
"name": "analyze_data",
"description": "データを分析して洞察を生成します",
"input_schema": {
"type": "object",
"properties": {
"data": {"type": "string", "description": "分析対象データ"}
},
"required": ["data"]
}
},
],
messages=[{"role": "user", "content": "2026年のAI業界トレンドを調査してまとめてください"}],
)
client.beta.messages.create と betas=["interleaved-thinking-2025-05-14"] を使う必要はありません。現行モデルではこのヘッダーは無視されます。
レスポンスの構造
交互思考が働くと、レスポンスに thinking ブロックが複数含まれます:
# レスポンスのcontent例
[
{"type": "thinking", "thinking": "まず最新のAIトレンドを調べよう..."},
{"type": "tool_use", "name": "search_web", "input": {"query": "AI industry trends 2026"}},
# ↓ tool_resultを受け取った後
{"type": "thinking", "thinking": "検索結果を見ると生成AIの台頭が顕著だ。次は..."},
{"type": "tool_use", "name": "analyze_data", "input": {"data": "..."}},
{"type": "thinking", "thinking": "分析結果から投資家向けの要点をまとめると..."},
{"type": "text", "text": "## 2026年AI業界トレンド サマリー..."}
]
Opus 4.7以降のモデルでは、思考の中身は既定で返りません(thinking が空文字列になります)。推論過程を画面に出したい場合は display を明示します。
thinking={"type": "adaptive", "display": "summarized"}
display は表示の可否だけを制御するもので、思考自体はどの設定でも行われ、同じように課金されます。
budget_tokens からの移行
| モデル | thinking.budget_tokens |
|---|---|
| Claude Opus 4.5 / Sonnet 4.5 以前 | 従来どおり必要(最低1,024トークン) |
| Claude Opus 4.6 / Sonnet 4.6 | 非推奨。動作はする |
| Claude Opus 4.7 以降(Opus 4.8 / Opus 5 / Sonnet 5 / Fable 5) | 400エラー |
移行の手順は3つだけです。
budget_tokensを削除するthinking: {"type": "adaptive"}を指定する- 深さは
output_config: {"effort": ...}で指定する
# 旧
thinking={"type": "enabled", "budget_tokens": 10000}
# 新
thinking={"type": "adaptive"}
output_config={"effort": "high"}
effort の設定指針
effort は low / medium / high / xhigh / max の5段階で、既定は high です。
| タスクの複雑さ | 推奨 effort |
|---|---|
| 2〜3ステップの単純なツール使用 | low 〜 medium |
| 5〜10ステップの中程度のタスク | high |
| 10ステップ超の複雑なリサーチ・コーディング | xhigh |
| 正しさがコストより重要な場面 | max |
エージェント用途では xhigh が実用的な既定値です。逆にサブエージェントや単純な分類では low に下げると、ツール呼び出しがまとまり前置きも短くなります。Haiku 4.5 は effort に対応していません。
プロンプトキャッシュとの組み合わせ
思考ブロックもプロンプトキャッシュの対象になります。長時間のエージェントセッションで同じシステムプロンプトとツール定義を使う場合は、ttl を明示した1時間キャッシュが効果的です。
"cache_control": {"type": "ephemeral", "ttl": "1h"}
ただし会話の途中で effort を変えるとメッセージ側のキャッシュは無効になります。エージェントのフェーズごとに effort を切り替える設計では、この再書き込みコストを見込んでおいてください。
活用シーン
| シーン | 効果 |
|---|---|
| 競合調査エージェント | 複数ソースを検索→各結果を評価→比較分析を段階的に深掘り |
| コードデバッグエージェント | テスト実行→エラー解析→修正→再テストの各ステップで的確な判断 |
| データパイプライン | データ取得→クリーニング→分析→可視化を柔軟に組み合わせ |