不是催模型“多想一会儿”,而是让复杂任务出现清晰的中间步骤:先拆解,再推导,最后给出结论。
本文从直接回答讲起,逐步过渡到Zero-shot CoT、Few-shot CoT与Auto-CoT。
什么是 Chain-of-Thought Prompting?
Chain-of-Thought(CoT)Prompting是一种面向推理任务的提示方法。它不只要求模型输出最终答案,还通过示例或指令,引导模型生成若干中间推理步骤。
普通提示往往采用“问题 → 答案”的形式。CoT 则把过程展开为“问题 → 条件识别 → 分步推导 → 结果检查 → 答案”。这种结构更适合多步计算、常识推理、符号推理和需要明确约束的任务。
为什么分步骤可能更有效?
复杂问题容易在一次跳转中丢失条件。CoT 的价值在于把中间状态写出来,让每一步只承担较小的推理负担。原始研究表明,在其测试设置中,CoT 对较复杂的算术、常识和符号推理任务更有帮助;效果也会受到模型能力、任务难度与示例质量影响。
没有示例时:加一句“逐步分析”
Zero-shot CoT不提供完整演示,只在问题后加入推理指令。经典写法是“让我们逐步思考”,实际使用时可以进一步约束步骤和输出格式。
需要更稳定时:先给一两个完整示例
Few-shot CoT在 Prompt 中加入“问题 + 中间步骤 + 答案”的示例。模型不仅学习答案形式,也学习如何拆解该类问题。相比只写一句“逐步分析”,它更适合具有固定规则、固定判定标准或特定输出格式的任务。
示例太多时:自动构造多样化演示
手工编写 CoT 示例耗时,而且容易只覆盖某一种题型。Auto-CoT的核心思路是:先把问题按相似性聚类,再从不同类别中选取代表问题,自动生成推理链,最终组成更有多样性的 Few-shot 演示集合。
Auto-CoT 减少了人工构造示例的工作量,但自动生成的推理链仍可能出错,因此需要抽样检查、规则过滤或人工复核。
实际写 Prompt,抓住五个部分
| 部分 | 作用 | 建议写法 |
|---|---|---|
| Task | 说明要做什么 | 使用明确动词,如计算、判断、比较、规划。 |
| Context | 提供必要背景 | 只保留会影响结论的信息。 |
| Constraints | 限制推理范围 | 写清不可假设的内容、数据边界与规则。 |
| Reasoning steps | 规定处理顺序 | 要求识别条件、分步处理和检查结果。 |
| Output format | 控制最终结构 | 固定标题、字段、JSON Schema 或标签。 |