C
ChaoBro

Qwen 过度思考有解了:一段 Grammar 规则减少 22 倍 think token 消耗

Qwen 过度思考有解了:一段 Grammar 规则减少 22 倍 think token 消耗

发生了什么

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 成本大幅降低

怎么上手

  1. 使用支持 Grammar 约束的推理框架:如 llama.cpp、vLLM(带 guided decoding)或 Ollama
  2. 在请求中注入上述 Grammar 规则
  3. 对比开启前后的 token 消耗和准确率

对于已经在用 Qwen3.5/3.6 做生产部署的团队,这个方案几乎零成本就能落地——不需要重新训练模型,只需要改一下推理配置。

格局判断

这反映了一个趋势:推理时优化(inference-time optimization)正在成为和模型训练同样重要的研究方向。与其花几个月时间重新训练一个”不过度思考”的模型,不如用几十行规则在推理时约束输出。

未来类似的思路可能会扩展到更多场景:控制输出长度、约束推理风格、引导结构化回答等。Qwen 生态在这方面走在前面。