返回 文章 build CMS 文章

Anthropic 的“think”工具:让 Claude 停下来思考,提升复杂任务表现

“think”工具让 Claude 在行动前停下来思考,在复杂工具调用场景中显著提升一致性和可靠性。

Claudethink工具扩展思考工具使用
成长分 / 100 72 综合收获、行动、留存与影响

Anthropic 的“think”工具:让 Claude 停下来思考,提升复杂任务表现
为什么值得读了解“think”工具与扩展思考的区别及适用场景,避免误用。

获取基于 τ-bench 基准测试的实证数据,验证“think”工具的实际效果。

关键洞察
  1. “think”工具在 Claude 生成回复后添加思考步骤,适合需要处理外部信息(如工具调用结果)的场景。
  2. 在 τ-bench 航空领域,结合优化提示的“think”工具在 pass^1 上达到 0.584,显著优于基线 0.332。
  3. 在零售领域,即使无额外提示,“think”工具也达到最高 pass^1 分数 0.812。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:12142

获取开发者新闻通讯

产品更新、操作指南、社区聚焦等。每月发送至您的收件箱。

扩展思考更新

2025年12月15日

自首次发布以来,扩展思考能力已得到改进,因此在大多数情况下,我们建议使用该功能,而不是专用的思考工具。扩展思考提供了类似的好处——为 Claude 提供推理复杂问题的空间——同时具有更好的集成性和性能。有关实现细节,请参阅我们的扩展思考文档。

在我们持续增强 Claude 复杂问题解决能力的过程中,我们发现了一种特别有效的方法:一个“思考”工具,为复杂任务期间的结构化思考创造专用空间。

这种简单而强大的技术——正如我们将在下文解释的,它不同于 Claude 新的“扩展思考”能力(有关扩展思考实现细节,请参见此处)——在 Claude 的代理工具使用能力方面带来了显著改进。这包括遵循策略、做出一致决策以及处理多步骤问题,且实现开销极小。

在本文中,我们将探讨如何在不同应用中实现“思考”工具,并基于已验证的基准结果为开发者分享实用指南。

通过“思考”工具,我们让 Claude 能够在得出最终答案的过程中加入一个额外的思考步骤——并为其提供专属空间。

虽然听起来与扩展思考相似,但这是一个不同的概念。扩展思考关注的是 Claude 在开始生成回复之前所做的事情。借助扩展思考,Claude 在采取行动之前会深入考虑并迭代其计划。“思考”工具则是让 Claude 在开始生成回复后,添加一个步骤来停下来思考它是否拥有继续推进所需的全部信息。这在执行长链工具调用或与用户进行长时间多步骤对话时特别有用。

这使得“思考”工具更适合以下情况:Claude 仅凭用户查询无法获得制定回复所需的全部信息,并且需要处理外部信息(例如工具调用结果中的信息)。Claude 使用“思考”工具进行的推理不如通过扩展思考获得的推理全面,并且更侧重于模型发现的信息。

我们建议在更简单的工具使用场景中使用扩展思考,例如非顺序工具调用或直接遵循指令。当您不需要 Claude 调用工具时,扩展思考也适用于编码、数学和物理等用例。当 Claude 需要调用复杂工具、在长链工具调用中仔细分析工具输出、在具有详细指南且策略繁多的环境中导航,或做出每一步都建立在前一步之上且错误代价高昂的顺序决策时,“思考”工具更为适合。

以下是使用来自 τ-Bench 的标准工具规范格式的示例实现:

{
"name": "think",
"description": "使用该工具来思考某事。它不会获取新信息或更改数据库,只会将思考内容追加到日志中。当需要复杂推理或某种缓存记忆时使用它。",
"input_schema": {
"type": "object",
"properties": {
"thought": {
"type": "string",
"description": "要思考的一个想法。"
}
},
"required": ["thought"]
}
}

我们使用 τ-bench(tau-bench)评估了“think”工具,这是一个全面的基准测试,旨在测试模型在真实客户服务场景中使用工具的能力,其中“think”工具是评估标准环境的一部分。

τ-bench 评估 Claude 的以下能力:

τ-bench 中使用的主要评估指标是 pass^k,它衡量给定任务的所有 k 次独立试验均成功的概率,并在所有任务上取平均值。与其他 LLM 评估中常见的 pass@k 指标(衡量 k 次试验中是否至少有一次成功)不同,pass^k 评估一致性和可靠性——这对于需要始终遵守政策的客户服务应用来说是至关重要的品质。

