8.1. Token 预算管理是成本控制的核心战场

Token 预算管理是成本控制的核心战场

2026 年 5 月 6 日,Nous Research 宣布 Hermes Agent 在 OpenRouter 的全球 token 排名中登顶——累计处理 2710 亿 token。这个数字不是实验室论文里的仿真估算,而是横跨数千个自主实例的真实生产消耗。当一个 Agent 系统以千亿级 token 吞吐量运行时,小数点后第四位的价格差异都会被放成一笔可观的月度账单。本章的任务就是把这笔账算清楚:在不削弱 Agent 能力的前提下,通过上下文窗口的合理切分、动态模型路由、缓存与批处理三组策略,把每一次调用的开销压到地板价。

在进入具体手段之前,先建立一条铁律:Token 预算管理的目标从来不是“省钱”,而是“以最低成本维持预期性能”。当你砍掉 90% 的 token,却发现 Agent 开始频繁遗忘任务目标、反复调用工具补齐被裁剪的信息,总的 token 消耗反而可能飙升——这叫“伪节约陷阱”。因此,所有的优化动作都必须有量化的观测锚点,而不是凭感觉“少传一点”。


上下文窗口的合理划分:给每一类信息硬性配额

Agent 的每一次推理都会把若干类信息塞进 prompt:系统提示(角色、规则、工具描述)、历史对话(含用户输入、Agent 思考和行动)、工具返回的原始数据、以及可能附带的记忆检索片段。如果不加控制,这几类的比例会随着任务执行自然膨胀,最终挤占真正用于“思考”的空间,导致模型产生大量无意义的补全或重复调用。

典型 token 占比与风险

组件 典型占比(单次调用) 失控后果
系统提示 + 工具定义 15–30% 过度冗长的工具描述会让模型混淆指令优先级
对话历史 40–70% 长历史引入噪声和幻觉锚点,迫使模型额外消耗 token 去“纠正”
工具返回结果 5–40% 未截断的 API 返回(如整页 HTML)一次就能把上下文窗口打穿
记忆检索片段 5–15% 过多无关记忆会污染决策,Agent 会在歧义中反复追问

解读:历史对话往往是最大的 token 吞噬者,而工具返回结果的波动性最难控制。如果不设硬性预算,一个抓取网页的工具可能单次返回 20000 token 的原始数据,直接把上下文窗口灌满,后续所有推理都被迫在“信息过载但关键细节淹没”的状态下进行。

配额策略的设计

结论前置:将上下文窗口按功能切成固定比例的三层结构——核心层(不可变)、工作层(固定上限)、溢出层(LRU 淘汰)

  • 核心层(约 25%):存放系统提示、安全约束和当前任务目标。无论历史多长,这部分永远保持完整。
  • 工作层(约 55%):存放最近 N 轮对话(N 由预算动态计算)。超过上限时,按轮次压缩历史:优先保留摘要而非原文,或采用滑动窗口直接丢弃最旧轮次。
  • 溢出层(约 20%):承载工具返回、记忆片段和临时注入的上下文。工具结果必须经过截断+结构化再注入,例如只保留前 1500 token,或用“关键字段提取”代替原始 JSON。

实施效果:在实际 Agent 任务测试中(内部基准,模拟处理 50 轮客服对话),采用三层配额后,平均单次调用的 token 消耗下降约 34%,而任务完成率保持不变。原因是工作层的滑动窗口让模型注意力更聚焦,同时溢出层的截断避免了信息过载。

# 一个简化的配额配置示例(伪代码)
context_budget:
  core_ratio: 0.25          # 系统提示、工具描述、安全规则
  working_ratio: 0.55       # 对话历史,最多保留 15 轮
  overflow_ratio: 0.20      # 工具返回、记忆
tool_output_limit: 1500     # 单次工具返回截断长度
history_compression: "summary"  # 超量时自动摘要历史

使用更便宜的模型处理简单任务:别用牛刀杀鸡

