0. Qwen3.5开启思考模式的原理

Qwen3.5的Prompt Template控制思考部分如下:

JINJA
{{- '<|im_start|>assistant\n' }}
{%- if enable_thinking is defined and enable_thinking is false %}
	{{- '<think>\n\n</think>\n\n' }}
{%- else %}
	{{- '<think>\n' }}
{%- endif %}
点击展开查看更多
  1. 开启思考enable_thinkingtrue 时,模板在 assistant 角色后面直接输出:
TEXT
<|im_start|>assistant
<think>
点击展开查看更多

由于文本停留在 <think> 标签,模型在推理时会被迫从“思考模式”开始续写。这就像是给学生一张卷子,并在卷首写好了“解:”,学生自然会接着写推导过程。 2. 跳过思考enable_thinkingfalse 时,模板输出:

TEXT
<|im_start|>assistant
<think>
</think>
点击展开查看更多

模板主动帮模型写完了闭合标签 </think>。在模型的预测逻辑中,它会判定“思考部分已经结束”,于是直接跳转到输出最终答案的阶段。

1. 简单修改Prompt Template关闭思考

直接设置变量enable_thinking,在开头添加

JINJA
{%- set enable_thinking = false %}
点击展开查看更多

2. 使用Jinja逻辑实现提示词中控制思考

为了实现像Qwen3那样通过在提示词中输入/think控制模型思考,使用Jinjia代码判断提示词中是否包含该字样,以此来设置变量enable_thinking

2.1. /think 控制 enable_thinking

将控制思考的代码改成:

JINJA
{{- '<|im_start|>assistant\n' }}
{%- set last_msg = messages[-1] %}
{%- set enable_thinking = (last_msg.role == "user" and last_msg.content.endswith("/think")) %}
{%- if enable_thinking %}
	{{- '<think>\n' }}
{%- else %}
	{{- '<think>\n\n</think>\n\n' }}
{%- endif %}
点击展开查看更多

2.2. 移除提示词中的/think

由于沙箱机制,message[x].content是不可改的,故只能在模板输出时过滤掉/think。 Qwen3.5的Prompt Template中,通过宏render_content统一处理内容:

JINJA
{%- macro render_content(content, do_vision_count, is_system_content=false) %}
    {%- if content is string %}
        {{- content }} <- 输出文本
    {%- elif content is iterable and content is not mapping %}
        {%- for item in content %}
            ...
            {%- elif 'text' in item %}
                {{- item.text }} <- 输出文本
            ...
点击展开查看更多

在宏render_content中有两处处理文本的模板输出的,我们可以从此处入手,过滤/think,将{{- content }}改为:

JINJA
{%- if content.endswith("/think") %}
	{{- content[:-6] }}
{%- else %}
	{{- content }}
{%- endif %}
点击展开查看更多

{{- item.text }}同理。

3. 模型变体 (variant) 法

该方法可以使LM Studio GUI出现思考切换按钮

3.1. 创建文件

根据以下目录结构创建文件夹和model.yaml

TEXT
~/.lmstudio/
├── models/
│   └── unsloth/
│       └── Qwen3.5-27B-GGUF/
│           ├── Qwen3.5-27B-Q3_K_M.gguf
│           └── mmproj-F16.gguf
└── hub/
    └── models/
        └── qwen/
            └── qwen3.5-27b-no-thinking/
                └── model.yaml
点击展开查看更多

3.2. model.yaml

model.yaml 是一种用于定义跨平台、可组合人工智能模型的开放标准。 欲了解更多详情,请访问:https://modelyaml.org

YAML
model: qwen/qwen3.5-27b-no-thinking
base:
  - key: unsloth/qwen3.5-27b
    sources:
      - type: huggingface
        user: unsloth
        repo: Qwen3.5-27B-GGUF
metadataOverrides:
  reasoning: false
customFields:
  - key: enableThinking
    displayName: "思考"
    description: "擅长解决更复杂的问题"
    type: boolean
    defaultValue: false
    effects:
      - type: setJinjaVariable
        variable: enable_thinking
点击展开查看更多

等待LM Studio扫描到该模型,直接加载模型即可。 该方法的原理是创建一个自定义字段,用于控制Prompt Template变量enable_thinking

版权声明

作者: Cheyne Xie

链接: https://chaim.eu.org/posts/prompt-template%E6%8E%A7%E5%88%B6qwen3.5%E7%9A%84%E6%80%9D%E8%80%83%E6%A8%A1%E5%BC%8Flm-studio/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键