什么是 Chain-of-Thought

Chain-of-Thought(CoT,思维链)是一类通过引导模型展示中间推理步骤来提升复杂任务表现的技术。其核心洞见是:很多问题不是一步到位的——从问题到正确答案,中间需要经历若干推理步骤。如果模型直接跳到答案,出错率很高;但如果模型在输出答案之前,先逐步展示它是如何推导出这个答案的,准确率就会大幅提升。

CoT 的工作机制可以从几个角度理解:第一,它将一个复杂的推理问题分解为一系列更简单的子步骤,每一步的推理难度被降低;第二,它迫使模型”显式思考”——在生成答案 token 之前,模型已经通过中间步骤为正确答案铺好了概率路径;第三,中间步骤为最终答案提供了”自我验证”——如果推理过程自洽且合理,最终的答案也更可能是正确的。

CoT 在数学问题求解、逻辑推理、代码调试、多步骤规划和需要复杂因果推断的任务中效果最为显著。研究表明,对于需要多步推理的任务,CoT 可以将准确率提升 20% 到 50% 不等。

零样本 CoT:一句话的魔力

零样本 CoT(Zero-shot CoT)是最简单的推理增强技术,只需要在提示词末尾加上一句:”让我们一步一步思考”(Let’s think step by step)。

这一句话为什么有效?因为它触发了模型训练数据中与”系统性问题求解”相关的模式。训练数据中,高质量的多步骤推理通常会以类似的桥接短语开头,模型学会在这个短语之后生成结构化、有逻辑的思维过程。

零样本 CoT 的典型应用模式:

1
2
问题:一个商店有 23 个苹果,卖掉了 7 个,又购入了 14 个,请问现在还有多少苹果?
让我们一步一步思考。

模型的输出会是:先计算卖出后的数量(23-7=16),再计算购入后的数量(16+14=30),最后给出答案 30。

零样本 CoT 的局限也很明显:对于一些非常复杂或领域特定(如高等数学、形式逻辑证明)的问题,”一步思考”的提示过于笼统,模型可能仍然会走偏。这时候就需要少样本 CoT。

少样本 CoT:用示例教思考

少样本 CoT(Few-shot CoT)是 Chain-of-Thought 技术的原始形式,由 Google Research 在 2022 年的论文中系统性地提出。它在提示词中嵌入若干”问题—推理过程—答案”的完整范例,让模型通过模仿范例中的推理模式来求解新问题。

设计有效的少样本 CoT 范例有几个关键原则:

范例的多样性:示范案例应覆盖问题的不同类型和难度层次,让模型学会在不同情况下采用相应的推理策略。

推理步骤的粒度:步骤不宜过粗(跳过了关键推理环节)也不宜过细(冗余步骤稀释了有效信息)。每个步骤应该对应一个逻辑上不可再分的推理原子。

格式一致性:所有范例使用统一的推理格式(如”首先…其次…因此…”),这有助于模型迅速掌握输出模式。

答案与推理的分离:最终答案应该与推理过程在格式上明确分开(如用”答案:”引出),方便下游解析。

自洽性:多次采样,投票决定

自洽性(Self-Consistency)是对 CoT 的自然延伸。它的核心思想是:对于同一个问题,让模型生成多条不同的推理路径,然后对最终答案进行多数投票。

为什么自洽性有效?因为 LLM 是一个概率模型,单次采样可能”运气不好”——推理过程中某一步走偏就导致全盘皆错。但如果采样 N 次(通常 N=5 到 20),正确推理路径出现的概率远高于错误路径,多数投票将放大正确信号。

自洽性的代价是 N 倍的推理成本。但研究发现,即使 N 只有 5-10,效果提升就已经相当显著。而且,多条推理路径可以并行生成,在实际部署中延迟增加有限。

一个关键的设计选择是投票策略:简单多数投票适用于离散答案(如选择题);加权投票(每条推理路径按置信度赋予权重)适用于需要细粒度排序的场景;对于文本级别的自由形式答案,可以考虑使用另一轮 LLM 调用来比较和合并多个推理结果。

思维树:从线性到分支

思维树(Tree-of-Thought, ToT)将推理从线性链升级为树形搜索。它适用于那些需要探索多种可能性的问题——比如创意写作的多个方向、数学证明的多种路径、游戏策略的多种走法。

ToT 的工作流程:每一步思考结束后,模型生成多个候选的”下一步思考”(BFS——广度优先模式)或选择一个最有希望的路径深入(DFS——深度优先模式)。每个候选思维节点由一个”评估器”(可以是 LLM 自身)打分,高分节点被保留并继续扩展,低分节点被剪枝。

这使得 LLM 的推理更接近人类的”权衡多种可能性后再决策”的过程。在创意写作和 24 点游戏等测试中,ToT 显著优于标准 CoT。

ToT 的主要代价是计算复杂度——每扩展一层,候选节点数量呈指数增长。在实践中,广度参数(每层保留多少个候选)和深度参数(最多思考多少步)需要根据任务特点仔细调参。

思维图:更灵活的依赖结构

思维图(Graph-of-Thought, GoT)是对思维树的进一步泛化。在树中,每个思维节点只能有一个父节点;在图中,一个思维节点可以有多个父节点——也就是说,一个想法可以由多个前置想法”共同推导”出来。

GoT 适用于那些推理路径之间存在交叉和汇聚的问题。例如,在分析一篇论文时,你可以从方法论角度、实验角度和文献对比角度同时分析,然后将三个角度的发现综合为一个整体评价——这个综合节点就有三个父节点。

