提高 Claude 解决复杂问题能力的新工具

探索如何使用“思考”工具增强 Claude 处理复杂任务的能力,提高长链工具调用的准确性,优化决策过程,并提升推理能力。文章详细介绍了该工具的工作原理、应用场景、基准测试结果及最佳实践,帮助开发者更好地利用 Claude 进行复杂任务处理。

阅读时长: 8 分钟
共 3776字
作者: eimoon.com

随着我们不断增强克劳德解决复杂问题的能力,我们发现了一种特别有效的方法:一种“思考”工具,可以在复杂任务期间为结构化思考创造专用空间。

这种简单但功能强大的技术(我们将在下文中解释,它与 Claude 的新“扩展思维”能力不同)显著提高了 Claude 的代理工具使用能力。这包括遵循政策、做出一致决策和处理多步骤问题,所有这些都只需最少的实施开销。

在这篇文章中,我们将探讨如何在不同的应用程序上实现“思考”工具,并根据经过验证的基准测试结果为开发人员分享实用指导。

什么是“思考”工具?

通过“思考”工具,我们赋予 Claude 能力,使其能够添加额外的思考步骤(拥有自己指定的空间),作为获得最终答案的一部分。

虽然听起来与扩展思考类似,但概念却不同。扩展思考是指 Claude 在开始生成响应之前所做的一切。借助扩展思考,Claude 会在采取行动之前深入思考并反复考虑其计划。一旦 Claude 开始生成响应,则“思考”工具会添加一个步骤来停止并思考它是否拥有继续前进所需的所有信息。这在执行长链工具调用或与用户进行长时间的多步骤对话时特别有用。

这使得“思考”工具更适合于 Claude 无法从用户查询中单独形成响应所需的所有信息,以及需要处理外部信息(例如工具调用结果中的信息)的情况。Claude 使用“思考”工具进行的推理不如通过扩展思考获得的推理全面,并且更侧重于模型发现的新信息。

我们建议将扩展思维用于更简单的工具使用场景,例如非顺序工具调用或直接遵循指令。当您不需要 Claude 调用工具时,扩展思维对于编码、数学和物理等用例也很有用。当 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"]
  }
}

τ-Bench 上的表现

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

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

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

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

性能分析

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

  • 基线(没有“思考”工具,没有扩展思维模式)
  • 独自延伸思维模式
  • 独自“思考”工具
  • 优化提示的“思考”工具(针对航空领域)

结果显示,当 Claude 3.7 在基准的“航空”和“零售”客户服务领域中有效使用“思考”工具时,取得了显著的进步:

航空领域:经过优化提示的“思考”工具在 pass^1 指标上达到了 0.570,而基线仅为 0.370,相对提高了 54%; 零售领域:仅“思考”工具就达到了 0.812,而基线为 0.783。 alt text 展示 Claude 3.7 Sonnet 在 Tau-Bench 评估的“航空公司”域中的表现的线图 Claude 3.7 Sonnet 在四种不同配置下在 Tau-Bench 评估的“航空公司”域中的表现。 Claude 3.7 Sonnet 在 Tau-Bench 评估的“Airline”域中的表现

配置 k=1 k=2 k=3 k=4 k=5
思考 + 提示 0.584 0.444 0.384 0.356 0.340
思考 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
四种不同配置的评估结果。分数为比例。

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

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>

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

“思考”工具与优化提示的结合表现出了显著的优势,这可能是因为基准测试中航空政策部分非常复杂,而模型从如何“思考”的例子中受益最多。

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

alt text

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

配置 k=1 k=2 k=3 k=4 k=5
思考 + 无提示 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
三种不同配置的评估结果。分数为比例。

“思考”工具甚至在没有额外提示的情况下也取得了最高的通过分数 0.812。与航空领域相比,零售政策明显更容易驾驭,而 Claude 只需有思考的空间,无需进一步指导就能取得进步。

τ-Bench 分析的关键见解

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

对于困难领域,提示非常重要。只需提供“思考”工具即可在一定程度上提高性能,但将其与优化的提示相结合,可显著改善困难领域的结果。然而,对于较容易的领域,只需访问“思考”即可获益。 提高了试验之间的一致性。使用“思考”带来​​的改进在 pass^k 到 k=5 时一直保持,这表明该工具帮助 Claude 更有效地处理边缘情况和不寻常的情况。

SWE-Bench 上的表现

在评估 Claude 3.7 Sonnet 时,我们在 SWE-bench 设置中添加了一个类似的“思考”工具,这有助于实现 0.623 的最优得分。调整后的“思考”工具定义如下:

{
  "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"]
  }
}

我们的实验(n =30 个样本带有“思考”工具,n =144 个样本不带有)表明,包含此工具的单独效果平均将性能提高了 1.6%(Welch 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 在执行需要在长链工具调用中遵守政策和推理的复杂任务时的性能1。 “思考”并不是一个万能的解决方案,但它为正确的用例提供了实质性的好处,而且实现复杂性极低。

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

关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计