跳到主要内容
预计阅读 20 分钟

05|让AI展示推理过程:思维链的力量

场景引入:一道简单的应用题,AI却算错了

你正在用AI辅助做一份季度运营报告,需要计算一个关键指标。你输入:

某电商平台上季度总订单量为12,000单,退货率8%,每单平均利润45元,
其中会员订单占比60%且利润上浮20%。请计算上季度实际净利润。

AI秒回一个数字:486,000元

你拿出计算器验算,发现不对。正确的计算过程应该是:先扣除退货订单,再分别计算会员和非会员的利润,最后汇总。AI跳过了中间步骤,直接给了一个看起来合理但实际错误的答案。

这就像学生考试时只写答案不写过程——不但老师无法判断思路是否正确,学生自己也容易在心算时出错。解决方案很简单:要求把解题步骤写出来

这个策略在提示词工程中有个专业名称:思维链提示(Chain-of-Thought Prompting,简称CoT)


什么是思维链提示

思维链提示的核心思想是:不要让AI直接跳到最终答案,而是引导它把中间推理步骤逐一展开

打一个比方。你去餐厅点菜,服务员直接端上一盘菜说”这是你要的”,你可能会困惑。但如果服务员说”根据您说不吃辣、偏好清淡、今天的时令食材是鲈鱼,所以推荐清蒸鲈鱼”——整个推理链条透明了,你既能验证逻辑,也更信任这个推荐。

对AI来说,当它被要求展示推理过程时,并不只是在”表演思考”。展开中间步骤会迫使模型在每一步都进行更精细的计算和推断,从而显著降低在复杂任务中跳步出错的概率。这就像GPS导航——如果只告诉你终点在哪,你可能走错路;但如果一步步告诉你”前方200米左转、过两个红绿灯右转”,到达正确目的地的概率就大得多。


为什么CoT有效

大语言模型的本质是”下一个词预测器”——它一次只生成一个词(或token)。当你问一个需要多步推理的问题时,如果直接要求输出答案,模型需要在极少的生成步骤里完成所有计算,这就好比要求一个人在心里同时处理五个运算步骤然后直接报答案。

而当你让模型”把推理过程写出来”时,每一个中间步骤都变成了实际生成的文本。模型在生成每一步结论时,可以把前面已经写出来的步骤当作”草稿纸”来参考。这相当于给了它额外的”计算空间”。

用更技术的语言来说:CoT让模型把一个需要深度推理的任务,分解成了多个浅层推理的串联,每一步都降低了出错的风险。


手动CoT:在提示中提供带步骤的示例

最直接的CoT实现方式是在提示词中给出一个包含完整推理步骤的示例,然后让AI模仿这个格式来回答新问题。

示例:利润计算

你是一个财务分析助手。请按照示例中的计算步骤格式来回答问题。

【示例】
问:一家书店月销售额80,000元,成本率65%,税率13%,房租12,000元/月。
请计算月净利润。

答:
第1步:计算毛利润
毛利润 = 销售额 × (1 - 成本率) = 80,000 × (1 - 0.65) = 80,000 × 0.35 = 28,000元

第2步:计算税费
税费 = 销售额 × 税率 = 80,000 × 0.13 = 10,400元

第3步:扣除税费和固定成本
净利润 = 毛利润 - 税费 - 房租 = 28,000 - 10,400 - 12,000 = 5,600元

月净利润为5,600元。

【你的问题】
问:某电商平台上季度总订单量为12,000单,退货率8%,每单平均利润45元,
其中会员订单占比60%且利润上浮20%。请计算上季度实际净利润。

AI的回复:

第1步:计算实际成交订单量
退货订单 = 12,000 × 8% = 960单
实际成交订单 = 12,000 - 960 = 11,040单

第2步:区分会员和非会员订单
会员订单 = 11,040 × 60% = 6,624单
非会员订单 = 11,040 - 6,624 = 4,416单

第3步:分别计算利润
会员单均利润 = 45 × (1 + 20%) = 45 × 1.2 = 54元
会员总利润 = 6,624 × 54 = 357,696元
非会员总利润 = 4,416 × 45 = 198,720元

