MindIE关于Qwen3 如何开启和关闭思考模式【说明版】

关于Qwen3模型开启/关闭思考模式的实现方法,结合当前技术文档和社区实践,具体说明如下:
参考文章:https://www.hiascend.com/forum/thread-0226184670714099074-1-1.html


1. 自动切换机制的理想与现状

理想情况下,模型应根据上下文复杂度问题需求自动选择是否开启思考模式(如多步推理、深度分析)。但目前单一SOTA模型尚未实现该能力,需通过外部控制手段实现。社区建议通过Agent框架(如LangChain、AutoGPT)结合模型能力分层调用,未来可能逐步实现自动切换。


2. 手动控制方法详解

(1) Prompt动态追加关键字(建议用这种,比较方便)
  • 开启思考:默认已开启,无需额外操作。
  • 关闭思考:在输入Prompt末尾追加空格后接 /no_think(注意格式为 空格+/no_think)。
    示例(可以参考下图):
    请总结以下文本:... /no_think
    
    原理:模型通过识别特殊标识符跳过深度思考流程,直接输出简洁结果。
    限制:需确保输入格式严格符合要求,否则可能触发报错或无效。
    在这里插入图片描述
    在这里插入图片描述

(2) 借助Chat-Template变量控制

通过编程接口动态设置 enable_thinking 参数:

  • 关闭思考:在调用 tokenizer.apply_chat_template(...) 时指定 enable_thinking=False
    代码示例(Transformers/VLLM):
    prompt = tokenizer.apply_chat_template(
        messages, 
        enable_thinking=False  # 关闭思考模式
    )
    
  • 开启思考:默认行为,或显式设置 enable_thinking=True
    支持框架:Transformers、vLLM。
    注意:部分部署环境(如MindI-2.0T17)因未传递 chat_template_kwargs 参数,暂不支持此方法。

(3) 修改模型配置文件实现默认行为

若需全局默认关闭思考模式,可修改模型权重目录下的 tokenizer_config.json 文件:

  1. 原配置(默认开启思考):
    {%- if enable_thinking is defined and enable_thinking is false %}
    
  2. 修改后(默认关闭思考):
    {%- if enable_thinking is not defined or enable_thinking is false %}
    
    效果:未显式指定 enable_thinking=True 时,默认进入非思考模式。
    兼容性:原有两种控制方法(Prompt关键字、API参数)仍可覆盖默认行为。

3. 方法对比与适用场景

方法实时性灵活性部署复杂度适用场景
Prompt追加关键字单次请求快速切换
Chat-Template变量API服务动态控制
修改配置文件固定部署需求(如边缘设备)

4. 注意事项

  • 性能影响:思考模式会显著增加推理时延(尤其长上下文场景),建议根据任务类型权衡。
  • 兼容性验证:不同部署框架(如Ollama、vLLM、LMStudio)对控制参数的支持存在差异,需参考具体文档。
  • 未来优化:社区正在探索结合动态批处理路由模型实现自动模式切换,可能成为下一代迭代重点。

通过上述方法,开发者可灵活控制Qwen3的思考行为,平衡推理效率与任务需求。具体实现时建议结合部署环境测试验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值