事情本身不复杂,线索都在日志里。图文客服每轮都把同一张商品图重新塞进 messages,十轮对话下来图片 token 被算了十次,单次会话成本从 0.03 元涨到 0.21 元,账单里 input token 占比异常。
第一反应是「缓存没有覆盖图片块」,验证下来不成立。
排查方向其实有限,先把可能性排一排。每轮都重建完整历史并重新附上图片。还有一种是图片没有被换成引用或摘要。
不容易想到的是,客户端把 base64 每次都重新上传一遍。
首轮传图,后续轮次只保留文本描述
python chat_image.py --first-turn-only
然后用图片摘要替代原图
python image_summary.py --path cup.jpg
接着统计单会话的图片 token 数
python usage.py --session abc
剩下的就是对比改动前后的单会话成本
python cost.py --before --after
怎么算真的好了,看的是同一批现象。同一会话的图片 token 只计一次,回答仍能引用图片细节,单会话成本回落到 0.05 元以内。
补一句。图片是历史里最贵的部分,多轮场景应该在首轮提取结构化描述,后面只带文本。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
