不少人看到中转站账单第一反应是「怎么比我自己算的贵」,其实多数时候不是被坑,是口径没对齐:倍率没换算成单价、缓存命中率用了别人的数字、用量统计又跟账单的统计范围不一样。这篇给一套三步核对的顺序,先算单价,再按自己的缓存命中率折一次,最后拿真实用量对账;对不上时按固定顺序排查,避免来回猜。
不少人看到中转站账单第一反应是「怎么比我自己算的贵」。多数时候不是被坑,是口径没对齐:倍率没换算成单价、缓存命中率用了别人的数字、用量统计范围又跟账单不一样。三件事里任意一件错位,差额就能翻倍。
这篇给一套固定顺序:先把倍率换成人话算出单价,再按你自己的缓存命中率折一次,最后拿真实用量对账。对不上时按固定顺序排查,不用来回猜。三步走完,账单该不该认基本就有答案了。
第一步:把倍率换成人话,算出你自己的单价
倍率本身不是价格,它必须乘在一个基准单价上才有意义。所以第一步不是看倍率数字大小,而是先确认这家的基准挂的是哪套官方价目。有的站挂输入价,有的挂一个综合价,基准不同,同样的倍率算出来完全不是一个数。
换算公式是固定的:基准单价乘以倍率,等于你实际每百万 token 的价。输入和输出的倍率通常不一样,所以要分开算两遍,别拿一个数糊弄整张账单。基准价会变,别用别人截图里的数字,去站内官方 API 价格页核对当期数字。
| 你看到的写法 | 容易犯的错 | 正确动作 |
|---|---|---|
| 只写「倍率 0.6」 | 直接当成单价六折 | 先找到它乘的基准是哪套价目 |
| 输入输出一个倍率 | 把两者合并成一个数算 | 分开算输入价和输出价 |
| 挂综合价 | 拿输入价去套 | 问清基准定义再对齐两边 |
| 用旧截图比价 | 基准已经调过 | 到站内价格页看当期数字 |
- 先确认基准:这家倍率乘的是哪套官方价目,输入价还是综合价
- 输入输出分开算两遍,各自乘各自的倍率
- 不同站对比前先把基准对齐,否则比出来的是两边基准的差
- 拿别人截图里的单价套自己的账是最常见的第一处误算
第二步:按自己的缓存命中率折一次
缓存命中和未命中的计价不一样,命中部分按更低的档算,所以真实账单天然会低于「全按未命中单价乘总量」的结果。问题在于,很多人折这一下时用的是别人给的命中率,而不是自己的。
命中率高度取决于你的提示词是否重复、上下文是否稳定。同一套代码换个写法,命中率能差出一大截。所以这一步只用你自己的数据,别用行业平均值或者群里流传的那张表。缓存命中条件的原理另有一篇专门讲,这里只说怎么把它代进价格式子。
- 拿到自己的命中率从你自己的请求日志里统计命中 token 占总输入 token 的比例,别用估算值。
- 算两个边界分别算全命中、全未命中两种极端情况下的金额,真实账单应该落在这两个数之间。
- 落点验证真实账单落在区间外,说明还有别的因素没算进来,回到第一步检查基准,或者看有没有重试请求。
两个边界值这个做法很实用:它不需要你精确知道每次请求的命中情况,只要账单在区间内,就说明你的单价和口径大致对得上。落不进去,再往下查。
第三步:拿真实用量对账,算完再吵
对账的动作很机械:先取出账单上的总 token 和金额,再用自己的日志按同样口径汇总一遍,两边做差。麻烦的不是减法,是口径。统计时间范围、是否包含重试与失败请求、输入输出是否分开计,这三件事任意一件不一致,差额就能解释掉大半。
差额落在四舍五入和统计延迟造成的范围内,就不用追。差额成倍,或者每次对账都出现方向一致的稳定偏移,才值得进入排查。这时候先判断是不是这家整体调价了,站内的价格变动追踪就是干这个的,别把调价当成自己算错。
| 对账项 | 账单口径 | 你的口径怎么对齐 |
|---|---|---|
| 时间范围 | 按结算周期切 | 日志按同一时段截取,注意时区 |
| 重试与失败 | 可能计入也可能不计 | 先问清规则,再决定要不要补进去 |
| 输入输出 | 通常分开列 | 汇总时分开统计,不要合并成一个总数 |
| 缓存命中 | 按更低档计 | 先用你的命中率折算,再和总额比 |
对不上时的排查顺序与常见误算
差额确认要追之后,按固定顺序查,不要东一榔头西一棒子。顺序是:时间范围对不对,有没有算上重试和流式中断的请求,输入输出是否分开,缓存命中率是不是高估了,基准价是不是已经变过。前一项排除掉再进下一项,中间不要跳。
- 把倍率当单价直接用,漏掉了乘基准这一步
- 用了别人的缓存命中率,和自己的实际请求形态不匹配
- 只统计了成功请求,重试和中断的请求没算进去
- 拿旧基准价算新账单,中间调过价没注意到
- 时区或结算周期切分点不同,跨了半个周期
如果五项都排除完还是对不上,别空口去问。把账单时间段、模型名、总 token 数和你的汇总数整理成一页,标出差额,再跟对方核对,效率高得多。
下一步用手上的账单先跑一遍三步核对,再拿站内的价格变动记录对照时间点,能快速判断差额是算错还是调价。→常见问题
中转站的倍率是不是越低越便宜?
不一定。倍率要乘在基准价上,两家用不同基准时,倍率低的那家实际单价可能更高。判断办法是先各自换成「每百万输入 token 多少钱、输出多少钱」,再比这两个数。另外还要看这个倍率覆盖哪些模型,有的站只对部分模型给低倍率。
为什么我自己算的比账单少?
最常见的原因是只统计了成功请求。重试、超时后重发、流式中断的请求通常也会计费,但很多日志不记录或者被当成失败丢掉了。其次是输入输出没分开算,或者缓存命中率估高了。先去用量日志里把失败和重试也捞出来,再重新汇总一次。
缓存命中率该用哪个数?
用自己的。命中率跟提示词结构、上下文是否复用、调用间隔都有关系,同一个模型在不同项目里能差出好几倍。如果你还没有统计过,先按 0(全未命中)算一个上限值,这样账单只会比预算低,不会超;等积累一段日志再换成真实值。