Agent 的账单为什么涨得比感觉快
按单轮 token 数乘单价估出来的 Agent 账单,上线后基本都会被打脸。差的不是一点,是好几倍。
原因不复杂:Agent 每问一次,都要把之前发生过的事重新讲一遍给模型听。
每一轮都在重付前面几轮的钱
Agent 干活要带着上下文。第 k 轮真正送进模型的输入,是系统提示词,加上此前每一轮的用户输入、模型输出和工具返回结果,全部加起来。
所以第 k 轮的输入长度随 k 线性增长,而 N 轮加总下来,总输入是按 N 的平方量级走的。用单轮的平均值去乘轮数,估出来的数会比真实账单小一大截。
缓存是按前缀匹配的,不是按相似度
各家都提供 Prompt Cache,命中部分的读取单价通常是原输入价的 10% 到 50%,省下的钱很可观。
但它的触发条件是前缀逐字节一致。系统提示词里塞了一个当前时间戳,或者中间插进一个会变的参数,后面所有内容的前缀就全断了,缓存等于没开。这个坑很隐蔽,因为代码看起来完全正常。
间隔太久,开缓存反而更贵
缓存有存活时间。部分厂商对显式写入缓存收基础输入价的 1.25 倍作为创建费。
如果 Agent 是低频离线任务,两次调用间隔超过 TTL,那么每一轮都在重新付那 1.25 倍的写入费,却一次读取折扣都吃不到。这种场景下开缓存比不开更贵。我自己是查各家计费页才反应过来的,之前一直默认开缓存总不会亏。
爆窗那一轮之后,成本不能再外推
轮数够多,历史输入加输出迟早超过模型的上下文窗口。到那时你必须做滑动窗口、定期摘要或者裁工具返回。
麻烦的是截断会改变历史结构,原本建好的缓存前缀被打断,下一轮又要按基础价或写入价全量重来。所以爆窗那一轮往后的曲线,不能按前面的斜率直接延长。
与其估,不如逐轮算一遍
这几件事叠在一起,心算是算不清的。把轮数、每轮输入输出长度、工具返回长度填进 Agent 多轮成本演化计算器,它会逐轮给明细,爆窗那一轮会标出来。想知道各家端点在长交互下的真实响应,可以对照 API 延迟实测榜。
常见问题
为什么 N 轮的账单按平方量级增加?
第 k 轮要把前面 k-1 轮的输入、输出和工具结果全部重新发一遍。单轮输入随轮数线性累加,N 轮求和之后,总消耗就与轮数的平方成正比。
怎么保证 Prompt Cache 能命中?
把固定不变的系统提示词和静态说明放在上下文最前面,前缀部分不要出现随机数、当前时间戳或任何会变的参数,保证逐字节一致。
调用间隔很长,怎么避免 1.25 倍写入费?
如果间隔远超厂商的缓存 TTL,先算一笔账再决定要不要打显式缓存标记。缓存吃不到读取折扣时,那笔写入溢价是纯亏。
文中价格与价格表同源、每日核对。选型前去看一眼最新价。
打开价格表 →