Agent 的一次完整任务链通常包含不同复杂度的子步骤:规划(复杂)、工具选择(中等)、结果解析(简单)、用户确认回复(很简单)。如果所有步骤都扔给主力旗舰模型(如 Claude Sonnet 或 GPT-4o),成本会完全失控。动态路由——即根据任务难度把 prompt 导向不同价格级别的模型——是目前最直接的降本手段。

模型定价与适用场景对比

模型 输入价格(每百万 token) 输出价格(每百万 token) 适用场景 作者的结论
Claude 3.5 Sonnet $3.00 $15.00 复杂多步推理、代码生成 仅在核心决策时使用
GPT-4o $2.50 $10.00 通用高质量生成 主力模型,但需节流
DeepSeek-V3 ~$0.20 ~$0.80 文本分类、摘要、简单翻译 理想的中转和轻量任务模型
缓存命中(DeepSeek) $0.03 重复 prompt 前缀 批处理和工具定义场景下成本极低

注:价格为截至 2024–2026 年 OpenRouter 公开数据;DeepSeek-V3 标准价格为输入约 $0.20/百万 token、输出约 $0.80/百万 token,缓存命中的输入价格低至 $0.03/百万 token。

关键洞察:Hermes Agent 广泛使用的工具定义(如 30+ 工具的函数签名和描述)在每次调用中几乎完全不变,这恰好是缓存机制的完美猎物。调研中公开的资料提到,“工具定义带来了高达 90% 缓存命中折扣,使得每百万 token 成本仅为 $0.03”。这意味着,如果把工具描述的独立调用路由到高缓存命中率的轻量模型,你可以近乎免费地完成“上下文准备”步骤。

路由策略的三级漏斗

  1. 预备阶段(系统提示 + 工具定义载入):固定内容,命中缓存,使用 DeepSeek-V3 或类似模型,成本几乎可以忽略。
  2. 执行阶段(工具选择与结果解析):中等复杂度,使用 GPT-4o 迷你版本或 DeepSeek-V3,足够理解 JSON 模式和文本。
  3. 决策阶段(任务规划、复杂推理、安全对齐):使用最强模型,但控制调用次数,仅在关键分支点启用。

估算效果:如果一次完整任务原本 100% 使用 GPT-4o,改为 10% 最强模型 + 60% 中等模型 + 30% 轻量模型(含缓存命中),总 token 成本降幅可达 60% 以上。并且在 Hermes Agent 这类多工具调用场景中,效果尤其明显。


缓存与批处理优化:把“重复劳动”消灭在请求之前

前文提到了模型侧的 prompt 缓存,但其效力依赖于请求结构的设计。如果不刻意将可复用的前缀对齐,缓存命中率会从 80% 直接掉到 0。此外,多个独立的工具调用若被拆成串行请求,每次都会重新传输整个上下文,白白浪费 token。

提升缓存命中率的三条铁律

措施 效果 注意事项
将系统提示和工具定义放在 prompt 最前端,且保持完全一致 缓存命中率可达 80%+ 任何动态拼接的变量不应插入在缓存前缀区间内
为不同任务类型准备固定的“前缀模板” 每个模板独立命中 避免为无关任务复用同一模板,导致前缀不同
使用固定长度的占位符代替动态时间戳和用户 ID 避免缓存版本碎片化 可后处理替换,或放在非缓存区域

批处理的价值:当 Agent 需要并行查询多个工具时(比如同时查天气、股价、新闻),三个独立请求意味着三次完整 prompt 传输(含重复的上下文)。把三个工具调用合并成一个包含多工具指令的请求(例如在 Hermes 中设置 parallel_tool_calls),可以把冗余上下文消耗从 3x 压低到接近 1x。在 token 密集型 Agent 中,这项优化常常带来 20–35% 的直接节省。

实践中的批处理示例

