账单为什么和预估不一样:缓存、倍率与计费口径

成本与用量

四项计价(输入/输出/缓存写/缓存读)+ 站方倍率,决定了你实际付多少钱。附四步核对法,把每一笔对上账。

「我明明只问了几句,怎么扣了这么多」——只要把账单拆成四项,答案通常只有一个:重复内容没有按缓存计价,或者站点倍率跟你以为的不一样。

账单只有四项

计价项什么时候产生常见相对单价怎么省
输入(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× 重发——比完全不缓存更贵。

站方倍率与分组

中转站的说法通常是「按官方价 × 倍率」,不同分组(渠道来源)倍率不同:官方直连最贵,共享池/订阅切片便宜。倍率本身不是问题,不写清楚才是问题。

  • 要求站点说明:倍率是针对官方价,还是自己的一套挂牌价;
  • 确认缓存是否也参与倍率:有的站对缓存读取不打折,等于缓存优势被吃掉;
  • 注意「按次计费」的分组:它按调用次数收钱,长输出场景会非常贵;
  • 同一模型名在不同分组下价格不同,先确认你充值的分组能调哪些模型。

四步核对法

  1. ① 记录一条精确请求固定提示词、固定 max_tokens,记下返回体的 usage 四个数字。
  2. ② 按公示价格算应扣金额输入量 × 输入价 + 输出量 × 输出价 + 缓存写/读分别计价。
  3. ③ 对照面板余额变化差额超过四舍五入误差,就说明计价口径与公示不一致。
  4. ④ 重复三天同一测法单次偏差可能是巧合,连续偏差是口径问题,这才是换站的理由。
相关工具把价格换算成你能感知的单位:一次调用、一段对话、一个月大概多少钱。

常见问题

缓存写入本身就贵,是不是干脆别开?

只要重复内容会被再次使用,写入就是划算的:写一次 1.25×,之后每次都只要 0.1×。只有当内容只用一次、或者前缀总在变时,缓存写入才是纯浪费。

为什么同一个模型在两个站价格差 5 倍?

可能的解释有:渠道来源不同(官方直连 vs 共享池)、缓存计价口径不同、按次 vs 按量、以及最坏的一种——把请求转发给了更便宜的模型。前三种可以问清楚,最后一种要靠同题对比验证。

控制台只显示总花费,没有明细怎么办?

自己算。把每次调用的 usage 记下来,按官方价格算出理论花费,与余额变化比对。没有明细这件事本身就是一个风险信号,值得在选站时纳入判断。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。