qwen3:30b (qwen3moe) ignores –think=false while qwen3:8b and deepseek-r1 honour it

该问题出现在 Ollama 0.30.4 中,对 MoE 架构的 qwen3:30b(architecture: qwen3moe)执行 --think=false 无效。优先排查模型是否为混合推理模型(base 版本)——qwen3:30b 不支持关闭思考,需要改用 qwen3:30b-instr

快速结论:该问题出现在 Ollama 0.30.4 中,对 MoE 架构的 qwen3:30b(architecture: qwen3moe)执行 --think=false 无效。优先排查模型是否为混合推理模型(base 版本)——qwen3:30b 不支持关闭思考,需要改用 qwen3:30b-instruct 模型。

适用环境:Ollama 0.30.4,Debian 13 (Trixie),NVIDIA RTX 3090 24GB,驱动 550.163.01。已对比验证 qwen3:8b(qwen3 架构)与 deepseek-r1:32b 均能正常遵守 --think=false,qwen3:30b(qwen3moe 架构)被忽略。

最快修复方案:Issue 中明确验证的方案:改用非思考版本模型 ollama run qwen3:30b-instruct(拉取并运行 qwen3:30b-instruct)。这是已确认能获得非思考行为的首选方法。

注意事项:qwen3:30b(base 版)被官方解释为”不是混合模型,不支持思考控制”,因此 --think=false 无效属预期行为。后续版本是否改善未在 Issue 中确认。/set think off 交互命令在 qwen3:30b 下会报 400 Bad Request: invalid think value: "off",被认为是独立问题,可能与 false 的内部处理方式相关,但未在本 Issue 中解决。

问题场景

用户使用 Ollama CLI 执行 ollama run --think=false qwen3:30b "Say hello",试图关闭 Qwen3 模型(30B MoE 版本)的思考链输出。同一环境下的 qwen3:8b 和 deepseek-r1:32b 均能正确关闭思考,唯独 qwen3:30b 仍然输出完整的可见思考痕迹。

报错原文

# 命令行执行后输出以思考痕迹开头,--think=false 被忽略
Okay, the user asked me to say hello...
...
</think>

Hello! 😊 How can I assist you today?

# 交互式命令 /set think off 被接受后,下一次提问报错
400 Bad Request:
invalid think value: "off"
(must be "high", "medium", "low", "max", true, or false)

原因分析

qwen3:30b 是 Qwen3 的 MoE(Mixture of Experts) 架构版本(architecture: qwen3moe),它不是混合推理模型(hybrid model),不支持思考控制(thinking control)。相比之下,qwen3:8b(architecture: qwen3)和 deepseek-r1:32b 是支持思考开关的模型。因此 --think=false 对 qwen3:30b 无效是预期行为,并非 Ollama 的 bug。Ollama 官方人员的回答明确指出:如果需要非思考版本的 qwen3:30b,应使用 instruct 版本(qwen3:30b-instruct)。

Issue 中另一个可能原因是:CLI 接受 --think=false 但底层 API 对 qwen3moe 架构不执行关闭操作。不过用户与维护者的交互确认了架构差异才是根本原因,而非标志处理缺陷。

环境排查

  • 确认 Ollama 版本:0.30.4(Issue 已验证版本)
  • 确认模型架构:ollama show qwen3:30b 应显示 architecture: qwen3moe,而 qwen3:8b 显示 architecture: qwen3;前者不支持思考控制
  • 对比测试:同一环境运行 ollama run --think=false qwen3:8b "Say hello" 应正常关闭思考,确认是 qwen3moe 架构的问题
  • 确认模型版本为 base 版而非 instruct 版:instruct 版默认不输出思考,无需 --think=false
  • 如使用自定义 Modelfile 或 GGUF 导入,需检查模型是否带 thinking 能力声明(capabilities)

解决步骤

  1. 拉取并使用 instruct 版本模型替代 base 版本(已验证方案):
    ollama pull qwen3:30b-instruct
    ollama run qwen3:30b-instruct "Say hello"

    输出将直接给出不含思考痕迹的回复。

  2. 如果必须使用 qwen3:30b base 版本且不希望看到思考痕迹,可以使用 --hidethinking 参数(已验证可用):
    ollama run --hidethinking qwen3:30b "Say hello"

    这会将思考内容从终端隐藏,但模型依然会执行思考计算。

  3. 对于需要精细化控制思考强度的情况,qwen3:30b 支持 --think=low--think=high--think=max,但不支持 --think=false--think=off
  4. 避免使用交互式命令 /set think off——虽然 CLI 接受该命令,但下一个请求会报 400 Bad Request: invalid think value: "off"(已知独立问题)。

验证方法

运行 ollama run qwen3:30b-instruct "Say hello",确认输出直接以 Hello!... 开头,且没有任何 <think> 包裹的思考痕迹。如继续使用 qwen3:30b base 版,--hidethinking 应能隐藏思考过程,但若观察 API 原始响应仍会看到思考内容——这是预期行为,不是问题。

参考来源

ollama/ollama #17292:qwen3:30b (qwen3moe) ignores –think=false while qwen3:8b and deepseek-r1 honour it

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18380

发表回复

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