先把当时的情况摆出来。同一个应用同时调了 gpt-4o 的默认端点和亚太区域的部署,单价分别是每百万输入 2.5 与 3.0 美元,成本报表按统一单价乘总 token,月底算出来比实际账单低 18%,没人能说清差在哪。

原因不止一个,得分开看。不同区域的同一模型单价不同,报表只按一个单价算。也可能是请求头里带了区域但日志没记,事后无法归类。

少数情况下是SDK 的 base_url 配了两个,日志里只记了模型名。不容易想到的是,缓存命中的折扣在不同区域规则也不同。

上来先确认两个端点的实际单价

python -c "print({'global_in':2.5,'apac_in':3.0,'global_out':10.0,'apac_out':12.0})"

接着在日志里补上端点和区域字段

python -c "print({'endpoint':'apac','region':'ap-southeast-1','model':'gpt-4o'})"

然后按端点和模型分组重算成本

python -c "import collections;rows=[('apac',1000),('global',4000)];print(collections.Counter(dict(rows)))"

剩下的就是对比重算结果与账单

python -c "print({'recalc': 41.2, 'invoice': 41.2})"

怎么算真的好了,看的是同一批现象。成本报表按端点分组后与账单误差在一美元以内,日志里能查到每次调用的区域,超支时能立刻定位到哪个端点。

单价是跟着端点和区域走的,报表维度里少一个字段,最终数字就会系统性地偏,且很难事后补回来。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189