一次传 4 张装修前后对比图,让模型指出差异,回答只描述了最后一张,前三张像没看到,图片都以 image_url 形式放在同一条 user 消息里。

一开始怀疑是「每张图缺少一句说明」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。多图消息里模型注意力偏向后放置的图。也可能是图片之间没有文字分隔与编号。

不容易想到的是,问题写在图片前面 距离太远。

给每张图前加编号文字

python build_msg.py --images a.jpg b.jpg c.jpg d.jpg --label 图1 图2 图3 图4

随后把问题放在最后一张图之后

python -c "import json;m=json.load(open('msg.json'));print(m['content'][-1]['type'])"

接着分批传图再汇总

python describe_each.py --images a.jpg b.jpg --out part1.json

剩下的就是对比两种排布的回答覆盖度

python eval_cover.py --a msg.json --b part1.json

恢复的判定其实很直接。回答里四张图都被提到,差异描述与前后的对应关系正确,覆盖度统计达到 4/4。

这里还有个坑。多图请求不是简单的图片叠加,编号加就近提问能明显提升覆盖,图多时优先分批。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189