简打卡
51.76M · 2026-03-28
随着我们持续增强 Claude 的复杂问题解决能力,我们发现了一种特别有效的方法:创建一个 "think" 工具,为结构化思考在复杂任务中提供专用空间。
这种简单而强大的技术——正如我们将在下面解释的,它与 Claude 新的"扩展思考"能力不同——已经在 Claude 的智能体工具使用能力方面带来了显著改进。这包括遵循策略、做出一致决策以及处理多步骤问题,所有这些都只需要最少的实现开销。
在本文中,我们将探讨如何在不同应用中实现 "think" 工具,基于经过验证的基准测试结果分享开发者的实用指导。
通过 "think" 工具,我们赋予 Claude 包含额外思考步骤的能力——拥有自己的专用空间——作为得出最终答案的一部分。
虽然听起来与扩展思考类似,但这是一个不同的概念:
扩展思考:关注 Claude 在开始生成响应之前所做的事情。通过扩展思考,Claude 在采取行动之前深入考虑并迭代其计划。
"think" 工具:让 Claude 在开始生成响应后,添加一个步骤来停下来思考它是否拥有继续前进所需的所有信息。这在执行长链工具调用或与用户进行长时间多步骤对话时特别有用。
这使得 "think" 工具更适合 Claude 无法仅从用户查询中获得制定响应所需的所有信息,并且需要处理外部信息(例如工具调用结果中的信息)的情况。Claude 使用 "think" 工具执行的推理不如扩展思考所能获得的那样全面,更专注于模型发现的新信息。
扩展思考 vs Think 工具
| 维度 | 扩展思考 | Think 工具 |
|---|---|---|
| 触发时机 | 响应生成前 | 响应生成过程中 |
| 主要用途 | 深度规划和迭代方案 | 处理新获取的外部信息 |
| 推理深度 | 更全面、更深入 | 聚焦于新信息的处理 |
| 适用场景 | 简单工具调用、编码、数学 | 长链工具调用、策略遵循 |
| 信息依赖 | 基于初始查询 | 需要工具输出的外部信息 |
我们建议在以下场景使用扩展思考:
"think" 工具更适合以下情况:
使用场景决策
graph TD
A{任务类型?} --> B[单次工具调用]
A --> C[多步骤工具链]
A --> D[策略遵循任务]
A --> E[简单指令]
B --> F[推荐:扩展思考]
E --> F
C --> G{需要分析工具输出?}
G -->|是| H[推荐:Think 工具]
G -->|否| F
D --> I{策略复杂?}
I -->|高| J[推荐:Think + 提示词]
I -->|中| H
I -->|低| F
style H fill:#90EE90
style J fill:#FFD700
style F fill:#87CEEB
以下是来自 τ-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"]
}
}
Think 工具工作流程
graph TD
A[用户发起请求] --> B[Claude 开始生成响应]
B --> C[执行工具调用]
C --> D[接收工具输出]
D --> E{需要验证/推理?}
E -->|是| F[调用 think 工具]
F --> G[结构化思考]
G --> H[记录思考内容]
H --> I[验证信息完整性]
I --> J[检查策略合规性]
J --> K{满足条件?}
K -->|否| C
K -->|是| L[继续执行或响应用户]
E -->|否| L
L --> M[完成任务]
我们使用 τ-bench(tau-bench)评估了 "think" 工具,这是一个全面的基准测试,旨在测试模型在真实客户服务场景中使用工具的能力,其中 "think" 工具是评估标准环境的一部分。
τ-bench 评估 Claude 的能力:
τ-bench 使用的主要评估指标是 pass^k,它衡量对于给定任务,所有 k 次独立任务试验都成功的概率,并在所有任务中取平均值。与其他 LLM 评估中常见的 pass@k 指标(衡量 k 次试验中至少有一次成功)不同,pass^k 评估一致性和可靠性——这是客户服务应用中至关重要的品质,其中一致地遵守策略至关重要。
评估指标对比
| 指标 | pass@k | pass^k |
|---|---|---|
| 定义 | k次试验中至少1次成功 | k次试验全部成功 |
| 衡量重点 | 能力上限 | 一致性和可靠性 |
| 计算方式 | 任意成功即可 | 必须全部成功 |
| 适用场景 | 代码生成、创意任务 | 客户服务、策略遵循 |
| 对错误容忍 | 高容忍 | 零容忍 |
我们的评估比较了几种不同的配置:
结果显示,当 Claude 3.7 在基准测试的"航空"和"零售"客户服务领域有效使用 "think" 工具时,性能有了显著改进:

