快速结论:该报错通常出现在 vLLM 使用 Qwen3.8-Flash-Next 模型、关闭 thinking(enable_thinking=false)且开启流式输出时,tool_choice=”required” 未被强制生效,导致模型返回纯文本而非工具调用;开启 thinking 并启用 MTP 时,则可能触发 xgrammar 的 “Failed to advance FSM” 报错。优先排查工具集规模与 thinking/MTP 的组合开关。
适用环境:Ubuntu 24.04.3 LTS,Python 3.12.3,PyTorch 2.13.0+cu130,CUDA 13.0,NVIDIA RTX PRO 6000 Blackwell Workstation Edition,Nvidia 驱动 595.84,vLLM 服务端,社区 NVFP4/FP8 checkpoint 及 PLE-quant overlay。
最快修复方案:暂无确认的一步修复方案。Issue 讨论中提交者提到“I believe this was fixed via #54089”,即可能已通过另一 PR #54089 修复,但 Issue 内未给出已验证的临时绕过方案。可优先尝试升级到包含 #54089 修复的 vLLM 版本。
注意事项:该环境为社区量化版本(primitive-ai checkpoint + PLE-quant overlay),非官方量化版本,相关问题可能无法在官方版本中复现;且环境已拆除,原提交者无法快速复测,验证结论仅基于历史观测。
问题场景
用户运行 vLLM 服务,加载 Qwen3.8-Flash-Next 模型(社区 NVFP4/FP8 量化 checkpoint),以流式方式调用 OpenAI 兼容接口并设置 tool_choice=”required”(即强制工具调用)。故障表现为两种模式:
- 关闭 thinking(enable_thinking=false)且工具集较大(12 个工具)时,流式输出返回纯文本回答,finish_reason 为 “stop”,而非工具调用;
- 开启 thinking 且启用 MTP(Multi-Token Prediction)时,出现 xgrammar 的 “Failed to advance FSM” 或 “matcher has terminated” 报错。
报错原文
[Bug]: tool_choice="required" not enforced with Qwen3.8-Flash-Next when enable_thinking=false (streaming)
xgrammar "Failed to advance FSM" / "matcher has terminated" with thinking on + MTP
原因分析
可能原因(Issue 中未给出确凿根因,仅记录了以下模式):
- 工具集规模影响强制工具调用:12 个工具场景下流式输出 2/3 失败,而 2 个工具场景(对照组)恒成功,说明工具数量可能与 xgrammar 结构化输出约束失效相关;
- 流式与非流式行为不一致:相同 12 工具请求体,非流式模式恒返回工具调用,而流式模式部分返回纯文本,说明流式解码路径可能与 xgrammar FSM 状态推进逻辑存在竞态或约束丢失;
- thinking 与 MTP 的组合冲突:开启 thinking 且启用 MTP 时触发 xgrammar FSM 失效,可能与 MTP 投机解码干扰了逐 token 的格式约束状态推进有关;
- 量化 checkpoint 兼容性:社区量化版本(primitive-ai + PLE-quant overlay)可能在结构化输出路径上与官方逻辑存在差异,但无证据指向该问题仅在量化版本出现。
环境排查
- Python 版本:3.12.3
- PyTorch 版本:2.13.0+cu130
- CUDA 版本:13.0(runtime 13.0.88)
- GPU 型号:NVIDIA RTX PRO 6000 Blackwell Workstation Edition
- 驱动版本:595.84
- 模型:Qwen3.8-Flash-Next(社区 NVFP4/FP8 checkpoint,primitive-ai + PLE-quant overlay)
- 推理框架:vLLM(vllm/vllm-openai:qwen38-flash-next 镜像)
- 参数:temperature 0.6、max_tokens 800、parallel_tool_calls true、tool_choice=”required”
- 工具集:tool-eval-bench 的 UNIVERSAL_TOOLS(12 个工具对照 2 个工具)
解决步骤
- 确认 vLLM 版本是否已包含 PR #54089 的修复;Issue 提交者声明“I believe this was fixed via #54089”,若仍复现可尝试升级至包含该 PR 的版本并重新测试。
- 若升级后仍复现,尝试将流式模式改为非流式(streaming=false),Issue 观测中非流式模式在 12 工具下恒返回工具调用。
- 若已开启 enable_thinking=true 且启用 MTP,尝试关闭 MTP(如 –disable-mtp 或等价参数)观察 xgrammar FSM 报错是否消失。
- 若工具集规模为嫌疑变量,可缩减工具数量(如从 12 个降至 2 个)横向对比,确认是否与工具数量相关。
- 若以上均无效,可尝试替换为官方非量化 checkpoint,排除社区量化叠加层对结构化输出的影响。
验证方法
用相同工具集和请求体重复流式调用,观察是否每次响应的 finish_reason 均为 “tool_calls”(或 equivalent)且返回合法工具参数;若原先触发 “Failed to advance FSM” 的场景,需确认流式过程中无 xgrammar 报错且最终输出为工具调用。注意:Issue 记录原环境已拆除,以上验证需在用户本地新部署环境复现后执行。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![Eval bug: [Vulkan] GGML_ASSERT(wg0 device->properties.limits.maxComputeWorkGroupCount on Intel Arc A770 when running Qwen 3.8 flash next](https://www.chat-gpts.plus/wp-content/uploads/2026/09/28247-20007be1-768x403.jpg)