GoT 可以通过图操作来实现更灵活的推理,包括:聚合(将多个思维合并为一个)、精炼(在原有思维基础上改进)、生成(从已有思维产生新思维)。这种模式为 LLM 推理提供了更丰富的拓扑结构,但目前在实际应用中的采用率还远低于 ToT,部分原因是图结构的动态管理和评估更加复杂。

ReAct:推理与行动的交织

ReAct(Reasoning + Acting)是由 Google 和 Princeton 联合提出的一种将推理和行动交织在一起的范式。传统的 CoT 是”纯思考”——模型在头脑中推演,但不与外部世界交互。ReAct 打破了这种隔离:模型在思考过程中可以调用工具、查询数据库、执行计算,然后基于获得的新信息继续思考。

ReAct 的典型模式:

1
2
3
4
5
Thought: 我需要知道当前的天气才能给出穿衣建议。
Action: 查询天气 API(城市=北京)
Observation: 北京当前气温 15°C,多云。
Thought: 15°C 偏凉,建议穿薄外套。不需要雨具因为多云无雨。
Answer: 建议您今天穿一件薄外套...

ReAct 是当前 AI Agent 架构的基础。几乎所有的 Agent 框架(LangGraph、AutoGen、CrewAI)都采用了或变体于 ReAct 的”思考—行动—观察”循环模式。相比纯 CoT,ReAct 减少了幻觉——当模型不确定某事实时,它可以通过行动去验证,而非凭记忆猜测。

代码辅助推理:PAL 方法

PAL(Program-Aided Language models)利用了 LLM 的一个有趣特性:它们在生成代码方面比在直接做数学计算方面更加可靠。

PAL 的核心思想是:让模型生成可执行的程序(通常是 Python)来求解问题,而不是在头脑中直接计算。例如,对于”在一个数列中找到第 10 个质数”,CoT 可能犯错(因为需要多步计算),但 PAL 让模型写一段 Python 代码,然后执行代码得到结果——正确率远高于直接推理。

这种方法也被称为”工具增强推理”或”代码推理”。它的成功揭示了一个深层道理:把推理和计算解耦——LLM 负责理解问题并将其”翻译”为计算程序,实际的数值计算交给确定性执行环境完成。这消除了 LLM 在算术上的弱点的同时,保留了它们在语义理解上的强项。

测试时计算扩展:OpenAI o1 的哲学

OpenAI 的 o1/o3 系列模型代表了推理优化的一种全新思路:与其在设计精巧的提示词上花功夫,不如在测试时给模型更多的”思考时间”。o1 在生成最终答案之前,会在内部进行长时间的”隐藏推理”(用强化学习训练出的推理链),这些链不对用户展示(或只展示摘要)。

这一思路背后的信念是:模型的能力不仅取决于参数量和训练数据,还取决于推理时被分配的计算资源。”更长的推理 = 更好的结果”在数学竞赛(AIME)、科学推理(GPQA)和编程竞赛(Codeforces)等测试中得到了验证。

这对提示词工程意味着什么?对于 o1 这类推理模型,过于详细的 CoT 指令反而可能干扰其内部的推理机制——简单的”给出最终答案”可能比”让我们一步一步思考”效果更好。提示策略需要根据模型类型自适应调整。

CoT 什么时候有效,什么时候无效

CoT 显著有效的场景

  • 多步数学推理和符号运算
  • 逻辑谜题和约束满足问题
  • 需要因果链分析的复杂问题
  • 代码调试和错误定位
  • 对长篇文本的逐步分析

CoT 效果有限的场景

  • 简单的常识问答(一步到位,不需要推理链)
  • 需要创造性跳跃而非逻辑推理的任务
  • 模型已有高置信度知识的直接回忆
  • 对实时感知要求高的任务(CoT 不能替代缺失的感知信息)

一个常见的陷阱是”过度推理”——对简单问题使用复杂的 CoT,不仅浪费 token,有时还会引入错误(模型在某些推理步骤中”画蛇添足”)。

设计推理提示词的实用指南

  1. 根据任务复杂度选择策略:简单任务用零样本或单步推理,中等复杂度用标准 CoT 或自洽性,高复杂度考虑 ToT 或 Agent 模式。

  2. 关键信息放在提示词开头:如果使用 CoT 范例,确保最重要、最相关的范例排在最前面。模型的注意力在处理长上下文时会衰减。

  3. 给出推理框架而非具体答案:好的 CoT 范例教的是”怎么想”(方法论),而不是”想什么”(具体内容)。方法论是可迁移的。

  4. 验证中间步骤:如果你可以访问工具,在推理的每个关键步骤进行验证。错误的中间推理会级联放大。

  5. 控制推理长度:有时候过度冗长的推理过程反而有害——过长的生成可能偏离正轨。如果问题不需要 20 步推理,不要强迫模型走 20 步。

  6. 区分推理模型和通用模型:对于 o1 等推理优化模型,提示词要简洁,让模型自己决定推理深度;对于通用模型,需要更明确地引导推理结构和步骤。

CoT 和推理优化是当前 LLM 研究中发展最快的方向之一。从简单的”一步一步思考”到复杂的树搜索、图推理和 Agent 决策环路,推理技术的进步正在重新定义 LLM 的上限。掌握这些技术,意味着你能在模型能力的天花板之下,挖掘出最深层的潜力。