发生了什么
Qwen3.5/3.6 系列模型虽然支持思考模式(thinking mode),但实际使用中经常出现严重过度思考——模型在 <think> 标签内生成大量冗余推理步骤,导致 token 消耗暴增、响应速度变慢,却并没有带来对应的准确率提升。
4 月 28 日,一条在社区获得 317 个赞、514 次收藏的推文给出了解决方案:一段基于 Grammar 的约束规则,可以让 Qwen 系列模型在推理时将 think token 消耗降低最多 22 倍,同时不损失准确率。
方案原理
核心思路是通过 Grammar 规则强制模型在思考阶段遵循结构化的推理格式,而不是漫无目的地发散。
具体实现是一个 EBNF 风格的根规则:
root ::= think code
think ::= "<think>\n" "GOAL: " line "APPROACH: " line "EDGE: "
这条规则强制模型在 <think> 块内只做三件事:
| 步骤 | 内容 | 作用 |
|---|---|---|
| GOAL | 明确目标 | 防止跑题 |
| APPROACH | 简述方法 | 约束推理路径 |
| EDGE | 边界条件 | 防止过度展开 |
模型一旦遵循这个结构,就不会无限循环地”自言自语”,think 阶段的 token 数从动辄几千降到几百。
为什么重要
Token 经济学视角
对 API 用户来说,think token 直接等于成本。过度思考不仅拖慢响应速度,还让每次调用的费用成倍增长。将 think token 减少 22 倍,意味着:
- 成本直降:单次 API 调用费用显著降低
- 速度提升:更短的推理链 = 更快的首字响应
- 体验改善:用户不再等待模型”自言自语”
对 Qwen 生态的意义
Qwen3.5/3.6 的 thinking mode 是一个双刃剑:开启后推理能力提升明显,但 token 消耗让很多用户望而却步。这个方案实际上是在不修改模型权重的前提下,通过推理时约束来”解锁” thinking mode 的实用性。
效果对比
| 指标 | 开启思考模式(原版) | + Grammar 约束 |
|---|---|---|
| Think Token 数 | ~2000-5000 | ~100-250 |
| 准确率 | 基准 | 基本持平 |
| 响应时间 | 长(等待大量 think token) | 短 |
| API 成本 | 高 | 大幅降低 |
怎么上手
- 使用支持 Grammar 约束的推理框架:如 llama.cpp、vLLM(带 guided decoding)或 Ollama
- 在请求中注入上述 Grammar 规则
- 对比开启前后的 token 消耗和准确率
对于已经在用 Qwen3.5/3.6 做生产部署的团队,这个方案几乎零成本就能落地——不需要重新训练模型,只需要改一下推理配置。
格局判断
这反映了一个趋势:推理时优化(inference-time optimization)正在成为和模型训练同样重要的研究方向。与其花几个月时间重新训练一个”不过度思考”的模型,不如用几十行规则在推理时约束输出。
未来类似的思路可能会扩展到更多场景:控制输出长度、约束推理风格、引导结构化回答等。Qwen 生态在这方面走在前面。