事情本身不复杂,线索都在日志里。把 2048×1536 的后台截图直接以 detail high 传给 gpt-4o,单张图 usage 里记了 2125 个输入 token,一批两百张图跑下来成本比预估高四倍。

第一反应是「截图里有大片空白,仍按完整网格计费」,验证下来不成立。

排查方向其实有限,先把可能性排一排。high 模式按 512 像素网格切 tile,图越大块数越多。少数情况下是长边没缩到 768 或 1024,切出 12 块。

另外,多图请求每张单独计费,没有合并。

第一件事是按官方公式估算一张图的 token

python -c "print(12*170+85)"

再往下把长边缩到 1024 再传,重算块数

python -c "from PIL import Image;im=Image.open('shot.png');im.thumbnail((1024,1024));im.save('small.png');print(im.size)"

然后对纯文本界面改用 detail low 对比效果

curl https://api.openai.com/v1/chat/completions -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d '{"model":"gpt-4o","messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/png;base64,...","detail":"low"}}]}]}'

剩下的就是对同一批图对比两次的 usage 字段

python -c "print({'high':2125,'low':85})"

改完先别撤,确认这几项。缩放后单张图降到 765 token,识别结果与高清版一致,两百张的总成本下降约六成。

这里还有个坑。图片计费看的是切块数量而不是文件大小,先算块数再决定分辨率和 detail,光压缩体积对 token 几乎没有影响。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189