✨如何在 vLLM 中取消 Qwen3 的 Thinking 模式

如何在 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 或大模型部署的问题,欢迎留言交流!

你可能感兴趣的:(人工智能,python,chatgpt,自然语言处理,pytorch)