跳到正文
北京时间
原文
Anthropic:Newsroom·· 2025-03-20精选AI 评分76

Anthropic 介绍 Claude 的 think 工具在复杂工具调用中的用法与效果

The "think" tool: Enabling Claude to stop and think in complex tool use situations

AI 导读

Anthropic 介绍为 Claude 引入 think 工具的方法,让模型在长链工具调用中停下来做结构化思考,并区分于 extended thinking。

推荐理由

原文给出 τ-bench 和 SWE-bench 实测数据与实现建议,读者可据此判断 think 工具适合哪些智能体场景。

正文 · AI 翻译
  • 2025年12月15日

    扩展思考更新

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


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

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

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

什么是“think”工具?

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

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

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

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

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

在 τ-Bench 上的表现

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

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

  • 与模拟用户进行真实对话
  • 始终遵循复杂的客户服务代理策略指南
  • 使用多种工具访问和操作环境数据库

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

性能分析

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

  1. 基线(无“think”工具,无扩展思考模式)
  2. 仅扩展思考模式
  3. 仅“think”工具
  4. “think”工具配合优化提示词(针对航空领域)

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

  • 航空领域:“think”工具配合优化提示词在 pass^1 指标上达到 0.570,而基线仅为 0.370——相对提升 54%;
  • 零售领域:仅“think”工具就达到了 0.812,而基线为 0.783。
A line graph showing the performance of Claude 3.7 Sonnet on the "airline" domain of the Tau-Bench eval

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

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

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

特别有趣的是不同方法之间的对比。使用“think”工具配合优化提示词所取得的结果显著优于扩展思考模式(后者表现与未加提示的“think”工具相似)。仅使用“think”工具(不加提示)相比基线有所提升,但仍不及优化后的方法。

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

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

Line graph showing the performance of Claude 3.7 Sonnet on the "retail" domain of the Tau-Bench eval

Claude 3.7 Sonnet 在 Tau-Bench 评估“零售”领域三种不同配置下的表现。

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

即使没有额外提示,“think”工具也取得了最高的 pass^1 分数 0.812。零售策略相比航空领域明显更容易应对,Claude 仅凭拥有思考空间而无需进一步指导就能有所提升。

τ-Bench 分析的关键洞察

我们的详细分析揭示了若干有助于你有效实施“think”工具的模式:

  1. 提示词在困难领域至关重要。仅仅提供“think”工具可能会在一定程度上提升性能,但将其与优化提示词配合使用在困难领域能带来显著更好的结果。然而,较容易的领域可能仅需访问“think”即可获益。
  2. 提升跨试验的一致性。使用“think”带来的改进在 k=5 以内的 pass^k 上得以保持,表明该工具有助于 Claude 更有效地处理边缘情况和异常场景。

SWE-Bench 上的表现

在评估 Claude 3.7 Sonnet 时,我们向 SWE-bench 设置中添加了类似的“think”工具,助力实现了 0.623 的最先进得分。适配后的“think”工具定义如下:

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

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

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

实施最佳实践

为了在 Claude 中充分发挥“think”工具的作用,基于我们的 τ-bench 实验,我们推荐以下实施实践。

1. 结合领域特定示例的策略性提示

最有效的方法是就何时以及如何使用“think”工具提供清晰指令,例如用于 τ-bench 航空领域的那条指令。提供针对你具体用例量身定制的示例,能显著提升模型使用“think”工具的有效性:

  • 推理过程中预期的详细程度;
  • 如何将复杂指令分解为可执行的步骤;
  • 处理常见场景的决策树;以及
  • 如何检查是否已收集所有必要信息。

2. 将复杂指导放在系统提示中

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

何时不使用“think”工具

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

  1. 非顺序工具调用。如果 Claude 只需进行一次工具调用或多次并行调用来完成任务,那么加入“think”不太可能带来任何改进。
  2. 简单指令遵循。当 Claude 需要遵守的约束不多,且其默认行为已足够好时,额外的“think”不太可能带来收益。

开始使用

“think”工具是对你的 Claude 实现的一个简单补充,只需几个步骤就能产生有意义的改进:

  1. 在智能体工具使用场景中进行测试。从具有挑战性的用例开始——即 Claude 目前在策略合规性或长工具调用链中的复杂推理方面存在困难的用例。
  2. 添加工具定义。实现一个针对你的领域定制的“think”工具。它所需的代码极少,但能实现更结构化的推理。还可以考虑在系统提示中加入关于何时以及如何使用该工具的说明,并附上与你的领域相关的示例。
  3. 监控并优化。观察 Claude 在实践中如何使用该工具,并调整你的提示词,以鼓励更有效的思考模式。

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

结论

我们的研究表明,“think”工具能够显著提升 Claude 3.7 Sonnet 在需要遵循策略以及在长工具调用链中进行推理的复杂任务上的表现1。“Think”并非放之四海而皆准的解决方案,但它在合适的使用场景中能带来可观的收益,而且实现复杂度极低。

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

来源:Anthropic:Newsroom · anthropic.com