问题出现得很突然,日志倒是留得挺全。同一请求里放四张 1024x1024 的截图,按单张公式算出 3060 token,实际 usage 记了 4300,分开四次请求总和反而只有 3100,批量报价因此偏低两成。
刚开始盯着「每张图的切块数受宽高比影响」,折腾了半个多小时,排掉了。
这类报错背后常见的原因有几处,逐个排除就行。同请求多图有额外的拼接与缩放开销。另一种情况是detail 为 high 时按整批最长边统一缩放。
另外,低细节模式与高细节模式单价不同。
先用一次调用读出真实 usage
curl -s https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d @img4.json | jq '.usage'
同样四张拆成四次单独调用对比
python img_sep.py --files a.png,b.png,c.png,d.png --report
然后按 detail 分别测一组样本
python img_token.py --detail high --size 1024x1024
末了用实测系数修正报价
python estimate.py --coef 1.4 --images 4
怎么算真的好了,看的是同一批现象。报价与实际 usage 偏差收敛到 5% 以内,四张图合发与拆发的成本差异能算清楚。
容易忽略的是,图片 token 不是按张线性相加,缩放和切块才是主因,公式只能当起点,得用真实调用校准。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
