|

Agent 长任务的 Token 账单从哪来:输入占比 99.4% 与前缀缓存的 5 个优化做法

Agent 长任务的 Token 账单从哪来:输入占比 99.4% 与前缀缓存的 5 个优化做法

作者注:拆解 Agent 长任务的 Token 账单结构,说明输入 Token 为什么会占到绝大部分,以及如何调整上下文结构,提升前缀缓存的复用率。

很多团队把多步 Agent 接进产品后,月底看账单才发现问题:用户只提了一个需求,消耗的 Token 却是普通对话的几十倍。大家的第一反应通常是“模型输出太啰嗦”,于是去压输出长度。实际的大头在输入侧,而且主要来自 每一轮都要重新带入的历史上下文。

这不是凭经验的猜测。近期公开的工程分享给出了比较具体的数据:国内线上场景中,一次用户请求平均触发约 7.2 次模型调用;在一条 50 步的调用链里,输入 Token 约占 99.4%,输出只占约 0.6%。推理引擎团队对 Agent 负载也有类似描述:长前缀、短输出、多轮循环。

核心价值:读完本文,你能看懂 Agent 长任务 Token 账单的结构,理解前缀缓存为什么能降本,并拿到 5 个在应用侧就能落地的上下文组织方法。

agent-long-task-token-cost-prefix-cache-image-0


Agent 长任务 Token 账单核心要点

先用一张表概括本文的结论,后面各节再逐条展开。

要点 说明 对你的价值
调用次数被放大 一次用户请求平均约 7.2 次模型调用,复杂任务超过 50 步并不少见 估算成本要按“任务”算,不能按“请求”算
输入占绝对大头 50 步调用链中输入约占 99.4%,输出约占 0.6% 降本应优先处理输入,压输出收效有限
重复上下文是主因 每一步都重新带入历史上下文,同样的内容被反复计费 找准真正的成本来源
前缀缓存可以复用 前缀相同的部分若命中缓存,可以省去重复的 prefill 计算 结构稳定的上下文更便宜
结构决定命中率 固定提示词和工具结构、变化信息放在末尾、适时压缩历史 不换模型也能降低成本

Agent 长任务 Token 成本重点详解

Agent 和普通聊天的最大区别在于“循环”。以制作一份 PPT 为例,系统要依次完成材料读取、内容规划、逐页生成、工具制作和结果检查。用户眼里这是一项任务,系统里却是多轮推理加多次工具调用,而且每一步都可能重新读取上下文,结果不合格时还要回头修改。

每一轮调用,模型拿到的都是“系统提示词 + 工具定义 + 截至目前的全部历史 + 本轮新信息”。历史越积越长,单轮新增的内容却很少,几十轮下来,同一段前缀被重复计费几十次。99.4% 的输入占比就是这样累积出来的。

agent-long-task-token-cost-prefix-cache-image-1


为什么 Agent 长任务的输入 Token 远多于输出

从推理引擎一侧看,这个结构更清楚。TokenSpeed 的分享以 coding agent 为例:模型持续思考、调用工具、获取结果、再继续思考,整个过程由多轮短请求循环组成。第一次请求可能就带着几十 K 的前缀上下文,后续每次循环的输出往往只有几百个 token。

下表把聊天负载和 Agent 负载放在一起对比,便于你判断自己的应用属于哪一类。

维度 传统 Chat 负载 Agent 长任务负载
请求形态 一问一答,一次生成完整回复 多轮短请求循环,夹杂工具调用
前缀长度 通常较短 起步即可达几十 K,并逐轮增长
单轮输出 相对较长 往往只有几百个 token
上下文复用 一次加载后即释放 同一前缀在任务内被反复携带
成本主导项 输入、输出都有分量 输入(尤其是重复前缀)占绝大部分

前缀缓存在 Agent 长任务中如何工作

推理引擎处理请求分两个阶段:prefill 阶段把输入全部计算一遍,生成 KV Cache;decode 阶段再逐个生成输出 token。Agent 场景下,几十 K 的前缀每轮都要 prefill,这部分计算正是成本所在。如果同一段前缀已经算过、结果还留在缓存中,就可以直接复用,省掉这部分 prefill。

推理引擎团队把 KV Cache 复用率视为决定推理成本的关键变量。分享中提到,据称 DeepSeek 的缓存复用率在 99% 以上,业界多数系统目前在 70% 到 80% 之间;Agent 负载在 prefill 场景下的前缀命中率通常在 90% 以上,命中后只需追加计算几百个 token。

还有一个容易忽略的细节:前缀缓存是从头开始逐段匹配的。TokenSpeed 早期借鉴 SGLang,用 Radix Tree 管理前缀缓存,树上每个节点对应一段 token 序列,请求沿着这棵树从根部开始匹配。后来虽然改成了 Flat KV 设计,复用仍以固定大小的逻辑块(128 个 token)为单位。对应用开发者来说,结论很直接:前面只要有一个 token 不同,后面的内容就无法复用。


如何组织上下文提升 Agent 长任务前缀缓存命中率

