如何在 vLLM 中取消 Qwen3 的 Thinking 模式
在使用 Qwen3 模型与 vLLM(Very Large Language Model)进行推理服务时,你可能会发现模型默认会输出类似“我正在思考……”的提示内容。这种行为被称为 Thinking 模式。如果你希望 跳过这些提示内容,直接返回模型结果,本文将介绍 两种实现方式。
什么是 Thinking 模式?
Thinking 模式是 Qwen3 在推理时默认输出的一种提示语,通常表现为:
Okay, let me think...
在某些场景下,你可能希望 跳过这些提示,直接获取模型的输出结果。为此,可以通过以下两种方式实现。
方法一:通过代码禁用 Thinking 模式
在调用 tokenizer.apply_chat_template
时,可以通过设置参数 enable_thinking=False
来禁用 Thinking 模式。
示例代码
prompt = "Who are you."
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False # 关键参数,禁用 Thinking 模式
)
输出示例
I am a large language model developed by Tongyi Lab...
可以看到,输出中 没有 Thinking 提示内容,可以直接用于推理服务。
方法二:在用户输入中添加 /no_think
标记
vLLM 提供了另一种更简单的方式:在用户输入的末尾添加 /no_think
标记。
示例输入
user
Who are you. /no_think
输出示例
I am a large language model developed by Tongyi Lab...
虽然模型仍会输出一些空行或特殊 token(如 `
`),但 不会生成任何“思考”提示内容。这种方式实现简单,适合快速实现需求。
方法三:通过 API 参数禁用 Thinking 模式(推荐)
如果你是通过 API 调用 Qwen3(如使用 vLLM 搭建的服务),可以在请求中通过 extra_body
字段设置 enable_thinking=False
。
示例代码
response = client.chat.completions.create(
model="chat",
messages=[{"role": "user", "content": "Why is the sky blue?"}],
extra_body={"chat_template_kwargs": {"enable_thinking": False}},
)
参数说明
extra_body
是一个 扩展参数字段,用于传递模型服务端支持的非标准参数。chat_template_kwargs
是控制chat_template
行为的参数。enable_thinking: False
表示 不输出“思考”提示。
总结对比
方法 | 实现方式 | 优点 | 缺点 |
---|---|---|---|
方法一 | 设置 enable_thinking=False | 完全跳过 Thinking 提示 | 需要修改代码 |
方法二 | 用户输入添加 /no_think | 实现简单 | 仍输出少量 token |
方法三 | API 参数设置 extra_body | 推荐使用 | 需要服务端支持 |
适用场景建议
- 推荐方法三:如果你是通过 API 调用模型,推荐使用
extra_body
设置enable_thinking=False
,这是最推荐的方式。 - 推荐方法一:如果你是本地部署模型并控制代码,建议使用
enable_thinking=False
。 - 推荐方法二:如果你希望快速实现且不介意少量 token 输出,可以使用
/no_think
标记。
附录:extra_body
常见参数示例
参数 | 示例 | 说明 |
---|---|---|
tool_choice | "auto" / ["tool1", "tool2"] | 控制模型是否可以调用工具 |
tool_call_parser | "hermes" / "default" | 指定工具调用的解析器 |
response_format | {"type": "json_object"} | 控制返回格式 |
stop | ["\n"] | 设置生成的停止标记 |
logprobs | True / 5 | 获取 token 的 log 概率 |
chat_template_kwargs | {"enable_thinking": False} | 控制是否输出思考提示 |
结语
希望本文能帮助你更好地理解如何在 vLLM 中取消 Qwen3 的 Thinking 模式。如果你还有更多关于 Qwen3、vLLM 或大模型部署的问题,欢迎留言交流!