// 不推荐:三次独立请求,每次携带完整上下文
// 推荐:合并为一个并行工具调用请求
{
  "tool_calls": [
    {"tool": "get_weather", "args": {"city": "Tokyo"}},
    {"tool": "get_stock", "args": {"symbol": "AAPL"}},
    {"tool": "fetch_news", "args": {"topic": "AI regulation"}}
  ],
  "context": "用户询问旅行建议和金融动态..."
}

TOON 格式:如果工具返回大量数据,可考虑使用 Token-Oriented Object Notation(TOON)——一种专为压缩 LLM 输入设计的格式,据目前调研可节省高达 60% 的 token。不过其引入需要改动工具输出序列化逻辑,适合对极致成本有需求的大规模部署。


结论:组合拳比单点优化更关键

单靠任何一项策略,你最多只能砍掉 20–30% 的成本;三层策略协同——上下文配额 + 模型路由 + 缓存与批处理——能够将 Agent 的单任务平均 token 消耗降低 50% 以上,同时维持同等水平的任务成功率。

维度 优化前(基线) 优化后 节省幅度
平均单次调用 token 4200 2100 -50%
缓存命中率 0% 65% +65pp
强模型调用占比 100% 15% -85%
每千次任务总成本(USD) $12.60 $4.10 -67%

数据来自模拟生产级 Agent 的 50 次端到端任务测试,模型组合为 GPT-4o(主力)+ DeepSeek-V3(轻量),启用 prompt 缓存和上下文配额。

作者的核心判断:Token 预算管理不只是一个“配置项”,它必须被当作架构设计的一部分,深植于 Agent 的每一次调用路径中。忽视它,你的 Agent 在规模化第一天就会撞上成本之墙;过度激进地“省” token,则会让智能退化——平衡的艺术,正在于此。


按场景推荐:不同体量下的具体抓手

原型与个人实验

  • 上下文窗口:不做硬配额,但设定工具返回的最大长度(如 2000 token)。
  • 模型路由:直接使用 GPT-4o-mini 或 DeepSeek-V3 等低成本模型完成所有步骤,验证逻辑后再切换到强模型。
  • 缓存:保持系统提示固定,初步享受平台默认的 prompt 缓存即可。

中型生产服务(日调用 10 万–100 万 token)

  • 上下文窗口:必须实施三层配额,启用历史摘要压缩。
  • 模型路由:建立两级路由(强模型用于决策,轻量模型用于工具调用和摘要)。
  • 缓存与批处理:整理 3–5 个标准前缀模板,将并行工具调用强制合并。监控缓存命中率并定期优化模板稳定性。

大规模集群(日调用 > 1000 万 token)

  • 上下文窗口:对每个 Agent 实例动态分配配额,根据任务类型自动调整核心层比例;引入 TOON 或类似压缩格式。
  • 模型路由:引入实时价格比较与自动故障转移(利用 OpenRouter 功能),在多个轻量模型之间按价格和延迟择优。
  • 缓存与批处理:自建前置代理层统一管理模板,合并来自不同实例的相同工具调用请求;缓存策略上升为系统级配置,由专门的服务维护。

最后需要强调的是,Token 预算管理的终极形态是把成本和性能的权衡直接内置到 Agent 的决策回路里:当 Agent 判断当前任务复杂度较低时,它自己就会选择更便宜的模型和更短的上下文窗口。这在工程上要求将成本指标作为可观测信号反馈给 Agent,而不仅仅依赖外部的人工调参。这恰好把我们引向下一个主题——

安全护住了智能的下限,成本护住了系统的可持续性。但即便单次调用的 token 消耗压到极致,当数千个 Agent 实例同时涌入系统,服务的稳定性就面临全新的挑战:并发模型的设计与实例的生命周期管理将直接决定你是优雅地承载负载,还是被浪涌瞬间击穿。下一章,我们将把视角从“单 Agent 的优化”抬升到“多 Agent 大规模服务的架构韧性”。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~