Qwen3 模型思考模式控制:Ollama 与 vLLM 部署全指南
·
在部署通义千问 3(Qwen3)系列大模型时,"思考模式"(即模型推理过程的可视化输出)是一个高频调整项。本文将详细讲解在 Ollama 和 vLLM 两种主流部署框架中,如何灵活开启 / 关闭 Qwen3 的思考模式。
一、Ollama 中 Qwen3 思考模式的开启与关闭
Ollama 以轻量化、易部署著称,针对 Qwen3 的思考模式控制提供了多种灵活的实现方式,可根据使用场景选择。
1. 提示词指令(单轮生效)
最简单的方式是在提问末尾添加 /no_think 指令,该指令仅对当前对话轮次生效,模型会直接输出最终答案,不展示推理过程。
plaintext
你好,请介绍一下自己/no_think
AI写代码
2. 命令行参数(全局生效)
启动模型时通过参数全局关闭思考模式,适用于整个会话周期:
bash
运行
# 方式1:使用 --think=false 参数
ollama run qwen3:4b --think=false
# 方式2:使用 --hidethinking 参数(等效)
ollama run qwen3:4b --hidethinking
3. 交互式会话命令(会话内生效)
已进入ollama run交互式对话后,可通过内置命令切换模式:
plaintext
# 关闭思考模式
/set nothink
# 查看所有支持的会话命令
/?
4. API 调用控制(编程调用)
通过 Ollama API 调用模型时,在请求体中设置"think": false即可关闭思考模式:
json
{
"model": "qwen3",
"messages": [
{"role": "user", "content": "请解释Python装饰器的原理"}
],
"think": false
}
5. 使用非思考版本模型
部分 Qwen3 模型变体本身不包含思考功能(如qwen3:235b-a22b-instruct-2507-q4_K_M),直接使用此类模型即可默认关闭思考模式。
Ollama 模式控制重要说明
- 指令优先级:模型遵循最新指令,若之前开启思考模式,最新消息中添加
/no_think即可覆盖; - 模型限制:专为深度推理设计的模型(如
qwen3-30b-a3b-thinking-2507)可能无法完全关闭思考模式; - 参数差异:
enable_thinking是模型库(Transformers/SGLang)的原生参数,Ollama 推荐使用上述专属参数。
二、vLLM 中 Qwen3-32B 思考模式的开启与关闭
vLLM 以高性能推理著称,针对 Qwen3-32B 的思考模式控制主要通过 API 参数、启动配置和提示词指令实现。
1. 核心控制方式
(1)API 请求参数控制(推荐,动态灵活)
通过chat_template_kwargs中的enable_thinking参数动态控制,支持单请求粒度的模式切换:
- 关闭思考模式:
enable_thinking=False - 开启思考模式:
enable_thinking=True(默认值)
(2)启动参数控制(全局禁用)
启动 vLLM 服务时指定自定义聊天模板,全局禁用思考模式(需提前准备禁用思考的 Jinja 模板文件):
bash
运行
vllm serve Qwen/Qwen3-32B --chat-template ./qwen3_nonthinking.jinja
(3)提示词软开关(模型层指令)
与 Ollama 兼容,通过消息末尾指令实现模式切换:
- 关闭思考:
/no_think - 开启思考:
/think
2. Python API 调用示例(完整可运行)
使用 OpenAI 兼容接口调用本地 vLLM 服务,演示思考模式的开关控制(需安装openai>=1.0.0):
python
运行
from openai import OpenAI
# 1. 初始化客户端,连接本地vLLM服务
client = OpenAI(
api_key="EMPTY", # vLLM无需密钥,填写任意值即可
base_url="http://localhost:8000/v1", # vLLM默认服务地址
)
# 2. 准备对话消息
messages = [
{"role": "user", "content": "请解释一下引力波是如何被探测到的。"}
]
# 3. 发起API请求,控制思考模式
try:
response = client.chat.completions.create(
model="Qwen/Qwen3-32B", # 需与启动服务时的--served-model-name一致
messages=messages,
max_tokens=1024,
temperature=0.7,
top_p=0.8,
# 关键:通过extra_body传递思考模式控制参数
extra_body={
"top_k": 20,
"chat_template_kwargs": {
"enable_thinking": False # False关闭,True开启
}
}
)
# 4. 输出模型回复
print("模型回复:")
print(response.choices[0].message.content)
except Exception as e:
print(f"请求错误:{e}")
vLLM 模式控制重要注意事项
- 参数位置:
enable_thinking非 OpenAI 标准参数,必须放在extra_body字段中传递; - 版本兼容:vLLM 0.8.5 中
--reasoning-parser与enable_thinking=False不兼容,建议升级至 0.9.0+; - 模型要求:需使用支持思考能力的 Qwen3 版本(如 Instruct/Thinking 后缀),基础预训练模型无此功能。
总结
- Ollama:优先选择提示词
/no_think(单轮)或命令行--think=false(全局),API 调用需设置"think": false; - vLLM:推荐通过 API 请求的
extra_body.chat_template_kwargs.enable_thinking参数动态控制,灵活性最高; - 两种框架均兼容
/no_think//think提示词指令,可作为通用软开关使用。
更多推荐


所有评论(0)