记录一下那天晚上的排查过程。这个月 OpenAI 账单 1240 美元,我按 usage 里的 prompt_tokens 乘单价算是 1155 美元,差 7%,财务要求逐条解释。
刚开始盯着「Batch 接口有五折,账单按折后价出」,折腾了半个多小时,排掉了。
排查方向其实有限,先把可能性排一排。cached_tokens 单价与普通输入不同,需要单独计价。还有一种是completion_tokens 里包含 reasoning_tokens,单价也不一样。
还有一种情况,账单按 UTC 日切,usage 按本地时区聚合。
上来先把 usage 的各个字段分别汇总
python -c "import json;u=json.load(open('usage.json'));print({k:u[k] for k in u if 'token' in k})"
随后按不同单价分字段重算一次
python -c "print(round(8200*2.5/1e6+3000*10/1e6+1200*1.25/1e6,4))"
接着把时段统一到 UTC 再对齐账单日期
python -c "from datetime import datetime,timezone;print(datetime.now(timezone.utc).date())"
末了用账单明细接口导出逐条记录核对
curl -s https://api.openai.com/v1/organization/costs -H "Authorization: Bearer $OPENAI_ADMIN_KEY"
命令输出我都留了记录,免得改完记不清原来的值。
别只看报错消失,验证要多做一步。分字段重算后的金额是 1238.6 美元,与账单差 1.4 美元,差异来自一笔跨日切分的请求,财务确认可以结账。
补一句。对账要用同一套口径,cached、reasoning、batch 三种价格混在一起算,差几个百分点是必然的。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
