加载中

重要提示:扩展思考与其他一些功能不兼容,尤其是消息预填充,并且它会限制您使用 temperature 的方式。请在此处查看完整的限制列表: https://platform.claude.com/docs/en/build-with-claude/thinking#limits-and-feature-compatibility

扩展思考是 Claude 的高级推理功能,它让模型在生成最终响应之前有时间处理复杂问题。可以把它想象成 Claude 的"草稿纸"——您可以看到得出答案所经历的推理过程,这有助于提高透明度,并且通常能带来更高质量的响应。

扩展思考的工作原理

启用扩展思考后,Claude 的响应会从简单的文本块变为包含两部分的结构化响应:

启用思考后,您将同时获得推理过程和最终答案:

主要优势包括:

  • 针对复杂任务的更强推理能力
  • 在困难问题上更高的准确性
  • 对 Claude 思考过程的透明度

然而,也存在重要的权衡:

  • 更高的成本(您需要为思考令牌付费)
  • 更高的延迟(思考需要时间)
  • 代码中更复杂的响应处理

何时使用扩展思考

决策很简单:使用您的提示评估结果。先在不启用思考的情况下运行您的提示,如果在您已经优化了提示之后,准确性仍未达到您的要求,那么可以考虑启用扩展思考。它是一个在标准提示方式无法完全满足需求时使用的工具。

响应结构与安全性

扩展思考的响应包含一个特殊的签名系统,用于保障安全:

该签名是一个加密令牌,用于确保您没有修改思考文本。这可以防止开发者篡改 Claude 的推理过程,因为篡改可能会将模型引导至不安全的方向。

已编辑的思考内容

有时您会收到一个已编辑(redacted)的思考块,而不是可读的推理文本:

当 Claude 的思考过程被内部安全系统标记时,就会发生这种情况。已编辑的内容以加密形式包含实际的思考内容,使您能够在未来的对话中将完整的消息传回给 Claude,而不会丢失上下文。

实现方式

要在您的代码中启用扩展思考,您需要向聊天函数添加两个参数:

python
def chat(
    messages,
    system=None,
    temperature=1.0,
    stop_sequences=[],
    tools=None,
    thinking=False,
    thinking_budget=1024
):

思考预算——请求中的 budget_tokens——设置了 Claude 可用于推理的最大令牌数。budget_tokens 的最小值为 1024,并且您的 max_tokens 参数必须大于 budget_tokens。

将 thinking 参数添加到您的 API 请求中——这是一个对象,其 type 设置为 "enabled",并带有一个 budget_tokens 值——并提高 max_tokens,使其大于 budget_tokens:

python
if thinking:
    params["max_tokens"] = thinking_budget + 1000
    params["thinking"] = {
        "type": "enabled",
        "budget_tokens": thinking_budget
    }

然后在启用思考的情况下调用您的聊天函数:

python
chat(messages, thinking=True)

测试已编辑的响应

出于测试目的,您可以通过发送一个特殊的触发字符串,强制 Claude 返回一个已编辑的思考块。这有助于确保您的应用程序能够优雅地处理已编辑的响应,而不会崩溃。

当您需要 Claude 处理复杂的推理任务时,扩展思考是一项强大的功能,但鉴于其成本和延迟方面的影响,应谨慎使用。先从标准提示开始,充分优化,然后在您需要额外的推理能力时再添加思考功能。