为什么第一次调用更贵
详解缓存写入成本的构成、计费规则、回本时机与无效成本场景,帮你全面清晰掌握AI编程缓存的核心价格逻辑与实用避坑技巧
上一篇的价格表里有一个反直觉的数字:缓存写入是 1.25×(1 小时 TTL 更是 2×)。也就是说,开启缓存后的第一次调用,不但没省钱,反而比完全不用缓存更贵 25%。这一篇解释这笔“入场费”从哪来、什么时候回本、什么情况下会白花。
普通调用
先看没有缓存时服务端在做什么。模型处理输入的过程,本质是为每个 token 计算注意力所需的内部状态(K/V 张量)。普通调用里,这些状态用完即弃:
- 你付的 1× 输入价,买的是“算一遍”的 GPU 算力;
- 请求结束,几十 GB 显存被释放给下一个用户;
- 下一轮同样的前缀进来,从零再算一遍,再付一遍 1×。
缓存写入,还要存下来
标了 cache_control 之后,服务端做的事变成了计算 + 持久化两件:
多出来的 0.25×,买的是“存下来”这件事的真实成本:
- KV 状态非常大。每个 token 的 K/V 张量在几十到上百 KB 量级(取决于模型结构),比 token 文本本身大几个数量级——30K token 的前缀,缓存下来是 GB 级的数据;
- 要占用昂贵的存储。这些数据必须放在能被推理集群快速加载的地方,离 GPU 越近越贵;
- 要维护生命周期。TTL 计时、每次命中刷新、过期回收、按账号和模型隔离,都是持续开销。
这也解释了为什么 1 小时 TTL 的写入价是 2×,变的只是“存多久”——存 12 倍的时长,存储费自然更高。
一次请求进来,服务端的完整决策路径是:
注意“未命中”的三种来源:首次调用只是其中之一。前缀变了一个字节、或 TTL 过期,都会让你再付一次 1.25×——这是下一篇的主题。
什么时候回本
把写入费理解为一笔投资 0.25×,换后续每轮 0.9× 的折扣。算一下回本点:
| 场景 | 两轮总费用(以 1× 为单位) |
|---|---|
| 不用缓存,跑 2 轮 | 1 + 1 = 2.0 |
| 用缓存,跑 2 轮 | 1.25 + 0.1 = 1.35 |
只要同一前缀被复用一次,就已经回本。轮数越多差距越大——沿用上一篇的例子(30K token 前缀),累计费用曲线是这样的:
上面那条陡峭的线是无缓存(每轮全价 3 万 token),下面平缓的线是有缓存(第一轮 3.75 万,之后每轮只加 0.3 万)。第一轮有缓存反而更高——这正是“第一次调用更贵”的直观图像;从第二轮起两条线交叉,之后差距一路拉大,50 轮时约为 12% 对 100%。
什么情况下写入费是白花的
这笔投资也有亏本的场景,都值得提前识别:
- 一次性请求、不会有第二轮(比如批量离线处理里每条数据的前缀都不同),标
cache_control纯属多付 25%; - 前缀不稳定,结果是每一轮都在付 1.25× 的写入费,却从来不命中——比不开缓存还贵 25%,这是最糟的状态。验证方法
usage里cache_read_input_tokens是否长期为 0 而cache_creation_input_tokens每轮都很大; - 前缀太短(多数模型 1024 token)不会真的写入,不亏钱,但也没意义。