「我明明只问了几句,怎么扣了这么多」——只要把账单拆成四项,答案通常只有一个:重复内容没有按缓存计价,或者站点倍率跟你以为的不一样。
账单只有四项
| 计价项 | 什么时候产生 | 常见相对单价 | 怎么省 |
|---|---|---|---|
| 输入(input) | 每轮发送的全部内容 | 1× | 缩短提示词、减少无关历史 |
| 输出(output) | 模型生成的内容 | 3~5× | 限制输出长度,让它少说废话 |
| 缓存写入(cache write) | 把重复前缀存进缓存 | 1.25×(长时效缓存可能 2×) | 内容稳定后再开缓存,别反复改前缀 |
| 缓存读取(cache read) | 下一轮复用缓存 | 0.1× | 保持前缀完全一致 |
判断一个站值不值,本质是看第 3、4 项是否真的生效。同一段连续对话,缓存正常与不正常,账单可以差好几倍;而站点页面上通常不会写这一点。
缓存为什么是省钱的开关
Agent 类工具(Claude Code、Codex 等)每一轮都会把之前的全部内容重发一遍。设前缀总量为 P,轮数为 N,那么输入量约等于 P×N;其中 P 的大部分在轮与轮之间是重复的。
- 缓存正常:重复部分按 0.1× 计价,成本随轮数近似线性增长;
- 缓存不生效:每轮全价重算,成本同样是线性,但单位高了近一个数量级;
- 缓存写了读不回:付了 1.25× 的写入费,下一轮又按 1× 重发——比完全不缓存更贵。
站方倍率与分组
中转站的说法通常是「按官方价 × 倍率」,不同分组(渠道来源)倍率不同:官方直连最贵,共享池/订阅切片便宜。倍率本身不是问题,不写清楚才是问题。
- 要求站点说明:倍率是针对官方价,还是自己的一套挂牌价;
- 确认缓存是否也参与倍率:有的站对缓存读取不打折,等于缓存优势被吃掉;
- 注意「按次计费」的分组:它按调用次数收钱,长输出场景会非常贵;
- 同一模型名在不同分组下价格不同,先确认你充值的分组能调哪些模型。
四步核对法
- ① 记录一条精确请求固定提示词、固定 max_tokens,记下返回体的 usage 四个数字。
- ② 按公示价格算应扣金额输入量 × 输入价 + 输出量 × 输出价 + 缓存写/读分别计价。
- ③ 对照面板余额变化差额超过四舍五入误差,就说明计价口径与公示不一致。
- ④ 重复三天同一测法单次偏差可能是巧合,连续偏差是口径问题,这才是换站的理由。
常见问题
缓存写入本身就贵,是不是干脆别开?
只要重复内容会被再次使用,写入就是划算的:写一次 1.25×,之后每次都只要 0.1×。只有当内容只用一次、或者前缀总在变时,缓存写入才是纯浪费。
为什么同一个模型在两个站价格差 5 倍?
可能的解释有:渠道来源不同(官方直连 vs 共享池)、缓存计价口径不同、按次 vs 按量、以及最坏的一种——把请求转发给了更便宜的模型。前三种可以问清楚,最后一种要靠同题对比验证。
控制台只显示总花费,没有明细怎么办?
自己算。把每次调用的 usage 记下来,按官方价格算出理论花费,与余额变化比对。没有明细这件事本身就是一个风险信号,值得在选站时纳入判断。