Chain of Thought 提示

让模型"展示解题过程"

小时候数学考试,老师总说"写出解题步骤"。不只是为了给分——写步骤能帮你理清思路,减少粗心错误。

LLM 也是一样。如果你让它直接给答案,它可能跳过关键的推理步骤,犯一些看起来很蠢的错误。但如果你让它一步步思考,准确率会显著提升。

这就是 Chain of Thought(CoT)——链式思维提示。

直接回答 vs CoT

看一个例子:

直接回答:

问:一个商店有 23 个苹果。如果他们用掉 20 个做苹果汁,
又买入 6 个,最后还剩多少个苹果?

答:9 个苹果

有时模型会对(9),有时可能会错。

使用 CoT:

问:一个商店有 23 个苹果。如果他们用掉 20 个做苹果汁,
又买入 6 个,最后还剩多少个苹果?请一步步思考。

答:让我一步步计算:
1. 开始有 23 个苹果
2. 用掉 20 个:23 - 20 = 3 个
3. 又买入 6 个:3 + 6 = 9 个
所以最后还剩 9 个苹果。

区别在哪里?模型把中间步骤显式地写了出来。 这不只是让你能验证——在生成每一步时,模型都在用前面步骤的结果作为上下文,降低了出错概率。

Zero-shot CoT:"魔法咒语"

最简单的 CoT 方法,只需要在 Prompt 末尾加一句话:

Let's think step by step.

或者中文版:

请一步步思考。

就这么简单。这句话会"触发"模型进入分步推理模式,在很多任务上能显著提升准确率。

这被称为 Zero-shot CoT——不需要给示例,只需要一个"咒语"。

Manual CoT:手写推理示例

更可控的方式是手动提供推理过程的示例

问:停车场有 3 辆车。又来了 2 辆。现在停车场有多少辆车?
答:停车场开始有 3 辆车。又来了 2 辆。3 + 2 = 5。所以答案是 5。

问:食堂有 7 个苹果。用掉 2 个做午餐,又买了 3 个。现在有多少个苹果?
答:食堂开始有 7 个苹果。用掉 2 个:7 - 2 = 5。又买了 3 个:5 + 3 = 8。所以答案是 8。

问:一个商店有 23 个苹果。如果他们用掉 20 个做苹果汁,又买入 6 个,最后还剩多少个苹果?
答:

通过示例,你不仅告诉模型"要分步骤",还教它用什么格式、多详细、怎么组织推理

CoT 在编程任务中的应用

CoT 对开发者特别有用,因为很多编程任务需要多步推理:

Debug

这段代码有一个 bug。请一步步分析:
1. 首先理解代码的意图
2. 然后逐行跟踪执行流程
3. 找出逻辑错误
4. 给出修复方案

```python
def find_duplicates(lst):
    seen = set()
    duplicates = set()
    for item in lst:
        if item in seen:
            duplicates.add(item)
    return list(duplicates)

### 系统设计

请帮我设计一个 URL 短链接服务。一步步思考:

  1. 需求分析:核心功能是什么
  2. 数据模型设计
  3. API 设计
  4. 关键的技术决策(短码生成算法、存储选型等)
  5. 扩展性考虑

## CoT 什么时候有用

CoT 的效果取决于任务类型:

**效果显著的任务:**
- 数学和逻辑推理
- 多步骤问题求解
- 代码调试和分析
- 需要权衡多个因素的决策

**效果不大的任务:**
- 简单的事实问答("法国的首都是?")
- 文本生成和创意写作
- 情感分类等简单分类任务
- 翻译

**经验法则:如果一个任务人类也需要"想一想"才能回答,那 CoT 就有用。如果能脱口而出,CoT 就没必要。**

## 自洽性(Self-Consistency)

CoT 的一个增强技巧:**让模型用 CoT 回答同一个问题多次,然后选最常见的答案。**

同一个问题,temperature=0.7,跑 5 次: 路径 1 → 答案 A 路径 2 → 答案 A 路径 3 → 答案 B 路径 4 → 答案 A 路径 5 → 答案 A

最终答案:A(4/5 的投票)


不同的推理路径可能得出不同答案,但正确答案通常出现频率最高。这个方法叫 **Self-Consistency**,是 CoT 的经典升级。

代价是:token 用量翻倍(或更多),适合对准确性要求高的场景。

## CoT 的局限

**增加 token 消耗**:推理步骤本身也是 token,成本和延迟都会增加。

**不是万能的**:对于小模型(<7B),CoT 效果可能不好,甚至可能让模型"想多了"反而出错。CoT 在强模型上效果最好。

**可能生成虚假推理**:模型可能写出看起来合理但实际上有误的推理步骤——它在"演"推理过程,不是真的在做逻辑推理。

## 要点总结

1. **CoT 让模型显式地写出推理步骤**,降低了跳步出错的概率。对推理类任务效果显著。
2. **最简单的方法:加上"请一步步思考"。** 这一句话就能激活 CoT 模式。
3. **手动 CoT 更可控**——通过示例教模型你期望的推理格式和粒度。
4. **CoT 适合需要"思考"的任务**——数学、逻辑、调试、设计。对简单任务无需使用。
5. **Self-Consistency 是 CoT 的升级版**——多次推理投票,提高准确率,但增加成本。