Default `gr.load_chat(…)` with large and small inputs leads to `model is not multimodal` error in `vllm serve`

该报错发生在 Gradio 默认 `gr.load_chat(...)` 聊天界面中,当用户先粘贴超长文本(被 Gradio 包装为 `text_encoded`)再发送短文本时,历史消息中的长文本被错误编码为图片请求,导致后端 vLLM 报 `model is not multimodal` 错误

快速结论:该报错发生在 Gradio 默认 `gr.load_chat(…)` 聊天界面中,当用户先粘贴超长文本(被 Gradio 包装为 `text_encoded`)再发送短文本时,历史消息中的长文本被错误编码为图片请求,导致后端 vLLM 报 `model is not multimodal` 错误。优先排查 `gr.load_chat()` 中是否启用了多模态文件上传,以及在消息历史中 `text_encoded` 类型是否被正确处理。

适用环境:Gradio 5.32.1(Issue 确认版本),Linux 操作系统,后端使用 vLLM 的 `vllm serve` 部署 Qwen/Qwen3-8B 模型。

最快修复方案:在 `gr.load_chat()` 中显式设置 `file_types=[]` 来禁用多模态上传功能,Issue 确认此操作会使 “pasted text” 图标消失且不再触发报错。

注意事项:禁用 `file_types` 会同时禁用所有文件上传能力,包括图片等合法多模态输入;此方案是临时绕过而非根治编码逻辑问题,官方修复已在后续 PR 中合并。

问题场景

用户使用 Gradio 的默认 gr.load_chat(...) 接口对接 vLLM 部署的 Qwen3-8B 模型。用户在输入框中通过 Ctrl+V 粘贴一段超长文本,Gradio 将其显示为一个带 “pasted text” 图标的特殊消息;模型正常回复后,用户再次输入一段短文本并发送,此时模型调用失败,后端 vLLM 抛出 model is not multimodal 错误。

报错原文

Default `gr.load_chat(...)` with large and small inputs leads to `model is not multimodal` error in `vllm serve`

原因分析

可能原因:Gradio 在处理超大文本输入时,会自动将其包装为 text_encoded 类型(带 “pasted text” 图标),而普通短文本则保持 text 类型。当混合类型的消息历史被发送到 OpenAI 兼容 API 时,Gradio 端在编码 text_encoded 消息时可能误将其转换为图片格式(image_url 类型),导致 vLLM 尝试从请求中解码图片数据,进而对非多模态模型(如 Qwen3-8B)报错。Issue 中指向的 vLLM 问题(vllm-project/vllm#19144)提供了后端堆栈跟踪,确认了错误发生在多模态内容处理环节。

环境排查

  • 确认 Gradio 版本是否为 5.32.1(Issue 验证版本),建议升级到包含修复的最新版本
  • 确认 vLLM 版本及 vllm serve 的启动参数,尤其是否启用了多模态相关配置
  • 确认使用的模型是否为纯文本模型(如 Qwen3-8B),而非 Qwen2-VL 等多模态模型
  • 检查 Python 环境中的 gradio_client 版本(Issue 中为 1.10.2)

解决步骤

  1. 临时绕过(Issue 已验证有效):gr.load_chat() 调用中显式添加 file_types=[] 参数,这会禁用多模态文件上传功能,使粘贴文本不再显示为 “pasted text” 图标,从而避免编码路径不一致导致的错误。
  2. 升级 Gradio(官方修复):获取包含 PR #13742 的 Gradio 版本(Issue 关联的修复版本),该 PR 修复了历史消息中 text_encoded 类型被错误编码为图片的问题。修复后的行为验证:消息负载中的 content types 从 ['image_url', 'text', 'text'] 变为 ['text', 'text', 'text'],即 .txt 内容不再以图片形式发送。
  3. 复现验证(可优先尝试):在升级前可通过以下方式确认问题:发送一段超长粘贴文本(触发 “pasted text” 图标),再发送短文本,观察是否触发 model is not multimodal;若禁用 file_types 后问题消失,即可确认是编码路径问题。

验证方法

升级 Gradio 后,重复原始操作流程:先粘贴超长文本并发送,再发送短文本。若模型正常响应且无报错,则问题已解决。更严格的验证是检查发送到 vLLM 的 API 请求负载,确认历史消息中所有 content 项的 type 均为 text,不再出现 image_url 类型。官方提供的 before/after Spaces(链接见参考来源)可直接对比修复前后的行为差异。

参考来源

gradio-app/gradio #11331

vllm-project/vllm #19144(后端堆栈跟踪)

gradio-app/gradio PR #13742(修复补丁)

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18465

发表回复

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