思考模式 vs 非思考模式 — Qwen3 两种模式的速度、质量与成本实测对比
一句话结论
- 需要精度 → 开思考模式(数学、代码调试、复杂分析)
- 需要速度 → 关思考模式(简单问答、摘要、翻译)
- 想省 token 成本 → 关思考模式
数学推理场景对比
数学推理是思考模式优势最明显的领域。以下是 Qwen3-235B-A22B 在几个数学基准上的表现:
| 基准测试 | Thinking Mode | Non-Thinking Mode | 提升 |
|---|---|---|---|
| AIME 2024 | 85%+ | ~30% | 接近翻倍 |
| MATH | 70%+ | ~45% | 显著提升 |
| GSM8K | ~96% | ~88% | 中等提升 |
可以看到,难度越高的数学题,思考模式的收益越大。AIME 是美国数学奥林匹克选拔赛级别,需要复杂的多步推理——思考模式几乎是非思考模式的三倍。GSM8K 是小学数学应用题,差异就小得多。
代码生成场景对比
代码场景同理。在 HumanEval 和 MBPP 等代码基准上:
| 基准测试 | Thinking Mode | Non-Thinking Mode |
|---|---|---|
| HumanEval | 85%+ | ~70% |
| MBPP | 80%+ | ~65% |
思考模式在代码任务上的优势体现在:
- 能发现自己第一次写的代码有 bug,然后在思考链中修正
- 能考虑边界条件和异常处理
- 能处理更复杂的算法实现
对于简单的函数生成(如 add(a, b)),两种模式的产出质量几乎一样。
延迟和 token 开销
这是必须正视的代价。思考模式比非思考模式慢多少、贵多少?
延迟(以 32B Dense 模型在单卡 A100 上为例)
| 场景 | 非思考首 token | 思考首 token | 思考链长度 | 最终答案 |
|---|---|---|---|---|
| 简单问答 | ~200ms | ~800ms | 50-100 token | ~50 token |
| 数学证明 | ~250ms | ~2000ms | 500-1000 token | ~200 token |
| 代码生成 | ~250ms | ~1500ms | 300-800 token | ~300 token |
首 token 延迟的差距主要来自思考链也要从头生成——模型在输出 <think> 之后开始生成思考链,用户要等思考链生成完毕才能看到最终答案。
Token 开销
API 调用时,思考链 token 同样计费:
| 场景 | 非思考总 token | 思考总 token | 费用倍数 |
|---|---|---|---|
| 简单问答 | ~100 | ~200 | 2x |
| 数学证明 | ~250 | ~1000 | 4x |
| 代码生成 | ~350 | ~1000 | 2.9x |
什么时候必须关思考模式
格式化输出
如果你要求模型输出 JSON、XML 或代码,一定要关思考模式。原因:
- 思考链会污染输出格式
- 模型可能"忘记"关闭思考标签就开始输出结构化内容
- 下游解析器无法处理混合内容
# 好的做法
text = tokenizer.apply_chat_template(
[{"role": "user", "content": "输出 {\"name\": \"Alice\", \"age\": 30} 的 JSON"}],
enable_thinking=False # 确保输出干净的 JSON
)
实时对话机器人
如果你的产品是聊天机器人,用户期望快速响应。即使是复杂问题,也建议先给一个"我在思考"的提示,然后开思考模式。但首 token 延迟超过 1 秒用户就会不耐烦。
低 token 预算
思考链会消耗上下文窗口。在多轮对话场景下,频繁开思考模式会让上下文很快耗尽。建议:
- 普通轮次用非思考模式
- 遇到真正复杂的问题再开思考
- 或者定期清理历史、重新开始
什么时候必须开思考模式
高精度推理任务
- 数学证明和计算
- 代码调试(让模型自己 debug 自己)
- 复杂逻辑分析(条件组合、路径规划)
需要 Agent 能力
如果模型需要和工具/外部系统交互(调用 API、执行代码、搜索信息),思考模式让模型能:
- 先规划执行步骤
- 根据中间结果调整后续行动
- 在思考链中记录中间结果
实际决策表
| 你的场景 | 推荐模式 | 理由 |
|---|---|---|
| 聊天机器人 | 非思考 + 复杂问题时开 | 平衡速度和质量 |
| 数学/科研助手 | 思考 | 精度优先 |
| 代码辅助 | 默认非思考,调试时开 | 常规生成不慢,调试需要深度 |
| API 批量处理 | 非思考 | 省钱、快 |
| Agent 自动任务 | 思考 | 需要规划和调整 |
| 格式化输出 | 强制非思考 | 避免污染格式 |
| 搜索增强问答 | 非思考 | 有检索增强,不需要额外推理 |
混合策略:动态切换
一些生产环境的做法是根据用户意图自动切换:
- 简单问答 → 非思考
- 数学/代码请求 → 思考
- 不确定 → 默认非思考,用户没得到好答案时提示切换
这可以通过关键词触发或轻量分类模型来实现。
相关阅读
- 01-思考模式原理:理解为什么两种模式有差异
- 03-API 层控制思考行为:各框架的具体配置
- 01-Ollama 一键启动:本地跑起来实测两种模式