智能体越用越贵?一张成本核算表找出钱都花在哪
Agent 的单次成本经常是聊天机器人的几十倍。本文把成本拆成输入放大、工具往返、重试、缓存失效四个来源,给出核算公式和五项具体优化。
单次对话 0.02 元,单次任务 2 元
很多人第一次把聊天机器人升级成 Agent,账单涨了 50 倍,却说不清为什么。
原因在于运行模式完全不同:它不是”一问一答”,而是”读上下文—想—调工具—读结果—再想”。每一轮都要把历史全部重发一遍。成本随轮次近似二次增长。
四个真实的成本来源
1. 输入放大 第 1 轮输入 2000 token,第 20 轮可能是 40000 token。这不是模型的问题,是上下文累积的必然:轮次越多,每轮都在为”已经说过的话”重复付费。
2. 工具往返的隐性开销 一次工具调用 = 一次模型输出 + 一次工具结果 + 一次模型阅读结果。工具返回的大段 JSON 会完整计入输入。抓一个网页返回 8000 token 的 HTML,你就为它付了三次钱。
3. 重试与自我纠错 Agent 最常见的失败模式是”调错参数 → 报错 → 修正 → 再调”。好的一面是最终成功,坏的一面是成本翻倍。没有重试上限的 Agent,会陷入长时间空转。
4. 缓存失效 提示词缓存能显著降低重复输入的代价,但 agent 场景里两个动作会打穿缓存:工具调用插入导致前缀变化,以及上下文中途被裁剪或重排。缓存一旦失效,全量重算。
一张可套用的核算公式
不要凭感觉估。按任务记录四项数据:
单任务成本 = Σ(每轮输入 token × 输入单价)
+ Σ(每轮输出 token × 输出单价)
+ 工具调用费用(搜索/爬取/第三方 API)
然后用这个指标做横向比较:
成本/成功率 = 平均单任务成本 ÷ 任务成功率
这个指标比”平均成本”有意义得多:一个便宜但成功率 60% 的方案,实际每个成功任务可能比贵的方案更贵。
五项见效最快的优化
① 上下文压缩代替全量保留 每 N 轮把历史总结成结构化摘要(已完成、当前状态、待办),替换原文。实测可削减 40%~60% 输入量,质量几乎不降。
② 工具返回做结果裁剪 在工具层就把返回压到必要字段,而不是把原始响应丢进上下文。抓网页先做正文提取,列表接口只留前 N 条。
③ 分层模型 规划、总结用强模型;格式转换、字段抽取、简单分类用便宜模型。Agent 里大量调用并不需要强模型。
④ 硬性轮次与预算上限 设最大轮次和最大花费,超限就产出”部分结果”并告知用户。这比无限重试省钱,体验也更好。
⑤ 让缓存真正命中 系统提示词与工具定义放在最前且保持稳定,把所有动态内容(用户输入、时间戳)放到末尾。
上线前必须建立的三个观测
- 每任务 token 分布:看 P95 而非均值。少数超长任务会吃掉大部分预算。
- 轮次分布:轮次异常长的任务,往往是提示词或工具设计有缺陷。
- 缓存命中率:连续两周低于 30%,就该检查上下文结构。
结论
Agent 的成本问题,80% 源于上下文管理,20% 源于定价。
在写下第一行业务代码之前,先把上面那张核算表建好。有数字,优化才有方向;没数字,你只会在”换个便宜模型”里反复打转。