Prhub

#2044 support rich image config for vlm

原始 PR 作者 demouo 合并时间 2026-06-10 14:06 文件变更 1 提交数 1 评论 0 代码增减 +8 / -1

执行摘要

VLM 支持丰富图像配置

目前 VLM 仅支持简单的图像路径/URL/base64 字符串列表格式,无法满足 Qwen3-VL 等模型对每张图像精细控制(如像素限制)的需求。PR body 指出该功能缺失,并引用 Qwen3-VL README 作为新支持的格式参考。

值得精读。该 PR 展示了如何以最小侵入方式扩展多模态输入格式,设计简洁。后续可考虑添加单元测试覆盖新分支。

讨论亮点

无 review 评论,PR 由作者直接合并,无讨论。

实现拆解

  1. 入口变更:在 slime/utils/data.py_build_messages 函数中,处理多模态占位符替换的循环内,将原先直接构造 dict 的逻辑拆分为先检查 item 数据类型。
  2. 核心逻辑:如果 item 已是 dict(新格式),则直接将整个 dict 加入 content_list;否则(字符串),依旧按原有方式包装为 {"type": mt.name, mt.name: item}
  3. 测试配套:无新增测试文件,但旧测试应仍通过(因为修改是兼容的)。
文件 模块 状态 重要度
slime/utils/data.py 数据处理 modified 5.8

关键符号

_build_messages

关键源码片段

slime/utils/data.py core-logic

核心数据预处理文件,实现图像配置格式扩展,是本次变更的唯一文件。

# slime/utils/data.py (line 164-171 附近 )
item = content.pop(0)
# Support rich image config from https://github.com/QwenLM/Qwen3-VL/blob/main/README.md
# 如果 item 已经是 dict(新格式),直接追加到 content_list
if isinstance(item, dict):
    content_list.append(item)
# 否则(字符串等),按原有方式包装为统一格式
else:
    content_list.append({"type": mt.name, mt.name: item})

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低。修改仅 9 行,逻辑向后兼容:当 item 不是 dict 时行为完全不变。但缺乏测试覆盖新格式的分支,未来重构可能引入回归。另外如果数据中 dict 的键名与 mt.name 冲突可能导致意外行为,但可能性小。

对用户:支持更丰富的图像配置,提升 VLM 使用灵活性。对系统:无性能或兼容性影响。对团队:小范围易维护的功能扩展。

缺少测试覆盖

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论