首页
  • 上位机
  • 嵌入式
  • AI
  • Web
教程
MarkDown语法
有趣的项目
其他
GitHub
首页
  • 上位机
  • 嵌入式
  • AI
  • Web
教程
MarkDown语法
有趣的项目
其他
GitHub
  • Qwen3开关模型思考

Qwen3开关模型思考

硬开关

修改gguf模型文件(LMstudio可用)

  1. 先安装gguf包

    pip install gguf
    

    使用Python3.12,目前3.13有bug会安装不上最新版的gguf

  2. 使用Python打开gguf模型内部模板

    from gguf import GGUFReader
    r = GGUFReader(r'\Qwen3-4B-Q4_K_M.gguf')
    print(r.get_field('tokenizer.chat_template').contents())
    
  3. 复制整套模板

  4. 修改模板逻辑

    在倒数第四行修改成,没有定义enable_thinking就停止思考

    {%- if enable_thinking is not defined or enable_thinking is false %}
    

    然后生成一个no_think.json文件(不限文件名)放进chat_template中.

    {
      "chat_template": "这里把修改好的模板全部复制过来"
    }
    
  5. 通过gguf的工具,使用新模板将重新打包一个新的模型.

    • 先找到gguf_new_metadata.py工具一般在gguf包目录下

    .venv1/Lib/site-packages/gguf/scripts/gguf_new_metadata.py

    • 然后运行脚本,打包模型
    Python gguf_new_metadata.py \
    Qwen3-4B-Q4_K_M.gguf \
    Qwen3-4B-NoThink-Q4_K_M.gguf \
    --chat-template-config no_think.json
    

    可以改成自己文件名,或者不同的地址

问题点

  1. 这样修改之后,模型是默认不思考的,控制的办法也是简单粗暴,当没有enable_thinking的时候就直接输出<think>/n/n</think>,通过提前生成think的结束标签来直接结束思考.

  2. 而且<think>/n/n</think>标签在不思考的时候是必须会输出的,哪怕把模板内控制思考的这一行完全删掉也是没用的,应该是训练阶段就加入SFT,专门应对不思考的情况.

  3. 所以Qwen3系列本质上还是一个思考模型,只是通过提前加入思考结束标志才变成非思考模型.后续模型对接还要在前端自行处理空的<think>标签

Ollama使用

  1. 重新编写模型配置文件

    ollama show --modelfile [模型名称] //查看模型文件
    

    参考如下:

    # 基础模型(必须)
    FROM <模型名>
    
    # 系统提示(定义模型的默认行为)
    SYSTEM """
    你是一个幽默的助手,回答要简短且押韵。
    """
    
    # 调整生成参数
    PARAMETER temperature 0.7         # 控制随机性(0-1,越高越有创意)
    PARAMETER num_ctx 4096            # 上下文窗口大小
    PARAMETER num_predict 512         # 最大生成长度
    
    # 模板(控制对话格式)
    TEMPLATE """{{ .System }}
    {{ .Prompt }}"""
    
  2. 在注册模型,加入新的配置文件

    ollama create qwen3-8b-gguf -f Modelfile
    # 使用新的Modelfile文件创建新模型
    # 相同的gguf模型,更换配置文件不会重新导入 只会迅速更换模板文件
    

    查看是否注册成功

    ollama list
    
  3. 运行新模型

    ollama run qwen3-8b-gguf
    

    可以看见还是有<think>标签存在的,这个应该是qwen3模型的通病了

软开关

直接在system prompt系统提示词中,输入/no_think即可.