qwen3 中文文档 下载 App

关闭 Qwen3 思考模式 — 三种方法从提示词到 API 硬开关

为什么要关闭思考模式

虽然思考模式在复杂推理任务上表现出色,但它有几个明显的缺点:

关闭思考模式后,Qwen3 的行为和 Qwen2.5-Instruct 类似——直接输出答案,快速响应。

方法一:提示词指令(最通用)

最简单的方法,适用于所有调用方式——Transformers、Ollama、SGLang、vLLM、云端 API 都可以用。

显式指令

在系统提示或用户消息中加入 /no_think:

messages = [
    {"role": "system", "content": "/no_think\n你是一个有帮助的助手。"},
    {"role": "user", "content": "帮我翻译这句话。"},
]

或者在用户消息中:

用户: /no_think 直接告诉我答案:1 + 1 = ?

自然语言指令

也可以用自然语言引导:

用户: 请直接给我答案,不要思考过程。
用户: 跳过分析步骤,直接输出结果。

提示词指令是软开关——模型会尽量遵循,但不保证 100% 关闭。在重要场景下建议用硬开关。

方法二:Transformers 的硬开关

用 Transformers 库加载模型时,通过 apply_chat_template 的 enable_thinking 参数强制关闭思考模式。

这是最彻底的方法,在 tokenizer 层面就把思考模式关闭了,模型不会生成任何思考链。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/Qwen3-8B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)

messages = [
    {"role": "user", "content": "1 + 1 = ?"},
]

# 关键参数:enable_thinking=False
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=False  # 强制关闭思考
)

model_inputs = tokenizer(text, return_tensors="pt").to(model.device)
generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=512
)
response = generated_ids[0][model_inputs["input_ids"].shape[1]:]
print(tokenizer.decode(response, skip_special_tokens=True))

默认值是 enable_thinking=True。把它设为 False 后,模型的行为就完全变成了非思考模式。

方法三:推理框架 API 层配置

SGLang

SGLang 通过 API 参数控制:

curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen3-8B",
    "messages": [{"role": "user", "content": "1 + 1 = ?"}],
    "extra_body": {
      "thinking": {"type": "disabled"}
    }
  }'

或者启动服务时设置默认关闭:

python -m sglang.launch_server \
    --model-path Qwen/Qwen3-8B \
    --thinking-type disabled

vLLM

vLLM 暂时没有专门的思考模式参数,但可以通过模板参数控制:

from vllm import LLM, SamplingParams

llm = LLM(
    model="Qwen/Qwen3-8B",
    tokenizer_mode="auto",
)

# 通过 extra_body 传递
sampling_params = SamplingParams(
    max_tokens=512,
    extra_body={"thinking": {"type": "disabled"}}
)

Ollama

Ollama 目前对 Qwen3 的思考模式支持有限。通常建议在 prompt 里加 /no_think:

ollama run qwen3:8b "1 + 1 = ? /no_think"

或者在 Ollama Modelfile 里设为默认行为:

SYSTEM 你是一个有帮助的助手。/no_think

方法对比

方法强度适用场景缺点
提示词 /no_think软开关通用、快速测试不保证 100% 关闭
Transformers enable_thinking=False硬开关纯 Python 调用只适用于 Transformers
SGLang / vLLM API 参数硬开关推理服务部署框架特定配置

何时必须硬开关

以下场景建议用硬开关,不要只靠 prompt:

相关阅读