理解了缓存的匹配方式,优化方向就明确了:让每一轮请求的开头尽量长、尽量保持不变。WorkBuddy 团队采用的做法是固定提示词和工具结构、把变化信息放到上下文末尾,上下文变长之后再压缩历史内容。下面把它展开成可以执行的 5 条做法。

做法 具体动作 常见反例
1. 固定系统提示词 系统提示词逐字稳定,版本变更集中发布 在开头插入当前时间、用户名、随机示例
2. 固定工具结构 工具列表顺序、参数描述保持不变 每轮按需增删工具,或者序列化顺序不稳定
3. 变化信息放末尾 时间戳、本轮观察结果、动态状态追加在最后 把“当前进度”写进系统提示词顶部
4. 历史只追加不改写 已发送的历史保持原样,新内容只往后接 每轮重新格式化或重排之前的消息
5. 阶段性压缩历史 上下文过长时在检查点压缩一次,之后继续追加 每轮都重新生成摘要,导致前缀天天变化

固定提示词与工具结构的 Agent 长任务实践

第 1、2 条最容易被忽视。很多框架会在系统提示词里拼接当前日期,或者根据步骤动态挑选工具,这两种写法都会让开头每轮不同,前缀缓存从第一个 token 起就失效。比较稳妥的做法是:系统提示词只放规则和角色,日期等信息作为一条普通消息放到末尾;工具全集一次性列出,用提示词约束“本阶段只用哪些”,而不是改动工具列表本身。

序列化方式也要留意。同一份工具定义,如果 JSON 字段顺序在不同进程里不一致,从字节层面看就是两个不同的前缀。建议对工具定义做固定排序后再发送,并在日志中记录前缀的哈希值,方便排查“明明没改却没命中”的情况。

压缩历史与缓存复用的 Agent 长任务权衡

第 5 条存在一个需要权衡的地方。压缩历史能减少输入长度,但压缩之后前缀发生变化,本轮的缓存必然失效。如果每轮都压缩,等于每轮都放弃复用。因此更合理的节奏是设定阈值,比如上下文达到某个长度、或者一个子任务结束时压缩一次,压缩后的版本再作为新的稳定前缀,继续只追加不改写。

agent-long-task-token-cost-prefix-cache-image-2

上图的两种布局,只看单轮请求几乎没有区别,放到几十轮的长任务里,账单差距会很明显。想确认自己的应用属于哪一种,最直接的办法是看调用日志里每一轮的输入 Token 变化。API易 apiyi.com 提供统一计费、用量统计和调用日志,多模型的数据可以放在同一处对比,适合用来做这类账单结构的诊断。


Agent 长任务 Token 账单优化快速上手

本节不涉及代码,只给出一套可执行的排查步骤,按顺序做即可。

第一步:把 Token 账单按任务拆开

  1. 为每个用户任务生成一个任务 ID,任务内的每次模型调用都带上这个 ID 记录日志。
  2. 从每次响应的 usage 信息中记录输入、输出 Token 数;部分供应商还会单独返回缓存命中的 Token 数,具体字段名以官方文档为准。
  3. 按任务汇总三项指标:调用次数、输入/输出比例、缓存命中占比。

如果你同时调用多家模型,日志口径往往不统一。通过 API易 统一接入后,可以在同一个控制台里查看各模型的用量明细和调用记录,再结合自己记录的任务 ID,就能拼出“每个任务花了多少、钱花在哪一步”的完整视图。

第二步:定位前缀被破坏的位置

  1. 抽取同一任务中相邻两轮请求,逐段比较系统提示词、工具定义和历史消息是否逐字一致。
  2. 重点检查时间戳、随机数、用户状态这类动态字段出现在什么位置。
  3. 检查工具定义和消息的序列化顺序在多次请求之间是否稳定。

第三步:按 5 条做法调整并复测

  1. 把动态内容移到末尾,冻结系统提示词和工具列表。
  2. 设定历史压缩阈值,改为在检查点压缩,而不是每轮压缩。
  3. 用同一批测试任务跑一遍改造前后的版本,对比单任务的输入 Token 和缓存命中占比。

🚀 上手建议:改造前后的对比一定要用同一批任务、同一个模型完成,否则数据没有参考意义。借助 API易 的统一接口,换模型复测时不必逐个适配接口,用量统计也集中在一处,便于把“结构优化”和“模型差异”这两个变量分开观察。

关于成本测算的边界

WorkBuddy 给出过一组测算:按其任务规模和 TokenHub 旗舰档刊例价计算,缓存命中率达到 90% 时,单任务估算成本可以从约 21.06 元降到约 3.36 元。需要注意,这组数字对应特定的上下文长度和价格条件,完整条件并未公开,无法复算,也不能直接套用到你的应用上。

影响因素 为什么会改变结果 你需要核实什么
上下文长度 前缀越长,缓存复用带来的节省越多 自己任务的平均前缀长度
缓存计费方式 不同供应商对命中部分的折扣不同 目标模型官方文档中的缓存价格
缓存触发条件 最小长度、有效期等规则各不相同 官方文档中的触发与过期规则
调用间隔 两轮间隔过长,缓存可能已经过期 工具执行耗时与缓存有效期是否匹配
任务步数 步数越多,重复前缀的累积越明显 真实任务的步数分布

