| 項目 | 適用可否 | 説明 |
|---|---|---|
| thinkツールの定義 | 可能 | Claude Codeでカスタムツールとして定義可能 |
| 拡張思考(Extended Thinking) | 可能 | Claude Code CLIで--thinkingフラグで有効化可能 |
| システムプロンプトでの指示 | 部分的 | CLAUDE.mdやカスタム指示で類似の効果を実現可能 |
| τ-Benchベンチマーク | 参考情報 | Claude Codeでの直接実行は対象外だが、設計思想は適用可能 |
| ドメイン固有のプロンプト例 | 適用推奨 | 複雑なタスクでの明示的な思考ステップ指示に有効 |
結論: Claude Code CLIユーザーは、(1) カスタムツールとしてthinkツールを定義する、(2) CLAUDE.mdに思考ステップの指示を記載する、(3) 複雑なタスクで--thinkingフラグを使用する、といった方法で本記事の知見を活用できます。
概要
Anthropicは、複雑な問題解決タスク中にClaudeが一時停止して振り返ることを可能にする「think」ツールを導入しました。この手法は、応答生成の前ではなく、応答生成の途中で機能するという点で、拡張思考(Extended Thinking)とは異なります。
拡張思考との主な違い
thinkツールはツール出力を処理するためのインライン推論メカニズムとして機能しますが、拡張思考は応答前の熟考として動作します。記事では次のように述べています:
「拡張思考は、Claudeが応答の生成を開始する前に行うことすべてに関するものです」
一方、thinkツールはClaudeが「ワークフローの途中で立ち止まって考えるステップを追加する」ことを可能にします。
パフォーマンス結果
τ-Bench評価(航空会社ドメイン)
| 構成 | k=1 | k=2 | k=3 | k=4 | k=5 |
|---|---|---|---|---|---|
| thinkツール + プロンプト | 0.584 | 0.444 | 0.384 | 0.356 | 0.340 |
| thinkツール単体 | 0.404 | 0.254 | 0.186 | 0.140 | 0.100 |
| 拡張思考 | 0.412 | 0.290 | 0.232 | 0.192 | 0.160 |
| ベースライン | 0.332 | 0.206 | 0.148 | 0.116 | 0.100 |
重要な発見: thinkツールと最適化されたプロンプトの組み合わせは、pass¹メトリックで0.570を達成し、ベースラインの0.370と比較して54%の相対的改善を実現しました。
τ-Bench評価(小売ドメイン)
| 構成 | k=1 | k=2 | k=3 | k=4 | k=5 |
|---|---|---|---|---|---|
| thinkツール(プロンプトなし) | 0.812 | 0.735 | 0.685 | 0.650 | 0.626 |
| 拡張思考 | 0.770 | 0.681 | 0.623 | 0.581 | 0.548 |
| ベースライン | 0.783 | 0.695 | 0.643 | 0.607 | 0.583 |
SWE-Bench結果
- サンプルサイズ: n=30(thinkツールあり)、n=144(なし)
- 性能向上: 平均1.6%の改善
- 統計的有意性: Welchのt検定: t(38.89) = 6.71, p < .001, d = 1.47
実装仕様
τ-Bench形式でのthinkツール定義
{
"name": "think",
"description": "何かについて考えるためのツール。新しい情報を取得したりデータベースを変更したりせず、思考をログに追加するだけです。複雑な推論やキャッシュメモリが必要な場合に使用します。",
"input_schema": {
"type": "object",
"properties": {
"thought": {
"type": "string",
"description": "考える思考内容。"
}
},
"required": ["thought"]
}
}
SWE-Bench用thinkツール定義
{
"name": "think",
"description": "何かについて考えるためのツール。新しい情報を取得したりリポジトリに変更を加えたりせず、思考をログに記録するだけです。複雑な推論やブレインストーミングが必要な場合に使用します。",
"input_schema": {
"type": "object",
"properties": {
"thought": {
"type": "string",
"description": "あなたの思考。"
}
},
"required": ["thought"]
}
}
推奨される使用ケース
- ツール出力の分析 - アクションを実行する前に、以前の結果を処理・検証する
- ポリシーが多い環境 - 複雑なガイドラインへの準拠を確認する
- 逐次的な意思決定 - エラーが蓄積するマルチステップタスクを処理する
最適化されたプロンプト例(航空会社ドメイン)
記事では、詳細なシステムプロンプトテンプレートが提供されています:
## thinkツールの使用方法
アクションを実行したり、ツール結果を受け取った後にユーザーに応答する前に、
thinkツールをスクラッチパッドとして使用して以下を行います:
- 現在のリクエストに適用される具体的なルールをリストアップ
- 必要な情報がすべて収集されているか確認
- 計画されたアクションがすべてのポリシーに準拠しているか検証
- ツール結果の正確性を反復確認
thinkツール内で反復する内容の例を以下に示します:
<think_tool_example_1>
ユーザーがフライトABC123をキャンセルしたい
- 確認が必要: ユーザーID、予約ID、理由
- キャンセルルールを確認:
* 予約から24時間以内か?
* そうでない場合、チケットクラスと保険を確認
- フライト済みまたは過去のセグメントがないことを確認
- 計画: 不足情報を収集、ルールを確認、確認を取得
</think_tool_example_1>
<think_tool_example_2>
ユーザーがNYC行きのチケット3枚を各2個の預け荷物で予約したい
- 以下を確認するためにユーザーIDが必要:
* 荷物許容量に対する会員ティア
* プロフィールに存在する支払い方法
- 荷物計算:
* エコノミークラス × 3名の乗客
* 一般会員の場合: 各1個無料 → 追加3個 = $150
* シルバー会員の場合: 各2個無料 → 追加0個 = $0
* ゴールド会員の場合: 各3個無料 → 追加0個 = $0
- 確認する支払いルール:
* 最大1枚のトラベル証明書、1枚のクレジットカード、3枚のギフトカード
* すべての支払い方法はプロフィールに登録されている必要がある
* トラベル証明書の残額は無効になる
- 計画:
1. ユーザーIDを取得
2. 荷物料金の会員レベルを確認
3. プロフィールの支払い方法とその組み合わせが許可されているか確認
4. 合計を計算: チケット価格 + 荷物料金
5. 予約の明示的な確認を取得
</think_tool_example_2>
ベストプラクティス
1. ドメイン固有の例を用いた戦略的プロンプティング
記事では、以下を含む明確な指示を提供することを推奨しています:
- 推論に期待される詳細レベル
- 複雑な指示を実行可能なステップに分解
- 一般的なシナリオに対する決定木
- 情報の完全性を検証する方法
2. 複雑なガイダンスはシステムプロンプトに配置
ガイダンスでは、広範なツール指示はツールの説明内ではなくシステムプロンプト内で機能することが多いと述べており、より広いコンテキスト統合を提供します。
使用すべきでない場合
記事では、thinkツールが価値を追加しないシナリオを明示的に特定しています:
- 非逐次的なツール呼び出し - 単一または並列の呼び出し
- シンプルな指示の遂行 - 複雑な制約がないタスク
主要な技術的区別
| 特徴 | thinkツール | 拡張思考 |
|---|---|---|
| 動作タイミング | 応答生成中 | 応答生成前 |
| 最適な用途 | ツール呼び出しの長いチェーン、ポリシーが多い環境 | 非逐次的なツール呼び出し、単純な指示遂行 |
| 追加コスト | ツール呼び出しのオーバーヘッド | 思考トークンのコスト |
実装ロードマップ
推奨されるアプローチは3つのフェーズで構成されます:
- ポリシー準拠が現在苦労している、挑戦的なエージェントシナリオでテスト
- ドメインに関連する例を含むカスタマイズされたツール定義を追加
- 使用パターンを監視し、プロンプトを反復的に改善
統計的コンテキスト
記事では、単一試行の成功ではなく、顧客サービスアプリケーションにおける信頼性の重要性を反映して、「pass@k」ではなく「pass^k」メトリックを通じて一貫性を測定することを強調しています。
原文
- 公開日: 2025年3月20日
- 更新日: 2025年12月15日
- 出典: Anthropic Engineering Blog