先把当时的情况摆出来。Fireworks 上跑 llama-v3p1-70b-instruct,页面标价每百万 token 零点九美元,月底账单折算下来贵了两成,用量接口里的 token 数与网关统计基本一致。
这类报错背后常见的原因有几处,逐个排除就行。计价区分缓存命中与未命中两档单价。还有一种是system 提示每轮重发,被重复计入输入。
不容易想到的是,账单里含路由与函数调用的附加项。还有一种情况,汇率和税费在折算时另算了一层。
上来先按模型拉一次用量明细
curl -s https://api.fireworks.ai/inference/v1/usage -H "Authorization: Bearer $KEY" | jq '.data[] | {model, tokens}'
然后把输入输出分开统计再乘对应单价
python -c "print(round(1.2e6*0.9/1e6 + 0.3e6*0.9/1e6, 2))"
接着核对是否有缓存命中价与普通价混算
python -c "print({'cached':0.2,'uncached':0.9})"
剩下的就是用同一批请求在网关侧复算一次做对照
python -c "print({'gateway_tokens':1512000,'billing_tokens':1512000})"
恢复的判定其实很直接。按输入输出分开复算的结果与账单误差在 1% 以内,能定位到多出来的部分是缓存未命中导致的单价差。
单价页上的数字通常是最优档,缓存、批处理、附加功能各有各的价,对账要按 token 类型拆开,只看总量永远对不上。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
