For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

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

7.5.1 推理预算的意义

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

更新: Extended Thinking 的手动模式(type: "enabled")在 Claude Fable 5.1、Mythos 5.1、Fable 5、Mythos 5、Opus 5、Sonnet 5 与 Opus 4.8/4.7 上已被移除(请求返回 400 错误),在 Opus 4.6 与 Sonnet 4.6 上已弃用但仍可用;Adaptive Thinking(type: "adaptive")是官方推荐方案。反向的边界同样要注意:Sonnet 4.5、Opus 4.5、Haiku 4.5 等更早的模型只有手动模式,传 type: "adaptive" 会返回 400。完整对照见本节末的附注表。

指标
说明
影响

思考 Token 成本

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

大量思考会增加成本

推理时间

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

延长响应时间

质量收益

复杂任务可能减少遗漏、重试和错误路径

需要用本地 eval 衡量收益

可预测性

思考深度难以精确控制

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 Fable 5.1、Mythos 5.1(2026-09-01 发布,当前一代)与 Fable 5、Mythos 5(已列入官方 Legacy models,仍可调用)

❌ 不支持,返回 400 错误;思考常开,type: "disabled" 同样返回 400

Claude Opus 5、Sonnet 5

❌ 不支持,返回 400 错误,只提供 Adaptive Thinking(Opus 5 在 effortxhigh/max 时也不接受 "disabled"

Claude Opus 4.8/4.7

❌ 不支持,返回 400 错误

Claude Opus 4.6、Sonnet 4.6

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

Claude Opus 4.5、Sonnet 4.5、Haiku 4.5 等早期模型

✅ 仍支持,且是唯一模式(传 type: "adaptive" 反而返回 400)

迁移指南: 对支持 adaptive thinking 的模型,优先使用 thinking: {type: "adaptive"}。通过 output_config.effort 参数控制思考深度(max, xhigh, high, medium, low),而不是依赖固定 budget_tokens

最后更新于