7.5 推理预算与思考过程管理

Extended Thinking 提升准确度但也增加成本,需要精心的预算管理。本节介绍四种思考策略(禁用、自适应、预算控制、强制)、复杂度评估方法、思考质量分析,以及会话级的预算跟踪机制。

7.5.1 推理预算的意义

Adaptive Thinking(自适应思考)是 Claude 的现代特性,模型在“思考”中投入 token 进行深度推理,显著提升复杂任务的准确度。但思考本身有成本:

更新: Extended Thinking 的手动模式(type: "enabled")已在 Claude Opus 4.7 弃用,Adaptive Thinking(type: "adaptive")是官方推荐方案。

指标
说明
影响

思考 Token 成本

与输出 Token 同价(按输出价计费)

大量思考会增加成本

推理时间

思考通常需要额外的推理步骤

延长响应时间

质量收益

复杂任务准确度提升 30-50%

不是所有任务都需要

可预测性

思考深度难以精确控制

budget_tokens 限制

7.5.2 核心概念

推理预算的核心数据结构定义如下:

from enum import Enum
from dataclasses import dataclass
from typing import Optional

class ThinkingStrategy(Enum):
    """思考策略"""
    DISABLED = "disabled"  # 不使用思考
    ADAPTIVE = "adaptive"  # 自适应(模型决定)
    REQUIRED = "required"  # 强制思考
    BUDGET_BASED = "budget_based"  # 基于预算的条件思考

@dataclass
class ReasoningBudget:
    """推理预算配置"""
    strategy: ThinkingStrategy
    max_thinking_tokens: Optional[int] = None  # 单次最大思考 token
    max_thinking_per_session: Optional[int] = None  # 会话总思考 token
    budget_threshold: Optional[float] = None  # 成本阈值,超过则不用思考
    adaptive_threshold: Optional[float] = None  # 自适应触发阈值
    task_complexity_threshold: Optional[str] = None  # 复杂度阈值

@dataclass
class ThinkingResult:
    """思考结果"""
    thinking_tokens: int
    thinking_content: str
    output_tokens: int
    output_content: str
    total_cost: float
    thinking_ratio: float  # 思考 token / 总 token

策略 1: 完全禁用思考

最经济的选择,适合简单任务:

策略 2: 自适应思考

让模型自主决定是否思考,适合混合工作负载:

策略 3: 基于预算的条件思考

根据成本和任务复杂度动态决定:

策略 4: 强制思考

某些任务(如代码审查、安全决策)必须激活思考:

思考结果分析

对思考过程进行质量分析的实现方式如下:

推理预算管理器

推理预算管理器的完整实现如下:

使用示例

推理预算管理器的使用示例如下:

总结

推理预算管理通过:

  • 多种策略 (禁用、自适应、预算、强制)满足不同需求

  • 动态复杂度评估 决定思考投入

  • 成本和质量平衡 优化成本效益

  • 会话级预算跟踪 防止失控支出

这是生产智能体系统必不可少的能力,尤其是当扩展思考成为标配时。

附注:Extended Thinking 的弃用

Claude 官方已弃用手动 Extended Thinking 配置(thinking: {type: "enabled", budget_tokens: N}):

模型
状态

Claude Opus 4.7+

❌ 不支持,返回 400 错误

Claude Opus 4.6、Sonnet 4.6

⚠️ 已弃用但功能正常(计划迁移)

早期模型(4.5及更早)

✅ 仍支持(若无法升级)

迁移指南: 使用 thinking: {type: "adaptive"} 替代。通过 output_config.effort 参数控制思考深度(max, xhigh, high, medium, low),而非 budget_tokens

最后更新于