✨如何在 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"]设置生成的停止标记
logprobsTrue / 5获取 token 的 log 概率
chat_template_kwargs{"enable_thinking": False}控制是否输出思考提示

结语

希望本文能帮助你更好地理解如何在 vLLM 中取消 Qwen3 的 Thinking 模式。如果你还有更多关于 Qwen3、vLLM 或大模型部署的问题,欢迎留言交流!

本文章已经生成可运行项目
### 关闭 Qwen3 思考过程的方法 Qwen3 提供了两种主要的工作模式:“思考 (Think)” 和 “不思考 (No_Think)”[^2]。如果希望关闭 Qwen3思考过程,可以通过设置参数来启用 No_Think 模式。在这种模式下,模型会快速响应用户的请求而不经过复杂的多步骤推理。 以下是具体方法: #### 方法一:通过 API 参数控制 当调用 Qwen3 的接口时,可以传递特定的参数以禁用思考功能。通常情况下,API 支持一个名为 `mode` 或类似的字段用于指定工作模式。将该字段设为 `"no_think"` 即可关闭思考过程。 ```python import requests url = "https://api.qwen.com/v1/generate" headers = {"Authorization": "Bearer YOUR_API_KEY"} payload = { "prompt": "你的输入提示", "mode": "no_think", # 设置为 no_think 来关闭思考过程 } response = requests.post(url, headers=headers, json=payload) print(response.json()) ``` 此代码片段展示了如何通过 POST 请求向 Qwen3 发送数据,并显式地指定了 `mode="no_think"`。 --- #### 方法二:调整环境变量配置 在某些部署环境中,可能允许通过环境变量来全局定义模型的行为方式。例如,在启动服务之前,可以设置如下环境变量: ```bash export QWEN_MODE=no_think ``` 这将在整个运行期间强制模型处于 No_Think 模式,从而跳过任何深度思考逻辑[^2]。 --- #### 方法三:手动限制思考预算 即使未完全关闭思考过程,也可以通过减少“思考预算”间接抑制其复杂推理行为。思考预算是通过对 `<think>` 标记后的 token 数量进行计数实现的[^1]。一旦达到设定的最大值,系统便会自动终止当前思考流程并转入输出阶段。 要实施这种方法,请确保传入以下参数之一(取决于所使用的 SDK 版本): - **max_tokens**: 控制生成序列长度; - **thinking_budget**: 明确规定最大允许的思考步数或 token 数量。 示例代码如下所示:
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值