同一张 2000×1500 的图按 detail=low 和 detail=high 各调一次,账单里的输入 token 相差好几倍,团队里没人说得清该用哪个档位。
这类报错背后常见的原因有几处,逐个排除就行。low 会把图片缩到固定较小分辨率再编码;high 会先切块再逐块编码,token 随尺寸增长;不传该参数时走默认档位,行为与预期不同;高分辨率小字任务里缩放过度,答案错误率上升。
上来先用低精度档位跑通链路再评估效果
payload['messages'][0]['content'][1]['image_url']['detail'] = 'low'
接着对比两档在同一批问题下的准确率
python eval_image.py --detail low,high --cases 50
再往下对高清图做裁剪,只送关键区域
python -c "from PIL import Image;Image.open('a.jpg').crop((0,0,800,800)).save('crop.jpg')"
剩下的就是把每档的 token 与准确率一起记录
print({'detail': d, 'tokens': u, 'acc': a})
改完先别撤,确认这几项。在准确率可接受的前提下,输入 token 明显下降,账单金额回到预算之内,长图任务也不再动辄超限。
容易忽略的是,图片先缩放再送并不总是更划算,小字识别任务里缩图会让准确率大幅下降,最后反而要重跑更费钱。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。