重要提示:扩展思考与其他一些功能不兼容,尤其是消息预填充,并且它会限制您使用 temperature 的方式。请在此处查看完整的限制列表: https://platform.claude.com/docs/en/build-with-claude/thinking#limits-and-feature-compatibility(在新标签页中打开)
扩展思考是 Claude 的高级推理功能,它让模型在生成最终响应之前有时间处理复杂问题。可以把它想象成 Claude 的"草稿纸"——您可以看到得出答案所经历的推理过程,这有助于提高透明度,并且通常能带来更高质量的响应。
扩展思考的工作原理
启用扩展思考后,Claude 的响应会从简单的文本块变为包含两部分的结构化响应:

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

主要优势包括:
- 针对复杂任务的更强推理能力
- 在困难问题上更高的准确性
- 对 Claude 思考过程的透明度
然而,也存在重要的权衡:
- 更高的成本(您需要为思考令牌付费)
- 更高的延迟(思考需要时间)
- 代码中更复杂的响应处理
何时使用扩展思考
决策很简单:使用您的提示评估结果。先在不启用思考的情况下运行您的提示,如果在您已经优化了提示之后,准确性仍未达到您的要求,那么可以考虑启用扩展思考。它是一个在标准提示方式无法完全满足需求时使用的工具。
响应结构与安全性
扩展思考的响应包含一个特殊的签名系统,用于保障安全:

该签名是一个加密令牌,用于确保您没有修改思考文本。这可以防止开发者篡改 Claude 的推理过程,因为篡改可能会将模型引导至不安全的方向。
已编辑的思考内容
有时您会收到一个已编辑(redacted)的思考块,而不是可读的推理文本:

当 Claude 的思考过程被内部安全系统标记时,就会发生这种情况。已编辑的内容以加密形式包含实际的思考内容,使您能够在未来的对话中将完整的消息传回给 Claude,而不会丢失上下文。
实现方式
要在您的代码中启用扩展思考,您需要向聊天函数添加两个参数:
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:
if thinking:
params["max_tokens"] = thinking_budget + 1000
params["thinking"] = {
"type": "enabled",
"budget_tokens": thinking_budget
}然后在启用思考的情况下调用您的聊天函数:
chat(messages, thinking=True)测试已编辑的响应
出于测试目的,您可以通过发送一个特殊的触发字符串,强制 Claude 返回一个已编辑的思考块。这有助于确保您的应用程序能够优雅地处理已编辑的响应,而不会崩溃。
当您需要 Claude 处理复杂的推理任务时,扩展思考是一项强大的功能,但鉴于其成本和延迟方面的影响,应谨慎使用。先从标准提示开始,充分优化,然后在您需要额外的推理能力时再添加思考功能。