第4步:汇总
上季度实际净利润 = 357,696 + 198,720 = 556,416元

上季度实际净利润为556,416元。

每一步都清晰可查,任何一步有误都能立即定位。


零样本CoT:一句话触发推理链

手动CoT需要精心设计示例,在很多场景下并不方便。好消息是,研究者发现了一个极其简单的替代方案——只需要在问题末尾加上一句”请一步步思考”,就能显著提升AI的推理表现。

这就是所谓的零样本CoT(Zero-shot CoT)——不需要提供任何示例,仅靠一条指令触发。

对比实验:有无”请一步步思考”的差异

不加CoT触发语的提示:

一个水池有两个进水管A和B。A管单独注满需要6小时,
B管单独注满需要4小时。同时开两个管,多久注满?

早期模型可能回复:

同时开两个管,需要5小时注满。

这个答案是错误的(简单取了平均值)。需要说明的是,当前最新的主流模型(如 GPT-4o、Claude Sonnet 4.6)在这类简单数学题上即使不加 CoT 也大概率能答对。但在更复杂的多步推理任务中,CoT 的提升效果仍然非常显著。

加上CoT触发语的提示:

一个水池有两个进水管A和B。A管单独注满需要6小时,
B管单独注满需要4小时。同时开两个管,多久注满?

请一步步思考。

AI的回复:

第1步:计算每根管道每小时的注水量(以水池容量为1)
A管每小时注水量 = 1/6
B管每小时注水量 = 1/4

第2步:计算同时开启时每小时总注水量
总注水量 = 1/6 + 1/4 = 2/12 + 3/12 = 5/12

第3步:计算注满时间
时间 = 1 ÷ (5/12) = 12/5 = 2.4小时

同时开两个管,2.4小时(即2小时24分钟)可注满水池。

一句话的差别,结果从完全错误变成了完全正确。

常用的CoT触发语

不同的触发语措辞略有差异,但效果类似:

触发语适用场景
请一步步思考通用,适用于各类推理
请展示你的推理过程偏重逻辑分析
请先分析问题,再给出答案强调”分析在前、结论在后”
Let’s think step by step英文场景下的经典触发语
请列出你的计算步骤数学和数据分析场景

实战对比:三个场景下CoT的效果

场景一:逻辑推理

任务: 判断一个推理是否成立。

不加CoT:

所有项目经理都懂需求分析。
老张懂需求分析。
所以老张是项目经理。

这个推理正确吗?

AI回复:是的,这个推理是正确的。(实际上这是一个经典的逻辑谬误——“肯定后件”)

加CoT:

所有项目经理都懂需求分析。
老张懂需求分析。
所以老张是项目经理。

这个推理正确吗?请一步步分析推理结构。

AI回复:

第1步:梳理前提和结论
前提1:所有项目经理 → 懂需求分析(项目经理是需求分析能力的充分条件)
前提2:老张懂需求分析
结论:老张是项目经理

第2步:分析逻辑结构
前提1告诉我们"如果是项目经理,那么懂需求分析",但并没有说"只有项目经理才懂需求分析"。
产品经理、业务分析师同样可能懂需求分析。

第3步:识别谬误类型
这是一个"肯定后件"谬误。已知A→B成立,从B成立不能推出A成立。
就像"所有猫都是动物"不能推出"所有动物都是猫"。

结论:这个推理是不正确的。

场景二:代码调试

任务: 找出代码中的bug。

不加CoT:

下面这段Python代码计算列表中所有正数的平均值,但结果不对,请找出问题:

def avg_positive(numbers):
    total = 0
    count = 0
    for n in numbers:
        if n > 0:
            total += n
        count += 1
    return total / count

AI回复:问题在于 count 应该在 if 语句里面递增。

回答正确但不够有说服力——读者可能不理解”为什么”。

加CoT:

下面这段Python代码计算列表中所有正数的平均值,但结果不对。
请一步步模拟代码执行过程来找出bug:

def avg_positive(numbers):
    total = 0
    count = 0
    for n in numbers:
        if n > 0:
            total += n
        count += 1
    return total / count