我们的评估比较了几种不同的配置:

结果显示,当 Claude 3.7 在基准测试的“airline”和“retail”客户服务领域中有效使用“think”工具时,性能有了显著提升:

Claude 3.7 Sonnet 在 Tau-Bench 评估的“Airline”领域上的表现

配置 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

在 airline 领域,最佳表现是通过将“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>

特别有趣的是不同方法的比较。使用带有优化提示的“think”工具,在扩展思考模式(其表现与未提示的“think”工具相似)上取得了显著更好的结果。单独使用“think”工具(无提示)比基线有所提升,但仍未达到优化方法的效果。

“think”工具与优化提示的结合以显著优势提供了最强的性能,这可能是因为基准测试中航空公司政策部分的高度复杂性,模型从获得如何“思考”的示例中获益最多。

在零售领域,我们还测试了各种配置,以了解每种方法的具体影响

Claude 3.7 Sonnet在Tau-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

即使没有额外提示,“think”工具也达到了最高的pass^1分数0.812。零售政策明显比航空公司领域更容易导航,Claude仅通过拥有思考空间而无需进一步指导就能改进。

我们的详细分析揭示了几个可以帮助您有效实施“think”工具的模式:

在评估Claude 3.7 Sonnet时,我们的SWE-bench设置中添加了一个类似的“think”工具,有助于实现0.623的最先进分数。改编后的“think”工具定义如下:

{
"name": "think",
"description": "使用该工具来思考某事。它不会获取新信息,也不会对仓库做任何更改,只会记录思考内容。在需要进行复杂推理或头脑风暴时使用它。例如,如果你探索仓库并发现了某个 bug 的来源,就调用该工具来头脑风暴几种独特的修复该 bug 的方法,并评估哪种(些)改动可能最简单、最有效。或者,如果你收到了一些测试结果,就调用该工具来头脑风暴修复失败测试的方法。",
"input_schema": {
"type": "object",
"properties": {
"thought": {
"type": "string",
"description": "你的想法。"
}
},
"required": ["thought"]
}
}

我们的实验(使用“think”工具的 n=30 个样本,未使用的 n=144 个样本)显示,单独加入该工具的效果是平均性能提升 1.6%(Welch's t-检验:t(38.89) = 6.71,p < .001,d = 1.47)。

基于这些评估结果,我们确定了 Claude 从“think”工具中获益最多的具体场景:

为了在 Claude 中充分利用“think”工具,我们根据 τ-bench 实验推荐以下实施实践。

最有效的方法是提供关于何时以及如何使用“think”工具的清晰说明,例如用于 τ-bench 航空领域的说明。提供针对您特定用例的示例可以显著提高模型使用“think”工具的有效性:

我们发现,当指令较长和/或复杂时,将关于“think”工具的说明包含在系统提示中比放在工具描述本身中更有效。这种方法提供了更广泛的上下文,并帮助模型更好地将思考过程整合到其整体行为中。

尽管“think”工具可以提供显著的改进,但它并不适用于所有工具使用用例,并且确实会带来提示长度和输出令牌增加的成本。具体来说,我们发现“think”工具在以下用例中没有提供任何改进:

“think”工具是对您的 Claude 实施的一个简单补充,只需几个步骤即可产生有意义的改进:

最好的部分是,添加此工具在性能结果方面的缺点最小。除非 Claude 决定使用它,否则它不会改变外部行为,并且不会干扰您现有的工具或工作流程。

我们的研究表明,“think”工具可以显著增强 Claude 3.7 Sonnet 在需要策略遵循和长链工具调用推理的复杂任务上的性能1。“Think”不是一刀切的解决方案,但它在正确的用例中提供了实质性的好处,且实施复杂度极低。

我们期待看到您如何使用“think”工具与 Claude 一起构建更强大、可靠和透明的 AI 系统。

  1. 虽然我们的 τ-Bench 结果侧重于 Claude 3.7 Sonnet 使用“think”工具的改进,但我们的实验表明,Claude 3.5 Sonnet (New) 也能在与 3.7 Sonnet 相同的配置下实现性能提升,这表明这种改进也适用于其他 Claude 模型。

产品更新、操作指南、社区亮点等。每月发送到您的收件箱。