← 返回资讯

网关用量和上游账单对不上,怎样做一份逐请求对账样本

2026-10-23

对账差了几元,先别拿总额除出一个“误差率”就结束。总额可能同时混有漏单、计价单位错误和舍入差异,它们恰好互相抵消时,合计甚至能完全相等。要定位问题,需要一份能逐条匹配、逐步重算的样本。

下载逐请求对账演练脚本,在本地执行 python reconcile-demo.py。数据和单价全部为本文合成,不代表任何厂商价格或真实账单;只用 Python 标准库。输出的四类结果应为 match、rounding、unit_error、missing_gateway 各一条。

把匹配键与计费口径写在数字前面

示例用 attempt_id 表示一次实际调用,operation_id 表示业务任务。不能用操作编号去重所有重试:两次尝试是否计费取决于上游规则,把记录合并掉会失去复核依据。如果供应商账单没有逐请求标识,先核对可导出的最细粒度,并声明只能按日或按模型比较,不能补造不存在的精确匹配。

金额至少带币种、计量单位、单价生效版本和原始精度。缓存、批处理或套餐折扣单列为规则来源,不从模型名猜折扣。不了解基本计费归集的读者,可先看网关计费与对账,本篇专注可重跑的差异样本。

四条样本各测一件事

尝试网关观察上游账单本文分类
a0.0030000.003000完全匹配
b0.0033330.003330假定该导出按五位舍入产生的差异
c3.0000000.003000单位换算差一千倍
d没有记录0.002000网关侧缺记录,原因待查

附件把这些值写成十进制字符串,用 Decimal 运算。不要先转成二进制浮点数,再指望最后四舍五入能消除全部问题。金额相差一千倍也不能仅凭比值确认根因,脚本的分类叫“单位嫌疑”;真实系统还可能是倍率配置或字段选错,需要查看规则版本。

这里没有设置一个通用的“允许误差 5%”。示例只在已经明确导出精度的 b 记录上比较相应舍入结果;不能把所有小金额差都宽松放过,更不能因为绝对值很小就忽略大量重复发生的差异。

接入真实导出前先做三次守恒

第一次数记录:原始文件有多少条、去掉了哪些重复导出行、最终保留多少条。去重应依据稳定记录键和来源文件,不能用“时间、模型、金额一样”判定同一调用;并发请求经常恰好一样。

第二次加金额:保留币种分别求和,不能在同一列直接相加美元与人民币。出现负数或退款时保留记录类别,不能为了账面好看直接过滤。第三次分组复核:按计价版本、模型和日期拆开,确认差异是不是集中在某次变更,而非把旧记录套当前单价。

把无法匹配的两边分别输出。只有上游记录时,可能是绕过网关、导出延迟、日志缺失或匹配键错误;仅凭这一份表不能指认某个人私下调用。只有网关记录时,也要核对账单结算窗口,而不是立刻判定供应商少收费。

交付一张可以重新计算的差异表

每行保留原始值、规范化值、计算公式、分类依据和待补证据。修改一次映射规则,重新运行后应能知道哪些行改了分类。人工调整必须留原因,不要在 Excel 里直接覆盖原始账单数。

脚本只是最小教学夹具,没有连网关,也没有实现完整币种换算、退款或复杂套餐。把它用于真实对账前,先选一组来源清楚、覆盖折扣和失败尝试的脱敏记录,核对财务口径;服务商账单与网关估算各有用途,不能用样例输出代替正式账务确认。

常见问题

总额一样为什么还要逐条看? 漏单和重复单、正负差异可能抵消;总额一致不能证明记录完整。

上游只有日报表怎么办? 按可获得粒度对账,并写明不能逐请求确认。不要把近似关联包装成精确归因。

为什么一定保留单价版本? 否则无法重算跨越调价时点的历史记录,当前价格不等于发生时价格。

核对依据

核对日:2026-10-23。Python Decimal 官方说明用于十进制计算和量化;RFC 3339用于带偏移时间表达。样本单位、分类规则和金额都是独立演练设定,不引用厂商当前报价。

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。模型接入、token 计费上有问题,也可以直接问。

去留微信

不想自己搭网关、自己维护渠道?

力达云是托管的 OpenAI / Anthropic 双格式端点,一期提供 DeepSeek,注册送 ¥5 额度。

去试用

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。