一行要約

think はツールを装ったスクラッチパッドで、外部状態を何も変えず「思考をログに追記する」だけだが、ポリシー遵守が重い多段ツール使用では τ-Bench で 54% の相対改善を出した。ただしプロンプトとセットでないと効かない

注意: 原典は 2025-12-15 の更新で「extended thinking の能力が向上したので、ほとんどの場合は専用の think ツールではなく extended thinking を使うことを推奨する」と明記している。

要点

extended thinking との違い

Extended thinking is all about what Claude does before it starts generating a response… The “think” tool is for Claude, once it starts generating a response, to add a step to stop and think. extended thinking は、Claude が応答の生成を始めるに何をするかの話である。一方 「think」ツールは、Claude が応答の生成を始めた後で、立ち止まって考える段階を差し込むためのものである。

タイミング
extended thinking応答の生成を始める前
think ツール応答の生成を始めた後、途中に差し込む追加の思考ステップ

つまり think はツール結果を受け取った直後に効く

ベンチマーク

τ-Bench(airline ドメイン、pass¹)

条件スコア
ベースライン0.370
extended thinking のみ0.412
think ツールのみ0.404
think ツール + 最適化プロンプト0.570相対 54% 改善

この表が示す最重要の知見: think ツールを単に使えるようにしただけでは 0.370 → 0.404 とわずかしか上がらない。プロンプトと組み合わせて初めて 0.570 に跳ねる

Prompting matters significantly on difficult domains. Simply making the “think” tool available might improve performance somewhat, but pairing it with optimized prompting yielded dramatically better results for difficult domains. 難しい領域では、プロンプトの書き方が大きく効く。「think」ツールを使えるようにするだけでも多少は性能が上がるかもしれないが、最適化したプロンプトと組み合わせたとき、難しい領域では劇的に良い結果が得られた

τ-Bench(retail ドメイン、pass¹) — こちらは簡単なドメインで、think ツールのみ(プロンプトなし)で 0.812、ベースライン 0.783、extended thinking 0.770。難しいドメインほどプロンプトの効きが大きい

SWE-Bench — Claude 3.7 Sonnet の SOTA スコア 0.623 に対し、think ツール単独の寄与は平均 1.6%。統計的には有意(t(38.89) = 6.71, p < .001, d = 1.47、n=30 vs n=144)。

一貫性: 改善は pass^k で k=5 まで維持された。エッジケースや異常なシナリオの処理が改善していることを示す。

いつ使うか

  1. ツール出力の解析 — 先行するツール出力を注意深く処理してから進む必要があるとき
  2. ポリシーが重い環境 — 詳細なガイドライン遵守の検証が必要なとき
  3. 逐次的な意思決定 — 各アクションが前の結果に依存し、誤りのコストが高いとき

いつ使わないか

  1. 逐次的でないツール呼び出し — 単発、または相互依存のない並列呼び出し
  2. 単純な指示追従 — 制約が少なく、Claude の既定の振る舞いで足りる場面

実装のベストプラクティス

  1. ドメイン固有の例を添えた戦略的プロンプト — 期待する推論の深さ、指示の分解、決定木、情報の充足チェックを明示する
  2. 長く複雑なガイダンスはツールの description ではなく system prompt に置く(統合が良くなる)

The best part is that adding this tool has minimal downside in terms of performance outcomes. It doesn’t change external behavior unless Claude decides to use it. 最も良い点は、このツールを追加しても性能面での不利がほとんどないことである。Claude が使うと決めない限り、外から見える振る舞いは変わらない。

そのまま使える具体例

ツール定義(τ-Bench 版 — 汎用的な形):

{
  "name": "think",
  "description": "Use the tool to think about something. It will not obtain new information or change the database, but just append the thought to the log. Use it when complex reasoning or some cache memory is needed.",
  "input_schema": {
    "type": "object",
    "properties": {
      "thought": {
        "type": "string",
        "description": "A thought to think about."
      }
    },
    "required": ["thought"]
  }
}

ツール定義(SWE-Bench 版 — description に使いどころの具体例を書き込んでいる):

{
  "name": "think",
  "description": "Use the tool to think about something. It will not obtain new information or make any changes to the repository, but just log the thought. Use it when complex reasoning or brainstorming is needed. For example, if you explore the repo and discover the source of a bug, call this tool to brainstorm several unique ways of fixing the bug, and assess which change(s) are likely to be simplest and most effective. Alternatively, if you receive some test results, call this tool to brainstorm ways to fix the failing tests.",
  "input_schema": {
    "type": "object",
    "properties": {
      "thought": {
        "type": "string",
        "description": "Your thoughts."
      }
    },
    "required": ["thought"]
  }
}

最適化プロンプト(これが 0.404 → 0.570 の差を生んだ部分):

## Using the think tool
 
Before taking any action or responding to the user after receiving tool results, use the think tool as a scratchpad to:
- List the specific rules that apply to the current request
- Check if all required information is collected
- Verify that the planned action complies with all policies
- Iterate over tool results for correctness
 
Here are some examples of what to iterate over inside the think tool:
<think_tool_example_1>
User wants to cancel flight ABC123
- Need to verify: user ID, reservation ID, reason
- Check cancellation rules:
  * Is it within 24h of booking?
  * If not, check ticket class and insurance
- Verify no segments flown or are in the past
- Plan: collect missing info, verify rules, get confirmation
</think_tool_example_1>
 
<think_tool_example_2>
User wants to book 3 tickets to NYC with 2 checked bags each
- Need user ID to check:
  * Membership tier for baggage allowance
  * Which payments methods exist in profile
- Baggage calculation:
  * Economy class × 3 passengers
  * If regular member: 1 free bag each → 3 extra bags = $150
  * If silver member: 2 free bags each → 0 extra bags = $0
  * If gold member: 3 free bags each → 0 extra bags = $0
- Payment rules to verify:
  * Max 1 travel certificate, 1 credit card, 3 gift cards
  * All payment methods must be in profile
  * Travel certificate remainder goes to waste
- Plan:
1. Get user ID
2. Verify membership level for bag fees
3. Check which payment methods in profile and if their combination is allowed
4. Calculate total: ticket price + any bag fees
5. Get explicit confirmation for booking
</think_tool_example_2>

原典で言及されている関連文書

未取得の派生リンク