| 配置 | 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 |
注:分数为比例值
航空领域性能提升
graph LR
A[基线<br/>0.332] -->|+21.7%| B[扩展思考<br/>0.412]
A -->|+21.7%| C[Think 工具<br/>0.404]
A -->|+75.9%| D[Think + 提示词<br/>0.584]
style D fill:#90EE90
style A fill:#FFB6C6
航空领域的最佳性能是通过将 "think" 工具与优化提示词配对实现的,该提示词提供了分析客户请求时使用的推理方法示例。以下是优化提示词的示例:
## 使用 think 工具
在接收到工具结果后采取任何行动或响应用户之前,使用 think 工具作为草稿板:
- 列出适用于当前请求的特定规则
- 检查是否收集了所有必需信息
- 验证计划的行动是否符合所有策略
- 迭代检查工具结果的正确性
以下是在 think 工具内迭代的一些示例:
<think_tool_example_1>
用户想取消航班 ABC123
- 需要验证:用户ID、预订ID、原因
- 检查取消规则:
* 是否在预订后24小时内?
* 如果不是,检查票类和保险
- 验证没有已飞行或过去的航段
- 计划:收集缺失信息、验证规则、获取确认
</think_tool_example_1>
<think_tool_example_2>
用户想预订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>
优化提示词的作用机制
graph TD
Root((优化提示词))
Root --> A[示例驱动学习]
Root --> B[结构化指导]
Root --> C[领域特定知识]
A --> A1[真实场景案例]
A --> A2[具体推理步骤]
B --> B1[检查清单]
B --> B2[验证流程]
C --> C1[航空策略规则]
C --> C2[会员等级体系]
C --> C3[支付方式限制]
特别有趣的是不同方法的比较结果:
这可能是由于基准测试的航空策略部分具有高度复杂性,模型从给出如何"思考"的示例中获益最多。
在零售领域,我们还测试了各种配置以了解每种方法的具体影响。
| 配置 | 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 |
注:分数为比例值
即使没有额外的提示,"think" 工具也达到了 0.812 的最高 pass^1 分数。零售策略明显比航空领域更容易导航,Claude 仅通过拥有思考空间就能够改进,无需进一步指导。
不同领域的复杂度对比
| 领域特征 | 航空领域 | 零售领域 |
|---|---|---|
| 策略复杂度 | 高(需要示例指导) | 中等(自然改进) |
| 基线性能 | 0.332 | 0.783 |
| Think工具提升 | +75.9%(需提示) | +3.7%(无需提示) |
| 是否需要优化提示 | 是,显著影响 | 否,可选 |
我们的详细分析揭示了几种模式,可以帮助你有效实现 "think" 工具:
提示在困难领域中非常重要
跨试验的一致性改进
在评估 Claude 3.7 Sonnet 时,我们的 SWE-bench 设置中添加了类似的 "think" 工具,为实现 0.623 的最先进分数做出了贡献。适配的 "think" 工具定义如下:
{
"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"]
}
}
我们的实验(使用 "think" 工具的 n=30 个样本,不使用的 n=144 个样本)显示,包含此工具的孤立效果平均提高了 1.6% 的性能(Welch's t-test: t(38.89) = 6.71, p < .001, d = 1.47)。
SWE-Bench 统计结果
| 指标 | 值 | 含义 |
|---|---|---|
| 平均提升 | +1.6% | 显著改进 |
| t 值 | 6.71 | 高统计显著性 |
| p 值 | < .001 | 极显著 |
| 效应量 d | 1.47 | 大效应 |
| 样本量(有think) | 30 | 实验组 |
| 样本量(无think) | 144 | 对照组 |
基于这些评估结果,我们确定了 Claude 从 "think" 工具中获益最多的特定场景:
工具输出分析
策略密集环境
顺序决策制定
适用场景总览
graph TD
Think((Think 工具<br/>最佳场景))
Think --> A[工具输出分析]
Think --> B[策略密集环境]
Think --> C[顺序决策]
A --> A1[处理复杂输出]
A --> A2[可能需要回溯]
B --> B1[详细指南]
B --> B2[合规验证]
C --> C1[步骤依赖]
C --> C2[错误代价高]
为了充分利用 Claude 的 "think" 工具,我们根据 τ-bench 实验推荐以下实施实践。
最有效的方法是提供关于何时以及如何使用 "think" 工具的清晰说明。提供针对特定用例的示例可以显著改善模型使用 "think" 工具的效果:
我们发现,当指导较长和/或复杂时,将关于 "think" 工具的说明包含在系统提示中比将其放在工具描述本身中更有效。这种方法提供了更广泛的上下文,并帮助模型更好地将思考过程整合到其整体行为中。
提示词放置策略
| 放置位置 | 系统提示 | 工具描述 |
|---|---|---|
| 适用内容 | 长指导、复杂规则、示例 | 简短功能说明 |
| 上下文范围 | 全局、整体行为 | 局部、工具特定 |
| 推荐度 | ⭐⭐⭐⭐⭐ 复杂场景 | ⭐⭐⭐ 简单说明 |
虽然 "think" 工具可以提供实质性改进,但它并不适用于所有工具使用用例,并且确实会增加提示长度和输出令牌的成本。具体而言,我们发现在以下用例中 "think" 工具不会提供任何改进:
非顺序工具调用
简单指令遵循
成本收益分析
graph TD
A[考虑使用 Think] --> B{任务复杂度}
B -->|高| C{多步骤?}
B -->|低| D[成本 > 收益]
D --> E[不推荐使用]
C -->|是| F{策略密集?}
C -->|否| D
F -->|是| G[收益 > 成本]
F -->|否| H{需要工具输出分析?}
G --> I[强烈推荐]
H -->|是| J[推荐使用]
H -->|否| D
style I fill:#FFD700
style J fill:#90EE90
style E fill:#FFB6C6
"think" 工具是对 Claude 实现的直接添加,只需几个步骤即可产生有意义的改进:
使用智能体工具使用场景进行测试
添加工具定义
监控和优化
添加此工具在性能结果方面的负面影响很小:
实施流程
sequenceDiagram
participant Dev as 开发者
participant System as 系统集成
participant Claude as Claude 模型
participant Monitor as 监控系统
Dev->>System: 1. 添加 Think 工具定义
Dev->>System: 2. 配置系统提示(含示例)
System->>Claude: 3. 部署到生产环境
Claude->>Claude: 4. 在需要时自主调用
Claude->>Monitor: 5. 记录思考过程
Monitor->>Dev: 6. 性能反馈
Dev->>System: 7. 优化提示词
我们的研究表明,"think" 工具可以显著增强 Claude 3.7 Sonnet 在需要策略遵守和长链工具调用推理的复杂任务上的性能¹。"Think" 不是一个适用于所有情况的解决方案,但它为正确的用例提供了实质性好处,所有这些都只需要最少的实现复杂性。
我们期待看到你将如何使用 "think" 工具与 Claude 一起构建更强大、更可靠和更透明的 AI 系统。
¹ 虽然我们的 τ-Bench 结果专注于使用 "think" 工具的 Claude 3.7 Sonnet 的改进,但我们的实验表明,Claude 3.5 Sonnet(新版)也能够使用与 3.7 Sonnet 相同的配置实现性能提升,表明这种改进可以推广到其他 Claude 模型。
技术创新
性能突破
最佳实践
适用场景
实施建议
原文作者: Anthropic Engineering Team