[Bug]: MiMo-V2.5 chat template is auto-detected as string, reordering multimodal content

该报错发生在 vLLM 使用 MiMo-V2.5 官方聊天模板时,多模态内容格式被自动检测为 string 而非 openai,导致图文顺序被重排。优先排查方向是检查聊天模板内容格式的自动检测是否跟随宏参数传递,可尝试显式指定 --chat-template-content-format opena

快速结论:该报错发生在 vLLM 使用 MiMo-V2.5 官方聊天模板时,多模态内容格式被自动检测为 string 而非 openai,导致图文顺序被重排。优先排查方向是检查聊天模板内容格式的自动检测是否跟随宏参数传递,可尝试显式指定 --chat-template-content-format openai 绕过检测问题。

适用环境:vLLM(main 分支,提交 4af586e185b028acf08312a4dee381b5998a137e)、MiMo-V2.5 模型(revision 63651580ca774f8504f676040460aed3e1244ac1),涉及 Jinja 聊天模板渲染。

最快修复方案:暂无确认的一步修复方案。Issue 作者验证过的临时绕法是在启动 vLLM 时添加 --chat-template-content-format openai 参数,强制使用 openai 格式而非自动检测。

注意事项:该修复方案只是绕过自动检测逻辑,并未解决根因;官方修复(PR #53824)需合并到 vLLM 源码后才能生效,届时 auto 模式应能正确识别宏参数。

问题场景

在 vLLM 中加载 XiaomiMiMo/MiMo-V2.5 模型并使用其官方聊天模板时,用户传入 OpenAI 风格的多模态内容(如 text "A" -> image -> text "B" 顺序),vLLM 的内容格式自动检测把模板识别为 string 类型,导致图片占位符被错误地移动到文本前面,输出顺序变成 <image-placeholder>\nA\nB 而不是预期的 A<image-placeholder>B

报错原文

[Bug]: MiMo-V2.5 chat template is auto-detected as string, reordering multimodal content

原因分析

根因在 vLLM 的模板内容格式自动检测逻辑(vllm/renderers/hf.py 第 398-449 行)。该逻辑目前只会识别以下两种模式:直接在 message.content 上进行循环,或循环遍历一个字面命名为 content 的变量。MiMo-V2.5 的模板把 message.content 传入了一个宏(macro),宏内部参数名是 message_content,因此自动检测失败,退回为 string 路径(interleave_mm_strings=False),导致多模态内容被重排。

此问题与 #49042 类似——那个 case 中宏参数名恰为 content 所以能命中现有检测;MiMo 的模板参数名不同所以漏检。

环境排查

  • 确认 vLLM 版本及 commit:Issue 报告时基于 main 分支 4af586e185b028acf08312a4dee381b5998a137e,新版本可能已包含修复
  • 确认模型 revision:MiMo-V2.5 使用 63651580ca774f8504f676040460aed3e1244ac1
  • 检查是否使用了 vLLM 的聊天模板自动检测功能(未显式指定 --chat-template-content-format

解决步骤

  1. 临时绕法(已验证):在启动 vLLM 时显式指定 --chat-template-content-format openai,强制使用 openai 格式解析多模态内容,可立即恢复正确的 A<image-placeholder>B 顺序。
  2. 官方修复(推荐):关注并合入 PR #53824 的修复代码。该修复通过分析 Jinja AST 跟踪宏定义和调用,识别哪些宏参数接收了 message.content,并在循环检查时匹配这些已知宏参数名,使自动检测能正确识别 MiMo-V2.5 模板中 message_content 参数。
  3. 回归测试:修复后建议运行 Issue 作者提到的 6 组回归测试,覆盖直接循环、content 变量、宏参数命名为 content/message_content、非 content 宏参数以及纯字符串模板等场景,防止后续改动破坏检测逻辑。

验证方法

修复后使用 text "A" -> image -> text "B" 的 OpenAI 内容顺序测试 MiMo-V2.5,确认 auto 模式下的输出与显式 openai 模式一致,均渲染为 A<image-placeholder>B,且不再出现图片占位符被前置的情况。

参考来源

vllm-project/vllm #53820

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22508

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注