Agent 长任务 Token 降本的配套做法

上下文结构之外,同一份分享还提到两项应用侧策略,可以和前缀缓存一起使用。

  • 按步骤选模型:WorkBuddy 团队分享称,约八成简单步骤可以交给轻量模型,单任务成本降低约 57%。资料整理、格式转换这类步骤不一定需要旗舰模型。
  • 按原因处理故障:遇到超时、请求被拒或供应商故障时,按原因限次重试、调整上下文或切换模型。无限重试会让同一段长前缀被反复计费。

需要提醒的是,切换模型意味着换了一套缓存,前缀复用要从头开始。所以在路由设计上,最好让同一子任务的连续步骤尽量留在同一个模型上,把模型切换安排在子任务的边界。


常见问题 FAQ

Q1: 什么是 Agent 长任务里的前缀缓存?

前缀缓存指推理服务把已经计算过的输入前缀(KV Cache)保存下来,后续请求开头相同时直接复用,省去这部分的 prefill 计算。Agent 每轮都带着大段相同的历史,因此特别适合复用。

Q2: 前缀缓存和压缩历史上下文有什么区别?

前缀缓存不减少输入内容,只让重复部分的计算更便宜;压缩历史则直接缩短输入,但会改变前缀,导致本轮缓存失效。两者需要配合使用:平时只追加以保证命中,到检查点再压缩一次。

Q3: 99.4% 的输入占比适用于所有 Agent 吗?

不一定。这个数字来自一条 50 步调用链的分享。步数更少、单轮输出更长的任务,输入占比会低一些。但只要是“长前缀、短输出、多轮循环”的结构,输入占大头的规律通常都成立,建议用自己的日志实测。

Q4: 哪些 Agent 场景最值得优化前缀缓存?

– **编码 Agent**:仓库上下文长,读文件、改代码、跑测试循环频繁
– **文档或 PPT 生成**:材料读取后逐页生成,前缀高度重复
– **数据分析 Agent**:表结构和指标说明固定,每轮只追加查询结果

Q5: 怎么快速看清自己应用的输入/输出 Token 构成?

最简单的办法是按任务 ID 汇总每轮的 usage 数据。如果应用接入了多个模型,可以通过 API易 apiyi.com 统一调用,平台提供用量统计和调用日志,便于按模型、按时间段查看输入输出构成。至于平台对各模型提示缓存的支持情况和计费方式,请以平台文档的实际说明为准。

Q6: 前缀缓存有哪些已知限制?

– 各供应商的触发条件不同,例如最小长度和有效期,需要逐一查官方文档
– 工具执行耗时过长时,缓存可能在下一轮到来前就已过期
– 切换模型或修改系统提示词会让缓存整体失效
– 命中部分的折扣力度因模型而异,节省幅度需要实测确认


Agent 长任务 Token 账单核心要点 Key Takeaways

  • 成本按任务计算:一次请求约 7.2 次调用,长任务可超过 50 步
  • 输入是主要矛盾:50 步链路中输入约占 99.4%,压输出收效有限
  • 缓存从头匹配:开头只要一个 token 不同,后面的内容都无法复用
  • 结构比模型更关键:固定提示词与工具结构,变化信息放在末尾
  • 压缩要有节奏:在检查点压缩一次,避免每轮改写前缀
  • 测算不能外推:公开的成本数字依赖特定长度和价格,需要自己复测
  • 先观测再优化:借助 API易 的用量统计和调用日志拆解账单结构

总结

Agent 长任务 Token 账单的核心结论:

  1. 账单结构:成本主要来自每轮重复带入的历史上下文,输入 Token 占绝大部分。
  2. 降本原理:前缀缓存让重复前缀省去 prefill 计算,命中率由上下文结构决定。
  3. 落地方法:固定提示词和工具、变化信息放末尾、历史只追加、阶段性压缩,再配合按步骤选模型。

建议先用一周时间把日志按任务拆开,确认自己的输入占比和缓存命中情况,再按本文的 5 条做法逐项改造。多模型场景下,可以通过 API易 apiyi.com 统一接入,集中查看用量和调用记录,用同一套数据评估每一步优化的实际效果。


📚 参考资料

  1. 构建面向 Agentic 推理的下一代 LLM 推理引擎:TokenSpeed 在 AICon 2026 深圳站的分享整理
  2. 链接: infoq.cn/article/YwAayF1ylWb7oN4P0lyC
  3. 说明: 介绍 Agent 负载“长前缀、短输出”的特征、KV Cache 复用率与前缀缓存的结构设计

  4. 从模型调用到任务交付:MaaS 如何走进 Agent 生产:腾讯云 MaaS 专场内容整理

  5. 链接: infoq.cn/article/zZutPTX8bsr6NWQYNC3A
  6. 说明: 包含 WorkBuddy 关于调用次数、输入占比、前缀缓存和模型路由的分享数据

作者: APIYI 技术团队
技术交流: 关于多模型调用与用量分析的问题,欢迎通过 API易 apiyi.com 联系我们,更多资料可访问 docs.apiyi.com 文档中心

类似文章