“思考” 工具:让 Claude 在复杂工具使用场景中能够停下来思考

115 阅读12分钟

文章翻译自官网:www.anthropic.com/engineering…

“思考” 工具:让 Claude 在复杂工具使用场景中能够停下来思考

发布于 2025 年 3 月 20 日

一种新工具,可提升 Claude 的复杂问题解决能力

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

这种简单却强大的技术 —— 如下文将解释的,它与 Claude 新的 “扩展思考” 功能不同 —— 显著提升了 Claude 的智能体工具使用能力,包括遵循政策、做出一致决策、处理多步骤问题等,且实施成本极低。

在本文中,我们将探讨如何在不同应用中实施 “思考” 工具,并基于经过验证的基准测试结果,为开发者提供实用指导。

什么是 “思考” 工具?

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

虽然听起来与扩展思考类似,但二者概念不同。扩展思考是指 Claude 在开始生成回应之前所做的思考。在扩展思考模式下,Claude 会在采取行动前深入思考并反复推敲计划。而 “思考” 工具则是让 Claude 在开始生成回应后,增加一个停下来思考的步骤,判断自己是否掌握了继续推进所需的全部信息。这在执行一连串工具调用,或与用户进行长时间多步骤对话时尤其有用。

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

我们建议在较简单的工具使用场景中使用扩展思考,例如非序列性工具调用或简单的指令遵循。在不需要 Claude 调用工具的场景(如编程、数学和物理领域),扩展思考也很有用。而 “思考” 工具更适合以下情况:Claude 需要调用复杂工具、在一连串工具调用中仔细分析工具输出、在政策密集且有详细指导方针的环境中操作,或做出顺序性决策(每一步都建立在之前步骤的基础上,且错误代价高昂)。

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

json

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

在 τ-Bench 上的表现

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

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

  • 与模拟用户进行真实对话

  • 始终遵循复杂的客户服务代理政策指南

  • 使用各种工具访问和操作环境数据库

τ-bench 中使用的主要评估指标是 pass^k,它衡量在给定任务中,所有 k 次独立任务试验都成功的概率,并在所有任务中取平均值。与其他大型语言模型评估中常见的 pass@k 指标(衡量 k 次试验中至少有一次成功)不同,pass^k 评估的是一致性和可靠性 —— 这是客户服务应用的关键品质,因为在这些应用中,始终遵循政策至关重要。

性能分析

我们比较了几种不同配置的表现:

  • 基准(无 “思考” 工具,无扩展思考模式)

  • 仅扩展思考模式

  • 仅 “思考” 工具

  • “思考” 工具 + 优化提示(针对航空领域)

结果显示,当 Claude 3.7 在基准测试的 “航空” 和 “零售” 客户服务领域有效使用 “思考” 工具时,表现有显著提升:

  • 航空领域:“思考” 工具 + 优化提示在 pass^1 指标上达到 0.570,而基准仅为 0.370,相对提升 54%;
  • 零售领域:仅 “思考” 工具达到 0.812,基准为 0.783。

image.png

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

以下是 Claude 3.7 Sonnet 在四种不同配置下,在 Tau-Bench 评估的 “航空” 领域的表现:

配置k=1k=2k=3k=4k=5
“思考”+ 提示0.5840.4440.3840.3560.340
“思考”0.4040.2540.1860.1400.100
扩展思考0.4120.2900.2320.1920.160
基准0.3320.2060.1480.1160.100

在航空领域,最佳表现是通过将 “思考” 工具与优化提示相结合实现的。优化提示提供了分析客户请求时可使用的推理方法示例。以下是优化提示的示例:

使用思考工具

在收到工具结果后采取任何行动或回应用户之前,请使用思考工具作为草稿本,完成以下事项:

  • 列出适用于当前请求的具体规则

  • 检查是否已收集所有必要信息

  • 验证计划的行动是否符合所有政策

  • 反复检查工具结果的正确性

以下是一些在思考工具中进行反复思考的示例:
xml

深色版本

<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 美元  
  * 若为金卡会员:每人 3 件免费行李 → 无需额外费用 = 0 美元  
- 需验证的支付规则:  
  * 最多使用 1 张旅行代金券、1 张信用卡、3 张礼品卡  
  * 所有支付方式必须存在于个人资料中  
  * 旅行代金券余额不使用则作废  
- 计划:  
1. 获取用户 ID  
2. 验证会员等级以确定行李费用  
3. 检查个人资料中的支付方式及其组合是否符合规定  
4. 计算总额:机票价格 + 任何行李费用  
5. 获取用户明确的预订确认  
</think_tool_example_2>

特别有趣的是不同方法的对比。“思考” 工具 + 优化提示的结果显著优于扩展思考模式(其表现与未提示的 “思考” 工具相近)。仅使用 “思考” 工具(无提示)的表现优于基准,但仍不及优化后的方法。

“思考” 工具与优化提示的结合带来了显著的最佳表现,这可能是因为基准测试中航空政策部分的复杂性较高,而模型从 “思考” 示例中获益最多。

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

image.png Claude 3.7 Sonnet 在 Tau-Bench 评估的 “零售” 领域中的表现

配置k=1k=2k=3k=4k=5
“思考” 工具 + 无提示0.8120.7350.6850.6500.626
扩展思考0.7700.6810.6230.5810.548
基准0.7830.6950.6430.6070.583

三种不同配置的评估结果。分数为比例值。

即便没有额外提示,“思考” 工具仍取得了最高的 pass^1 分数(0.812)。与航空领域相比,零售领域的政策显然更容易理解,Claude 只需有一个思考的空间,无需进一步指导就能提升表现。

