在大模型的发展过程中,有一个发现颇具代表性:在提示词中加入一句“让我们一步一步地思考”,模型在数学应用题和逻辑推理题上的准确率就会显著提高。 这类方法被称为思维链(Chain-of-Thought,CoT)提示。它的原理并不复杂,但在实际使用中,需要清楚它在什么情况下有效、什么情况下多余。

为什么思维链有效

大语言模型逐个 Token 生成输出,每个 Token 的计算量是固定的。如果直接要求模型输出一道复杂数学题的答案,相当于要求它在“一步之内”完成所有推理,这超出了单步计算的能力。

当模型先写出中间步骤时:

  • 复杂问题被拆解:每一步只需要完成一个相对简单的推理;
  • 中间结果被记录:后续步骤可以基于已经写出的中间结果继续计算,而不必在“脑中”记住所有信息;
  • 错误更容易被发现:无论是模型自己还是人类审阅者,都可以检查推理过程中的问题。

可以把它理解为给模型提供了“草稿纸”。

常见写法

零样本思维链

在问题后面加上“请一步一步地分析”或“请先列出推理过程,再给出最终答案”。简单易用。

少样本思维链

在示例中展示完整的推理过程,让模型学习推理的方式和详细程度,参见少样本提示。

结构化推理

指定推理的步骤框架,例如:“第一步,提取题目中的已知条件;第二步,确定需要求解的量;第三步,列出计算过程;第四步,检查结果是否合理;最后给出答案。”

先分析后结论

在结构化输出中,把分析字段放在结论字段之前,例如先输出 analysis,再输出 decision,参见让大模型稳定输出 JSON。

自我检查

在得出答案后,要求模型从另一个角度验证答案,或者检查推理过程中是否有错误。

适合使用思维链的场景

  • 数学与计算:多步骤的应用题、数值推导;
  • 逻辑推理:需要串联多个条件得出结论的问题;
  • 复杂判断:需要综合多个因素做出判断,例如评估一份合同的风险等级;
  • 多步骤规划:制定计划、拆解任务;
  • 代码调试:分析错误原因需要逐步追踪代码逻辑。

不适合使用思维链的场景

  • 简单事实问答:“北京是哪个国家的首都”不需要推理过程;
  • 简单分类和抽取:模式明确的任务,额外的推理只会增加成本;
  • 创意写作:推理过程可能让文字变得刻板;
  • 延迟敏感的场景:推理过程会显著增加输出长度和响应时间。

对于简单任务,强制要求模型进行长篇推理,有时还会导致“想太多”:把简单问题复杂化,反而得出错误结论。

思维链与推理模型

新一代推理模型已经通过训练把“先思考再回答”的能力内化了,它们会自动生成内部推理过程,参见推理模型是怎么“想”的。对于这类模型:

  • 通常不需要再在提示中要求“一步一步思考”;
  • 过于详细的步骤指令可能干扰模型自己的推理策略;
  • 更重要的是清楚地描述问题、目标和约束条件。

对于普通对话模型,思维链提示仍然是提升复杂任务表现的有效方法。

实用建议

区分推理过程和最终答案

如果输出要被程序使用,要求模型把最终答案放在固定的位置或字段中,便于提取。推理过程可以记录在日志中用于调试,不一定要展示给最终用户。

推理过程不等于真实原因

模型写出的推理过程看起来合理,但不一定反映它“真正”的计算过程,也可能包含错误步骤。对于关键结论,仍需独立验证,参见大模型幻觉的成因。

权衡成本

推理过程会增加输出 Token 数量。在大规模调用的场景中,评估思维链带来的准确率提升是否值得额外的成本和延迟。

用评测说话

在你的任务上,对比使用和不使用思维链的效果,而不是想当然地认为加上就一定更好。

小结

思维链提示通过让模型写出中间推理步骤,提升了复杂推理任务的表现,原理类似于给模型提供草稿纸。它适合数学、逻辑、复杂判断和规划任务,但对简单任务和延迟敏感场景并无必要。使用推理模型时一般无需额外要求,而对普通模型,在正确的场景中使用思维链,依然是提示工程中最有价值的技巧之一。