AI回复:

我用输入 [3, -1, 5, -2, 4] 来模拟执行:

第1次循环:n=3, 3>0成立, total=3, count=1
第2次循环:n=-1, -1>0不成立, total=3, count=2 ← 问题在这里
第3次循环:n=5, 5>0成立, total=8, count=3
第4次循环:n=-2, -2>0不成立, total=8, count=4
第5次循环:n=4, 4>0成立, total=12, count=5

最终返回:12 / 5 = 2.4

但正确结果应该是:(3+5+4) / 3 = 4.0

问题定位:count += 1 的缩进位置不对。它在 if 语句之外,导致负数也被
计入了分母。应将 count += 1 移到 if 代码块内部。

修复后:
def avg_positive(numbers):
    total = 0
    count = 0
    for n in numbers:
        if n > 0:
            total += n
            count += 1  # 移到 if 内部
    return total / count

通过”模拟执行”这种CoT方式,不但找到了bug,还清楚解释了为什么这是bug。

场景三:多条件决策

任务: 根据复杂规则做出判断。

公司差旅报销规则如下:
- 经济舱机票全额报销,公务舱需总监审批且仅报销80%
- 住宿标准:一线城市500元/晚,二线城市350元/晚,超出部分自付
- 餐饮补贴:国内80元/天,海外200元/天
- 出差天数超过7天的,第8天起住宿标准上浮15%

请计算:小李出差去上海(一线城市)10天,坐公务舱(票价3,200元,已获总监审批),
住宿实际花费每晚620元,餐饮按标准。他能报销多少钱?

请一步步计算。

AI回复:

第1步:计算机票报销
公务舱已获总监审批,报销80%
机票报销 = 3,200 × 80% = 2,560元

第2步:计算住宿报销
前7天:标准为500元/晚,实际620元/晚,按标准报销
前7天住宿报销 = 500 × 7 = 3,500元

第8-10天(共3天):标准上浮15%
上浮后标准 = 500 × 1.15 = 575元/晚,实际620元/晚,仍按标准报销
后3天住宿报销 = 575 × 3 = 1,725元

住宿总报销 = 3,500 + 1,725 = 5,225元

第3步:计算餐饮补贴
上海属于国内,标准80元/天
餐饮补贴 = 80 × 10 = 800元

第4步:汇总
总报销金额 = 2,560 + 5,225 + 800 = 8,585元

小李本次出差可报销8,585元。
住宿自付部分 = (620-500)×7 + (620-575)×3 = 840 + 135 = 975元。

像这种多规则交叉的计算,不用CoT几乎不可能一次做对。


自我一致性:让AI多次作答,投票选最优

即使使用了CoT,模型在复杂问题上偶尔仍会犯错。自我一致性(Self-Consistency) 是CoT的一个增强策略(由 Wang et al. 提出,2022 年在 arXiv 发布,2023 年正式发表于 ICLR,论文:Self-Consistency Improves Chain of Thought Reasoning in Language Models):让AI对同一问题独立推理多次,然后取出现频率最高的答案。

原理很直观:如果一个人做同一道数学题做了5遍,其中4遍得到相同答案、1遍算出了不同结果,那4遍得到的那个答案大概率是对的。

实践方法

请用三种不同的方法来验证以下问题的答案:

一个项目团队有5名开发、3名测试、2名设计。现在需要组建一个3人攻坚小组,
要求至少包含1名开发和1名测试。有多少种组建方式?

对每种方法,请独立推导,最后对比三个结果。

AI会用排列组合的不同切入角度(如正面计数、总数减去不满足条件的、分类讨论)分别计算,最后交叉验证。

当三种方法得到相同答案时,你对结果的信心会大幅提升。如果结果不一致,你可以让AI检查每种方法中哪一步出了问题。

简化版:直接请求二次验证

如果不想设计复杂的多次采样,一个简单的替代方案是在prompt末尾加一句:

请完成计算后,用另一种方法验算你的结果,确认答案一致。

这相当于”做完题检查一遍”,成本低但效果明显。


CoT的适用场景与不适用场景