从 τ-Bench 分析中得出的关键见解

我们的详细分析揭示了几个有助于有效实施 “思考” 工具的模式:

  • 在较难的领域中,提示的作用显著。仅仅提供 “思考” 工具可能会在一定程度上提升表现,但将其与优化后的提示相结合,能在较难的领域中带来显著更好的结果。不过,较简单的领域可能仅通过使用 “思考” 工具就会受益。
  • 跨试验的一致性提升。使用 “思考” 工具带来的改进在 pass^k 中持续到 k=5,这表明该工具帮助 Claude 更有效地处理边缘情况和特殊场景。

在 SWE-Bench 上的表现

在评估 Claude 3.7 Sonnet 时,我们在 SWE-Bench 设置中添加了类似的 “思考” 工具,这助力其取得了 0.623 的最先进分数。改编后的 “思考” 工具定义如下:

json

{
  "name": "think",
  "description": "使用该工具进行思考。它不会获取新信息或对代码库做出任何更改,只会记录想法。在需要复杂推理或头脑风暴时使用。例如,如果你浏览代码库后发现了bug的根源,可以调用该工具,针对修复bug的多种独特方法进行头脑风暴,并评估哪些更改可能是最简单且最有效的。或者,如果你收到了一些测试结果,可以调用该工具,针对如何修复失败的测试进行头脑风暴。",
  "input_schema": {
    "type": "object",
    "properties": {
      "thought": {
        "type": "string",
        "description": "你的想法。"
      }
    },
    "required": ["thought"]
  }
}

我们的实验(使用 “思考” 工具的样本 n=30,不使用的样本 n=144)显示,单独使用该工具平均提升了 1.6% 的表现(Welch's t 检验:t (38.89)=6.71,p<.001,d=1.47)。

何时使用 “思考” 工具

根据这些评估结果,我们确定了 Claude 能从 “思考” 工具中获益最多的特定场景:

  • 工具输出分析:当 Claude 需要在采取行动前仔细处理之前工具调用的输出,且可能需要回溯其方法时;
  • 政策密集型环境:当 Claude 需要遵循详细的指导方针并验证合规性时;
  • 顺序决策:当每个行动都建立在之前的行动之上,且错误代价高昂时(常见于多步骤领域)。

实施最佳实践

为了充分发挥 Claude 的 “思考” 工具的作用,基于我们在 τ-Bench 的实验,我们推荐以下实施做法:

  1. 结合特定领域示例的策略性提示
    最有效的方法是提供关于何时以及如何使用 “思考” 工具的清晰说明,例如在 τ-Bench 航空领域中使用的说明。提供针对特定用例的示例,能显著提高模型使用 “思考” 工具的效果:

    • 推理过程中预期的详细程度;
    • 如何将复杂指令分解为可执行的步骤;
    • 处理常见场景的决策树;
    • 如何检查是否已收集所有必要信息。
  2. 在系统提示中放置复杂指导
    我们发现,当关于 “思考” 工具的说明较长和 / 或较复杂时,将其包含在系统提示中比放在工具描述本身更有效。这种方法提供了更广泛的背景,帮助模型更好地将思考过程融入其整体行为中。

何时不使用 “思考” 工具

尽管 “思考” 工具能带来显著改进,但它并非适用于所有工具使用场景,而且会增加提示长度和输出标记的成本。具体而言,我们发现 “思考” 工具在以下用例中不会带来任何改进:

  • 非顺序性工具调用:如果 Claude 只需进行一次工具调用或多次并行调用就能完成任务,添加 “思考” 工具不太可能带来改进。
  • 简单指令遵循:当 Claude 需要遵循的约束不多,且其默认行为已足够好时,额外的 “思考” 不太可能带来收益。

入门指南

“思考” 工具是对 Claude 实施的一项简单添加,只需几个步骤就能带来有意义的改进:

  • 在智能体工具使用场景中测试:从具有挑战性的用例开始 —— 即 Claude 目前在政策合规性或长工具调用链中的复杂推理方面存在困难的场景。

  • 添加工具定义:实施一个针对你的领域定制的 “思考” 工具。它需要的代码极少,但能实现更结构化的推理。还可以考虑在系统提示中包含关于何时以及如何使用该工具的说明,以及与你的领域相关的示例。

  • 监控和优化:观察 Claude 在实际中如何使用该工具,并调整你的提示,以鼓励更有效的思考模式。

最棒的是,添加该工具在性能结果方面的负面影响极小。除非 Claude 决定使用它,否则它不会改变外部行为,也不会干扰你现有的工具或工作流程。

结论

我们的研究表明,“思考” 工具能显著提升 Claude 3.7 Sonnet 在需要遵循政策以及在长工具调用链中进行推理的复杂任务上的表现 ¹。“思考” 工具并非万能解决方案,但在合适的用例中能带来显著收益,且实施复杂度极低。

我们期待看到你如何使用 “思考” 工具,借助 Claude 构建更强大、更可靠、更透明的人工智能系统。

¹ 虽然我们的 τ-Bench 结果聚焦于 Claude 3.7 Sonnet 在 “思考” 工具帮助下的改进,但实验表明,Claude 3.5 Sonnet(新版)在与 3.7 Sonnet 相同的配置下也能实现性能提升,这表明这种改进也适用于其他 Claude 模型。

写在最后

Claude code 目前在国内被墙,而且难以购买,费用昂贵,使用时还得担心被封号的风险,令人担心。

我推荐一个很好用的镜像站:

www.aicodemirror.com

不仅可以永久免费试用,价格也是非常公道,比官方便宜很多。填写邀请码 5OTTEB还可以额外获得50美金额度,快一起白嫖!