CoT 是什么
思维链(Chain-of-Thought,CoT)指让模型在给出结论之前先输出中间推理步骤。直接作答时,模型要在一次输出里完成全部跳跃,任何一步算错都会带进结论;把多步计算与条件判断摊开写,中间结果可以被检查,正确率也更容易提升。Wei 等人 2022 年的实验显示,这种提升在参数量足够大的模型上才明显出现,说明 CoT 是把模型已有的推理能力引导出来,而不是教它新的知识。
代价与替代关系
CoT 用更多输出 token 换正确率:推理过程要占预算和延迟,简单任务(单步分类、字段抽取)加上推理反而多出出错面。需要程序解析答案时,把推理与答案分区输出;需要更高稳定性时,可在同一提示上多次采样再做多数投票,也就是自洽性投票。
基本写法
| 两种形态 | 零样本:补一句先分步推理再给结论;少样本:示例里带完整推理过程 |
|---|---|
| 适用 | 多步算术、单位换算、逻辑与因果判断、需要摊开依据的方案权衡 |
| 不适用 | 单步分类、字段抽取、模型本身不擅长的领域,推理越长错得越整齐 |
| 成本 | 输出更长,延迟与费用上升;答案提取要另加分区或二次调用 |
| 忠实性 | 推理文本不保证真实反映内部计算,只能当输出内容看,不能当审计依据 |
典型使用场景
- 多步算术与单位换算:每步写出中间量,便于定位算错的环节
- 方案权衡:把候选、判据、取舍理由摊开,结论可复核
- 逻辑与因果判断:先列出条件再推结论,减少跳步式误判
- 结论需要人工复核的场景:评审者按推理链逐行检查,而不是只看答案
- 作为自洽性投票的基础:同一条 CoT 提示多次采样,对最终答案做多数投票
少样本 CoT 片段
少样本 CoT 片段
示例:
问:仓库原有 120 箱,上午出库 45 箱,下午入库 30 箱,现有多少箱?
答:上午出库后 120-45=75;下午入库后 75+30=105。结论:105 箱。
待答:……推理与答案分区
推理与答案分区
<reasoning>
# 只写必要步骤,每步一行,总量不超过 150 字
</reasoning>
<answer>
# 只写最终答案,不重复推理内容
</answer>四种常见形态
| 形态 | 写法要点 | 适用与代价 |
|---|---|---|
| 零样本 CoT | 问题后补一句先分步推理再给结论 | 改动最小,适合试水;引导语措辞会明显影响效果 |
| 少样本 CoT | 示例含推理三段结构,格式统一 | 输出结构稳定、可解析;示例占上下文 |
| 自洽性投票 | 同提示多次采样后取多数答案 | 正确率更稳;成本近似按采样次数计 |
| 先计划再求解 | 先列 3-5 步计划,再逐步执行并核对 | 减少要算什么这类理解层错误;多一轮输出 |
模型开始出声思考时,答案里常混进推理中的中间数字;用 <answer> 标签或二次调用只取最终答案,程序端按标签定位再解析。
同一模型上,CoT 的效果依任务类型差别很大:先在自己的小测试集上对比开与不开两种写法,再决定是否长期保留。