先看现象。月底对账发现后台用量 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')"

恢复的判定其实很直接。重算后的差额收敛到千分之一以内,跨日那几条请求能逐条对上账期。

这里还有个坑。对账先统一时区和口径,缓存、赠送、批处理折扣都会让用量和金额对不上,别急着说平台算错。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189