扩展思维(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:

  • 思维内容包含数字签名,可验证真实性
  • 思维过程反映了模型的实际推理
  • 但思维内容仍可能包含错误,需结合最终答案评估

相关资源

下一步