扩展思维(Extended Thinking)
扩展思维(Extended Thinking)
扩展思维(Extended Thinking)为 Claude 提供了增强的推理能力,用于处理复杂任务,同时提供不同级别的透明度,让你可以查看 Claude 在给出最终答案之前的逐步思考过程。
支持的模型
扩展思维功能在以下模型中可用:
- Claude Sonnet 4.5 (
claude-sonnet-4-5-20250929) - Claude Sonnet 4 (
claude-sonnet-4-20250514) - Claude Sonnet 3.7 (
claude-3-7-sonnet-20250219) - Claude Haiku 4.5 (
claude-haiku-4-5-20251001) - Claude Opus 4.1 (
claude-opus-4-1-20250805) - Claude Opus 4 (
claude-opus-4-20250514)
模型版本差异:Claude Sonnet 3.7 和 Claude 4 系列模型的 API 行为有所不同,但 API 接口格式完全相同。
工作原理
启用扩展思维后,Claude 会创建 thinking 内容块,输出其内部推理过程。Claude 在形成最终回复之前会融合这些推理洞察。
API 响应将包含 thinking 内容块,然后是 text 内容块。
响应格式示例
{
"content": [
{
"type": "thinking",
"thinking": "让我一步步分析这个问题...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "基于我的分析..."
}
]
}如何使用扩展思维
基本使用示例
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000
},
messages=[
{
"role": "user",
"content": "是否存在无限多个素数 p 满足 p mod 4 == 3?"
}
]
)关键参数
| 参数 | 说明 |
|---|---|
thinking.type | 设置为 "enabled" 启用扩展思维 |
thinking.budget_tokens | 为思维过程分配的 token 预算(可选) |
max_tokens | 响应的最大 token 数(包括思维 + 文本) |
使用场景
扩展思维特别适合以下场景:
1. 复杂问题求解
数学证明、逻辑推理、算法设计等需要深度思考的任务。
# 示例:数学问题
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[{
"role": "user",
"content": "证明:存在无限多个素数 p 使得 p ≡ 3 (mod 4)"
}]
)2. 架构设计
需要权衡多种方案、考虑各种约束条件的系统设计任务。
3. 调试复杂问题
需要分析多层次错误原因、追踪复杂依赖关系的 Bug 调试。
4. 策略规划
需要多步骤推理、评估不同路径的决策任务。
最佳实践
1. 合理设置 Token 预算
# 简单问题:较小预算
thinking={"type": "enabled", "budget_tokens": 2000}
# 复杂问题:较大预算
thinking={"type": "enabled", "budget_tokens": 10000}2. 处理思维内容
for block in response.content:
if block.type == "thinking":
# 可选:记录思维过程用于调试
print(f"思维过程: {block.thinking}")
elif block.type == "text":
# 最终答案
print(f"回答: {block.text}")3. 验证思维真实性
扩展思维响应包含数字签名,可用于验证思维内容的真实性:
thinking_block = response.content[0]
signature = thinking_block.signature
# 使用 Anthropic 提供的验证方法
is_authentic = anthropic.verify_thinking(thinking_block.thinking, signature)定价说明
使用扩展思维时:
- 思维 token:按输出 token 价格计费
- 预算限制:通过
budget_tokens控制思维成本 - 总成本:= 输入 token 成本 + 思维 token 成本 + 输出 token 成本
成本控制:合理设置
budget_tokens 以控制成本。对于不需要深度推理的任务,可以不启用扩展思维。与其他功能结合
与 Prompt Caching 结合
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
system=[
{
"type": "text",
"text": "你是一位数学专家...",
"cache_control": {"type": "ephemeral"}
}
],
messages=[...]
)与 Tool Use 结合
扩展思维可以帮助 Claude 更好地规划和执行工具调用:
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 5000},
tools=[...],
messages=[...]
)常见问题
Q: 什么时候应该使用扩展思维?
A: 当任务需要:
- 多步骤推理
- 权衡多种方案
- 复杂的逻辑分析
- 深度的问题求解
对于简单的查询或创意写作,通常不需要扩展思维。
Q: 如何平衡思维质量和成本?
A:
- 从较小的
budget_tokens开始测试 - 根据任务复杂度调整预算
- 监控思维内容的实际使用量
- 对批量任务进行成本分析
Q: 思维内容是否可靠?
A:
- 思维内容包含数字签名,可验证真实性
- 思维过程反映了模型的实际推理
- 但思维内容仍可能包含错误,需结合最终答案评估
相关资源
下一步
- 探索 Computer Use 让 Claude 控制桌面环境
- 了解 Agent Skills 构建可复用的技能系统
- 查看 Cookbook 获取更多代码示例