先看现象。月底对账发现后台用量 1280 万 token,发票账单只有 1190 万,差额集中在每月最后一天晚上十一点到次日一点,财务要求解释这九十万 token 去了哪里。
真正麻烦的地方在于,几个原因的现象几乎一样。用量按 UTC 自然日切分 账单按整月结算。也可能是时区差让跨日请求落到不同账期。
还有一种情况,缓存命中的 token 在用量页单独统计。
另外,赠送额度抵扣不计入账单金额。
上来先导出按小时聚合的用量明细
curl -s 'https://api.openai.com/v1/organization/usage/completions?bucket_width=1h' -H "Authorization: Bearer $ADMIN_KEY" -o usage.json
再往下把账单日期按 UTC 重算一遍
python reconcile.py --usage usage.json --invoice invoice.csv --tz UTC
接着核对缓存与赠送额度两项
python reconcile.py --breakdown cache,grant
末了把对账口径写进月报
python -c "print('state UTC and cache rules in report')"
恢复的判定其实很直接。重算后的差额收敛到千分之一以内,跨日那几条请求能逐条对上账期。
这里还有个坑。对账先统一时区和口径,缓存、赠送、批处理折扣都会让用量和金额对不上,别急着说平台算错。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
