Skip to content

为什么第一次调用更贵 ​

上一篇的价格表里有一个反直觉的数字:缓存写入是 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)不会真的写入,不亏钱,但也没意义。

顺带一提:OpenAI 为什么"不收"写入费

OpenAI 的 automatic prompt caching 不显式加收写入费,但命中折扣也只有五折(部分模型更低),且缓存去留由服务端决定。两家本质相同:存储成本总要有人付——Anthropic 选择显式计价、给你显式控制;OpenAI 选择摊进整体价格、全自动。对 Claude Code / Codex 用户来说结论一致:第一轮贵是正常的,别让它反复发生就好。

AI Coding Guideline — 面向 Claude Code / Codex 等 AI 编程工具的实践指南