CoT并不是万能的。了解它的适用边界,才能在正确的场景使用正确的策略。

适用场景

场景为什么CoT有效
数学计算需要多步运算,展开步骤避免心算出错
逻辑推理需要追踪前提和推论的关系
代码分析需要模拟执行流程
多条件决策需要逐一检查每个条件是否满足
因果分析需要区分相关性和因果性
规划类任务需要考虑步骤顺序和依赖关系

不适用场景

场景为什么CoT帮助不大
简单事实查询”法国首都是哪里”不需要推理
创意写作写诗、写故事更依赖联想而非逻辑链
翻译任务翻译主要依赖语言能力而非推理能力
情感分析”这句话是正面还是负面”通常一步就能判断

一个简单的判断标准:如果你自己在解决这个问题时需要纸笔来打草稿,那AI大概率也需要CoT

推理模型:内置CoT的新范式

值得特别说明的是,2024 年以来出现的推理模型(如 OpenAI o1/o3/o4-mini、DeepSeek-R1 等)已经内置了链式推理能力。这些模型在回答前会自动进行多步内部推理,无需你在 prompt 中显式添加”请一步步思考”。

对于推理模型,提示词设计的策略有所不同:

  • 简洁直接的指令往往效果更好——过多的 CoT 触发语可能干扰模型的内部推理链
  • 聚焦于”做什么”而非”怎么想”——把精力放在清晰描述任务本身,而非指导推理过程
  • Temperature 固定为 1 且不可修改——推理模型(如 o1/o3/o4-mini)在 API 层面不支持将 temperature 设置为非 1 的值,强行设置会返回错误

如果你使用的是传统模型(如 GPT-4o、Claude Sonnet 等),本章介绍的手动 CoT 和零样本 CoT 技巧仍然非常有效。关键在于了解你使用的模型类型,选择匹配的提示策略。更多关于推理模型的使用指南,可参考 OpenAI Reasoning Guide


进阶技巧:控制推理方向

CoT的一个常见陷阱是先入为主——AI可能先直觉性地给出一个倾向,然后用推理步骤来”证明”这个直觉,而不是通过推理得出结论。

反面示例:

有人说Python比Java慢10倍,请分析这个说法是否正确。请一步步思考。

AI可能先假设”是的大约慢10倍”,然后找支持这个结论的证据。

改进写法:

有人说Python比Java慢10倍。请先客观列出需要考虑的因素和维度,
然后逐一分析每个因素,最后再综合得出你的判断。
不要在分析之前预设结论。

关键差别在于:明确要求”先分析后结论”的顺序,并且禁止预设结论

另一个有效的技巧是要求AI扮演”反方”自我质疑:

请完成分析后,尝试找出你自己推理中可能存在的漏洞或隐含假设,
并评估这些漏洞是否会改变你的最终结论。

这就像法庭辩论中同时扮演控辩双方,能有效减少单向推理的偏差。


本章回顾

概念说明关键用法
思维链(CoT)引导AI展示中间推理步骤在prompt中提供带步骤的示例
零样本CoT不需要示例,用一句话触发”请一步步思考”
手动CoT提供完整推理示例让AI模仿在prompt中给出分步解题示范
自我一致性多次推理取最一致的答案要求AI用多种方法交叉验证
推理方向控制防止AI先有结论再找理由”先分析后结论,不要预设立场”

核心原则: CoT的本质是把”一步到位”的难题变成”逐步推进”的简单步骤。当任务复杂度超过模型单步处理能力时,CoT就是你最有力的工具。


思考题

  1. 你在工作中遇到过哪些”AI直接给答案但答错了”的场景?尝试用CoT重新提问,观察结果是否改善。

  2. 对于以下任务,你会使用CoT吗?为什么?

    • 把一段英文技术文档翻译成中文
    • 判断一段代码是否存在SQL注入风险
    • 根据销售数据预测下个月的增长率
  3. 尝试设计一个prompt,让AI在分析完问题后自动找出自己推理中的薄弱环节。观察这种”自我质疑”是否提升了最终答案的质量。

购买课程解锁全部内容

告别答非所问:12 章掌握提示词工程

¥39.90