想象你是一名数学老师。班上有两个学生:小林性子急,每次考试都在草稿纸上随便划两下就写答案,简单题还行,一碰到多步应用题就频频出错;小明则习惯从“已知”写到“求解”,每一步都清清楚楚列在卷面上,虽然写得慢些,但答案总是又稳又准。今天要讲的 Chain of Thought(思维链,简称 CoT),就是教 AI 当“小明”的技术。 在思维链出现之前,大语言模型很像小林——你问它一个复杂问题,它直接蹦出一个答案,中间没有任何推理痕迹,错误率自然居高不下。2022 年研究者发现一个惊人的事实:只要在提问时加上一句“请逐步思考”,让模型先把推理步骤写出来再给答案,它在数学、逻辑题上的准确率立刻飙升。后来,OpenAI 的 o1 等推理模型更进一步,在模型内部“心算”一大堆推理后再给出答案——就像考场上那种不打草稿的学霸。这门技术,正是现代大模型“忽然变聪明”的核心开关,也是所有 AI 推理应用的地基。
掌握 CoT,你就掌握了大模型推理增强的底层逻辑——无论是搭建编程助手、科研 AI 还是多智能体系统,思维链都是让模型“想清楚再回答”的第一原理。
目录
可视化演示
展示CoT思维链推理三大维度:显式vs隐式(EX可见推理文本Few-shot提示PaLM vs IM隐藏token推理OpenAI o1)、推理链流程(Q→S1→S2→S3→A五步分解,错误传播EPG+自一致性SC+树思维TOT)、效果对比(GSM8K无CoT 18%→有CoT 57% 3倍提升,PaLM-540B模型),三模式切换理解大模型推理能力涌现。
本节配有交互动效(进入视口后自动加载,约 3KB)。
'+C1+'
思维链缘起:从“直接猜答案”到“写解题过程”
数学考场上,小明以前喜欢心算直接写答案。简单的运算题还行,一遇到好几步的应用题就经常答错,还找不到错在哪。后来老师立下规矩:凡是应用题必须把解题过程写在答卷上。奇怪的事情发生了——小明不但能检查出自己哪一步算错了,而且整体正确率明显上升。写解题过程这个看似“多此一举”的动作,其实在强迫大脑把模糊的思路变得清晰有序。
大语言模型也面临同样的处境。早期模型被训练成“直接给出答案”,面对“一辆车从 A 城开往 B 城,路程 240 公里,每小时 60 公里,中途休息 20 分钟,几点到达?”这类多步问题,模型会像心算的小明一样“一本正经地胡说八道”——因为它从未被要求组织中间推理。2022 年,Google 研究团队发现:只要在提示里让模型“先把推理步骤写出来,再给答案”,数学推理准确率就大幅飙升。他们把这种方法命名为 Chain-of-Thought(思维链,简称 CoT)。
思维链的本质,是把“问题到答案”的短跳变成“问题到一系列中间步骤再到答案”的长链条。设复杂问题为 x,中间推理步骤为 s₁, s₂, …, sₖ,最终答案为 A。直接模式要求一步到位地从 x 猜 A,而思维链模式把概率拆解开,每一次“小跳”都更容易走对:
这和老师要求“写过程”的逻辑一模一样:步骤写出来,每一步只想着“下一步怎么算”,大脑负担减轻,错误还能被及时抓住。小明的及格率上来了,模型的分步推理准确率也上来了——这项技术也因此被视为大模型推理能力涌现的重要触发器。
- P(s₁|x)模型基于问题 x 生成第一步推理 s₁,这一步通常只是“读懂问题、确定先算什么”
- P(s₂|s₁,x)在已有第一步结论的基础上生成第二步,条件里多了一个已写下的推理结果,预测难度随之降低
- 连乘符号 ×表示每一步都以上一步为条件,链条越长,每步需要承担的推理负担越轻
- P(A|sₖ,x)最后一步基于全部推理过程给出答案,此时模型只需做“收尾”,几乎不会出错
显式思维链:把草稿纸交到答卷上
老师要求“过程必须写清楚”,于是小明每次做题都把草稿纸上的内容誊到答卷上:先写“已知:…”,再写“求:…”,然后一步步列算式。模型这边,显式思维链(Explicit CoT)就是让模型把“草稿纸”上的推理文字直接输出给用户。你只需要在问题后面补一句神奇咒语,它就乖乖开始写过程。
触发显式思维链最简单的方式叫零样本思维链(Zero-shot CoT):在问题后面追加一句“请一步步思考,然后再给出答案”(Let's think step by step)。模型会先生成推理过程,再生成最终答案。此外还有少样本思维链(Few-shot CoT):先在提示里给两三个“带完整推理过程的示例”,让模型模仿示例的格式进行推理。
显式思维链的提示与输出结构可以写成:
当模型输出 s₁, s₂ … 这些中间步骤时,它们既参与了推理(为后续步骤提供上下文),又暴露给用户(可解释、可检查)。
就像小明把“已知、求、解”一步步誊到答卷上,模型把推理过程写进输出,老师(开发者)能一眼看出哪步有问题——这就是思维链带来的“可解释性”,也是“步骤错误定位”的价值所在。
- 拼接符 ⊕表示“把思考指令拼接到问题后面”,二者共同构成完整的提示词
- 触发句“请逐步思考”零样本思维链的核心咒语,引导模型进入“写过程”模式
- 步骤链 s₁→s₂→…→sₖ中间推理步骤一个接一个生成,每步都建立在前一步的结论之上
- 答案 A推理链条的终点,前面所有步骤都是通往它的“脚手架”
隐式思维链:学霸的心算黑箱
考场上有种神秘学霸,从来不在试卷上写过程,却总能给出正确得吓人的答案。老师心知肚明:这孩子是在脑子里“心算”,草稿纸只存在于脑海里。2024 年 OpenAI 推出 o1 系列推理模型,走的正是这条路线:模型在内部生成大量“思考”内容后才作答,但这些中间推理对用户不可见——你只看到它“沉默思考了一会儿”,然后直接给出最终答案。
隐式思维链(Implicit CoT)的关键构件是“推理标记”(reasoning tokens)。o1 模型在正式回答前,会额外生成几百到几千个 token,专门用于内部探索、反思和验证,最后再生成可见的答案。这些推理标记不是“最终输出”,系统会在返回前把它们截断掉。这种“隐藏思考过程”的设计,正是推理模型架构与普通对话模型的核心区别。
用符号表示,模型生成的完整 token 序列分成两段:
输出时只返回后一段,前一段被“输出截断策略”丢弃。推理标记让模型拥有了“思考预算”——它可以在内部试错、自我纠错,而这些试错成本用户看不见,也不污染输出格式。
心算学霸的草稿纸只存在于脑子里,老师看不见但答案靠谱。o1 模型的推理标记就像那份“隐形草稿纸”——用算力换准确率,在沉默中输出真知。
- 隐藏推理标记 r₁,…,rₙ模型内部生成的推理内容,占用推理时间与算力,但不作为答案直接展示
- 拼接符 ⊕表示“先内部推理、后生成答案”两段序列首尾相连,构成完整的生成过程
- 可见答案 a₁,…,aₘ最终展示给用户的部分,通常是结论加简要说明
- 截断策略工程上在返回结果前丢弃前 n 个推理标记,只把 a 段传给 API 调用方
自洽性增强:多种解法对答案
小明发现,每次做题只写一种解法,偶尔会掉进同一个坑。于是他养成了一个习惯:做完之后用另一种思路再算一遍,如果两种解法答案一致,他就放心地交卷;如果不一致,就重新检查。这就是所谓的“多种方法互相印证”。
大模型生成答案有随机性——同样的提示,采样多次可能得到不同的思维链和答案。自洽性(Self-Consistency)策略正是利用这种随机性:让模型对同一个题目独立采样 m 条思维链,得到 m 个答案,然后投票,票数最多的答案作为最终输出。它不依赖单一推理路径,而是让“多数解法”共同决定答案,投票过程本身也是对答案方向的校准。
自洽性的投票聚合公式:
其中 aᵢ 是第 i 条采样链给出的答案,[·] 是示性函数(条件成立记 1,否则记 0),统计每个候选答案获得的票数,取最高票为最终答案。
小明的“两种解法对答案”升级成了“m 种解法投票”。一个人的思路可能偏,一群人的共识往往更接近真相——票数分布还能近似表达模型对答案的“置信度”,这就是自洽性把“三人成虎”变成算法的过程。
- 采样 m 条链对同一个问题独立生成 m 条思维链,m 越大投票越可靠,但计算成本线性增长
- 示性函数当第 i 条链的答案恰好等于候选答案 a 时记 1 票,否则记 0 票
- 求和计数把所有链的票数累加,得到每个候选答案的总票数
- argmax 取最高票在所有候选答案中选累计票数最高的那个作为最终答案 â
性能提升:从及格边缘到接近满分
坚持写过程加多方法验证之后,小明的数学成绩从班级中游一路冲到前三。思维链给大模型带来的提升,同样可以用“从及格到优秀”来形容。在小学数学应用题基准 GSM8K 上,仅用“请逐步思考”这一句咒语,就让 540 亿参数的 PaLM 模型准确率从 18% 飙到 57%;配上自洽性投票,还能继续涨到 74%。数学逻辑类任务正是思维链的主战场。
更有意思的是“涌现能力”现象:模型规模小时,加不加思维链效果差不多;一旦规模越过某个临界点,思维链带来的准确率提升突然出现并剧烈放大。这说明 CoT 不只是提示技巧,而是大模型规模与训练方式共同作用后“解锁”出来的复杂任务分解能力。同时,由于推理过程可见,错误可以被一步步验证和追溯,可解释性也随之增强。
用一条不等式概括思维链的效果规律:
R 表示模型 M 在任务 T 上的准确率,ΔR 表示思维链带来的增益。当模型参数量 M 超过临界值 M_临界 时,增益显著为正,并在数学、逻辑等需要多步推理的任务上迅速放大。
小明的基础够扎实(模型够大),“写过程”这个习惯才真正发光。规模和思维链,一个提供潜力,一个负责兑现——这就是 CoT 作为“推理涌现触发器”的完整故事。
- R_CoT(M,T)同一模型 M 在任务 T 上使用思维链方式回答时的准确率
- R_direct(M,T)同一模型在同样任务上直接给出答案的准确率
- 增益 ΔR两者之差,任务越复杂(多步计算、逻辑推理)增益越大,简单问答增益很小
- 临界条件 M > M_临界模型参数量超过临界值,这是增益突现的前提——规模不到,思维链就无从谈起
应用与工程:从考场到工厂车间
小明长大后成了项目经理,才发现当年考场上的“写过程”竟成了职场核心竞争力:遇到复杂任务,他把大任务拆成小步骤,每步想清楚再推进,还让团队成员各自分头调研再碰头汇总。这套方法论原封不动地搬进了 AI 工程实践。
思维链在真实场景里有三层用法。第一层:单模型提示——给编程助手说“先分析调用链再给修复方案”,给科研助手说“先列出假设再设计实验”,给设计师说“先列约束再出方案”。第二层:多智能体协作(Multi-Agent)——把一个大任务拆成多个子任务,分配给多个 Agent,每个 Agent 独立用思维链推理,最后汇总。第三层:工程化兜底——把自洽性投票、错误重试、结果校验封装成标准推理管线。
多智能体协作的抽象公式:
每个 Agent 负责一个子任务,内部用 CoT 推理,输出被汇总模块整合。这种“化整为零、各自推理、集中裁决”的架构,正是思维链思想从“模型内部”走向“系统层面”的自然延伸。
从考场上“写过程”,到职场上“拆任务、团队分工、汇总决策”,思维链完成了从个人习惯到组织方法的进化。大模型时代,它既是提示词里的三个字,也是整套推理系统的设计哲学。
- 任务拆解 ∪总任务被拆成若干个子任务的并集,每个子任务足够简单、边界清晰
- Agentᵢ 独立推理第 i 个智能体接收对应子任务,用自己的思维链完成推理
- 汇总函数裁决模块收集各 Agent 输出,做去重、校验、投票,形成最终结论
- 最终结论所有子任务结论整合后的输出,可直接用于业务决策或交付
AI 应用场景
软件开发:让编程助手先梳理调用链再修复
阶段:推理与代码生成
解决的问题:传统方式直接让模型给修复建议,模型经常答非所问。用思维链让模型先分析调用链、复现路径、枚举可能原因,再给出修复方案,定位速度与准确率显著提升。
具体案例:开发者把一段报错堆栈和相关代码交给编程助手,提示“请先梳理调用链,列出 3 个可能原因,再给出修复建议”。助手输出的中间分析帮助开发者在 10 分钟内定位到根因——比直接报错自查快了近一倍。
科学研究:把假设验证拆成可审计的分步推理
阶段:数据分析与假设生成
解决的问题:传统数据分析直接输出统计结果,缺乏可解释的推演链。CoT 让模型“先分步验证假设、再下结论”,研究过程可复现、可审计。
具体案例:生物信息团队让模型分析基因表达差异时,先输出“数据清洗 → 归一化 → 差异检验 → 通路富集”的步骤与中间结论,最终汇总成一份带推理依据的可审核报告,期刊审稿人当场就能验证每一步。
智能客服:多智能体分工推理再汇总
阶段:系统架构与多智能体协作
解决的问题:单模型客服遇到复杂投诉经常出错。采用多 Agent 架构:分诊 Agent 拆解问题,各方案 Agent 分步推理,审核 Agent 校验,最后统一汇总回答。
具体案例:电商平台把售后问题拆成订单、物流、退款三个子任务,三个 Agent 各自用思维链推理后汇总;上线后复杂工单的一次解决率提升了 40%,用户等待时间减少 25%。
Python 演示
# -*- coding: utf-8 -*-"""思维链(CoT)演示:对比直接乱猜、显式分步推理与自洽性投票""" def word_problems(): """需要多步计算的应用题集""" return [ "小明有3袋苹果,每袋4个,又买了2个,一共有几个?", "一本书120页,每天读15页,读了4天,还剩几页?", "商店有5盒笔,每盒6支,卖出8支,还剩几支?", ] def direct_answer(problem): """无思维链:直接用问题内容做随机种子,模拟瞎猜""" import random rng = random.Random(hash(problem) % 10000) return rng.randint(0, 30) def chain_of_thought(problem, notes=None): """显式思维链:列出中间推导步骤,再返回最终答案""" if "苹果" in problem: result = 3 * 4 + 2 lines = [ "每袋4个,共有3袋:3 × 4 = 12", "又买了2个:12 + 2 = 14"] elif "书" in problem: result = 120 - 15 * 4 lines = [ "每天读15页,读了4天:15 × 4 = 60", "总共120页,剩下:120 - 60 = 60"] else: result = 5 * 6 - 8 lines = [ "每盒6支,共有5盒:5 × 6 = 30", "卖出8支,剩下:30 - 8 = 22"] if notes is not None: notes[:] = lines return result def self_consistency(problem, n=5): """自洽性:多次推理并投票,选出最高票答案""" votes = {} for _ in range(n): ans = chain_of_thought(problem) votes[ans] = votes.get(ans, 0) + 1 return max(votes, key=votes.get), votes def main(): print("=== 思维链演示:直接乱猜 vs 显式分步 vs 自洽投票 ===\n") for prob in word_problems(): print("题目:", prob) print("直接回答(猜测):", direct_answer(prob), "(不可靠)") notes = [] answer = chain_of_thought(prob, notes) print("显式思维链分步:") for line in notes: print(" ·", line) print("分步答案:", answer) best, votes = self_consistency(prob) print("自洽性投票:", votes, "→ 采纳", best) print("-" * 40) if __name__ == "__main__": main()
rng = random.Random(hash(problem) % 10000)用问题内容做随机种子,模拟“没思考直接猜”的不可靠行为result = 3 * 4 + 2显式思维链先把“乘”算完再算“加”,中间状态一目了然notes[:] = lines通过列表引用把中间步骤传回调用处,就像模型输出里公开的推理过程votes[ans] = votes.get(ans, 0) + 1每一条思维链投一票,统计各答案的票数return max(votes, key=votes.get), votes选出票数最高的答案作为最终结论,同时返回票数分布供参考if __name__ == "__main__":保证脚本可以直接运行,也可以被别的模块导入复用
常见误区
误区“我只要在提示词里加上'请一步步思考',任何模型都能变聪明,这就是全部了。”
正解CoT 更像“放大器”而不是“魔法咒语”。模型本身要有足够大的规模和训练质量,提示词只是触发它已有的推理能力。实验表明,参数量很小的模型加 CoT 提升有限,甚至会因输出过长而更差;只有当模型规模越过“临界点”(涌现现象),思维链才带来显著增益。就像只学过加减法的小学生,你让他“写清楚过程”,他也解不出微积分——能力本身得先存在。
为何常见:零样本 CoT 只需一句提示词就能生效,看上去像“咒语”,让人忽略了模型规模这个前提。
误区“o1 模型不给我看思考过程,说明它根本没推理,是在装样子。”
正解恰恰相反,o1 在内部生成大量推理标记(可能几千个 token),通过强化学习学会“先想后答”,只是最终输出被截断。推理标记虽然用户不可见,但在复杂任务的准确率上可测量地提升了。这就像心算学霸不打草稿,不代表他没想——只是草稿纸在脑子里。
为何常见:用户只看得到最终输出,容易把“看不见的推理”误认为“没有推理”。
误区“既然 CoT 这么好,我就把所有请求都加上'请逐步思考',反正多一点输出没坏处。”
正解CoT 适用于需要多步推理的任务(数学、逻辑、代码、规划),对简单任务(如“查询某个事实”)反而浪费 token、增加延迟,甚至把简单问题“想复杂”而出错。工程上应做任务分类:简单任务直接回答,复杂任务启用思维链,必要时再叠加自洽性投票。
为何常见:论文和新闻都在宣传 CoT 的巨大提升,让人以为它通用无副作用,忽略了它本质上是成本与收益的权衡。
误区“显式 CoT 是过时的提示词技术,隐式 CoT(o1 风格)才是未来,两者互斥。”
正解二者不互斥,主流方案常组合使用:让模型先显式输出结构化分析(用户可检查),再在内部做更深的隐式推理(准确率兜底)。例如“先列风险点,再深入思考并给结论”,既保留可解释性,又享受隐式推理的深度,相当于“试卷上写关键步骤 + 脑子里快速心算”。
为何常见:o1 发布后媒体喜欢制造“新方法取代旧方法”的叙事,让人忽略了工程上通常是混合使用。
面试题
Q1. 思维链(CoT)的核心思想是什么?
- A.直接输出答案以换取速度提升
- B.先输出推理步骤再给出答案← 正确答案
- C.用更大的模型替换原有小模型
- D.用强化学习重新训练生成模型
答案:B。CoT 的核心是让模型在给出最终答案前,先输出中间推理步骤(思维链),再基于这些步骤作答。直接输出答案正是 CoT 出现前的老办法;换大模型是规模维度的思路;强化学习训练是另一些推理模型的内部手段,都不是 CoT 的定义。就像考试要求“写过程”,重点在过程本身,而不是换考生或换考试制度。
Q2. 触发零样本思维链的典型方式是什么?
- A.增加大量人工标注的推理训练数据
- B.把模型的温度参数调整到零值
- C.在问题后追加请逐步思考再给出答案← 正确答案
- D.使用更大的解码窗口输出更长文本
答案:C。零样本思维链(Zero-shot CoT)不需要修改训练数据或解码参数,只需在问题后追加“请逐步思考,再给出答案”这类指令,模型就会自动进入分步推理模式,相当于老师一句“把过程写出来”就让学生改变了答题习惯。
Q3. 显式思维链和隐式思维链的主要区别是什么?
- A.前者展示推理过程而后者隐藏← 正确答案
- B.前者用于文本而后者用于图像
- C.前者准确率高而后者准确率低
- D.两者在实现上没有本质的区别
答案:A。显式思维链把中间步骤作为可见输出展示给用户;隐式思维链(如 o1)在内部生成推理标记后直接截断,只返回最终答案。区别在于“草稿纸是否公开”,而不在于模态、准确率高低,更不是没有区别。
Q4. 自洽性(Self-Consistency)的工作原理是什么?
- A.只采样一条思维链保证结果一致
- B.采样多条思维链投票选出最终答案← 正确答案
- C.用一个模型专门验证另一个模型
- D.反复提问同一提示直到答案不再变
答案:B。自洽性对同一个问题独立采样多条思维链,得到多个答案后投票,票数最高者胜出。只采样一条链正是它要避免的情况;用一个模型验证另一个模型是“LLM 作为裁判”的思路;反复提问到稳定也不是它的定义。类比:多种解法各算一遍,对一下答案是否一致。
Q5. 关于推理标记(reasoning tokens),下列说法正确的是?
- A.用户能在最终输出中直接看到推理标记
- B.推理标记会作为正式答案展示给使用者
- C.推理标记在内部生成且返回前被截断隐藏← 正确答案
- D.推理标记是提示词模板里的占位符号
答案:C。推理标记是 o1 等推理模型在内部生成的思考内容,生成完毕后在返回结果前被截断,用户只能看到最终答案。它不属于提示词模板,也不会展示给使用者。就像心算的过程不会写在交上去的卷子上。
Q6. 关于思维链的“涌现能力”,正确的说法是?
- A.模型规模越过临界点后思维链增益突然放大← 正确答案
- B.任何规模的模型加思维链都能立刻提升准确率
- C.思维链只在图像分类任务上表现出显著增益
- D.思维链的效果与模型规模和参数量完全无关
答案:A。涌现能力指模型参数量超过某个临界值后,思维链带来的准确率增益突然出现并快速放大,这是规模与训练共同作用的结果。小模型加思维链提升有限;思维链的显著收益集中在数学、逻辑等推理任务,且与模型规模强相关,B、C、D 都不对。
Q7. 在实际工程中应用思维链时,以下哪项做法最合理?
- A.对所有请求一律强制模型分步进行思考
- B.仅对简单任务使用思维链以保证速度
- C.按任务复杂度分流并搭配多智能体协作← 正确答案
- D.移除所有中间推理只保留最终的答案
答案:C。合理做法是按任务复杂度分流:简单任务直接回答,复杂任务启用思维链,更复杂的再叠加自洽性投票或多智能体分工汇总。A 会浪费算力和时间;B 用反了场景;D 放弃思维链等于回到老路。这就像小明只在应用题上写过程,口算题直接写答案。
Q8. 思维链能显著提升哪些类型任务的表现?
- A.需要多步计算的数学应用题← 正确答案
- B.涉及条件分支的多步逻辑推理← 正确答案
- C.回忆单一实体的名称和属性信息
- D.需要分阶段安排的复杂规划任务← 正确答案
答案:ABD。思维链擅长把复杂任务拆成小步,数学应用题、多步逻辑推理、复杂规划都有“中间步骤”可写,收益显著。回忆单一实体是简单的查找任务,写不写过程差别不大,甚至浪费 token,不属于思维链的主场。
Q9. 关于显式思维链与隐式思维链,下列说法正确的有?
- A.显式思维链输出包含可见的中间步骤← 正确答案
- B.隐式思维链有不可见的推理标记参与← 正确答案
- C.显式与隐式思维链可以组合使用← 正确答案
- D.隐式思维链完全不需要推理计算时间
答案:ABC。显式输出可见步骤、隐式包含被截断的推理标记,二者都可以在工程中组合使用,例如“先列风险点,再内部深想后给结论”。D 错误——隐式思维链恰恰花大量算力做内部推理,只是不展示而已,并非不费时间。
Q10. 为什么自洽性投票能提升思维链的准确率?
- A.多条独立思维链同时出错概率很低← 正确答案
- B.投票过程消除了单一路径的方向偏差← 正确答案
- C.投票直接省去了中间步骤的生成成本
- D.多数链的共识往往对应正确的答案← 正确答案
答案:ABD。单条思维链可能沿某个错误方向一路走偏,但多条独立采样链同时以同样方式走错的概率很低,因此多数链的共识往往指向正确答案,投票相当于给答案做了“方向校准”。C 错误:投票需要采样更多链,计算成本不是省了,而是增加了。