开篇总述:从"直接回答"到"先想再做"
在上一篇文章中,我们学习了Zero-shot和Few-shot提示------它们解决的是"如何让模型准确理解问题并给出格式正确的答案"。但一个更深层的挑战很快就会出现:当任务需要多步推理、逻辑链较长,或者需要模型调用外部工具时,单纯的"提问-回答"模式就不够用了。
举个例子。你问模型:"某公司2025年Q3营收为12.5亿美元,Q4为14.2亿美元,2026年Q1为13.8亿美元,Q2为15.1亿美元。请计算同比增长率并分析趋势。"------这个问题涉及多个计算步骤、需要正确的计算顺序、还需要基于结果做分析。即使你用了Few-shot,模型也可能在中间某一步算错,导致最终结论全盘崩溃。
问题出在哪里?模型在"黑盒"中直接生成答案,我们没有让它在回答之前先"展示推理过程"。
这就是Chain-of-Thought(思维链) 要解决的问题------让模型在输出最终答案之前,先"说出来"它是怎么想的。而当模型不仅要推理、还要调用外部工具(搜索、计算器、数据库查询)时,我们需要更进一步------这就是ReAct(Reasoning + Acting) 模式------让模型在"思考"和"行动"之间循环迭代,像人一样解决问题。
在本文中,我们将系统性地拆解两个核心问题:第一,CoT思维链提示的原理是什么、怎么用、有哪些变体?第二,ReAct模式如何将推理与工具调用结合,构建出自主解决问题的智能体? 读完这篇文章,你将掌握让大模型从"问答工具"进化为"问题解决者"的关键技术。
分述一:Chain-of-Thought(思维链)------让模型的"思考过程"可见
什么是CoT?------从"给答案"到"给推理过程"
Chain-of-Thought(CoT,思维链) 是由Google Research在2022年提出的提示技术,核心思想极其简洁但影响深远:在提示中要求模型在给出最终答案之前,先输出一步步的推理过程。
这个想法之所以有效,是因为大模型在预训练阶段学习了海量的"推理文本"------数学题解、逻辑论证、科学分析等。当你要求模型"展示推理过程"时,模型实际上是激活了它在训练数据中习得的"如何做推理"的模式,而不是仅仅靠"模式匹配"直接猜答案。
一个直观的对比:
不使用CoT(直接回答):
问题:一个超市在上午9点开门时库存了150个面包。上午卖出了37个,下午又补货了25个,晚上关门前卖出了42个。问:关门前还剩多少个面包?
模型直接回答:96个
(模型可能蒙对了,但中间可能算错步骤)
使用CoT(展示推理过程):
问题:一个超市在上午9点开门时库存了150个面包。上午卖出了37个,下午又补货了25个,晚上关门前卖出了42个。问:关门前还剩多少个面包?
请一步步推理:
思路:150 - 37 = 113(上午卖出后的剩余)
113 + 25 = 138(下午补货后的库存)
138 - 42 = 96(晚上卖出后的剩余)
答案:96个
模型不仅给出了正确答案,还把每一步都"说"了出来------这样我们就知道它没有"跳步骤",可以在任何一步发现错误。
CoT的核心价值:不仅仅是"准确率提升"
CoT的价值远超"让答案更准确"这一层:
1. 透明度:你可以看到模型的推理路径,判断它是"真懂"还是在"胡诌"。如果一个推理过程在中间某步逻辑断裂,最终答案大概率有问题。
2. 调试友好:当模型给出错误答案时,你可以定位到具体哪一步出了问题,而不是面对一个"黑盒"输出茫然不知所措。
3. 复杂任务解构:CoT强制模型将复杂任务拆解为多步简单子任务,每步只做一件事------这正是人类解决复杂问题的天然方式。
4. 触发模型的"系统2思维":心理学中有"系统1(快速直觉)"和"系统2(慢速推理)"的区分。直接回答往往激活模型的"直觉模式",而CoT强制模型切换到"推理模式"------处理数学、逻辑、规划类任务时,这种切换至关重要。
CoT的三种实战用法
用法一:Zero-shot CoT(零样本思维链)
不给任何示例,只是在问题后面追加一句魔法短语:"Let's think step by step"(中文版:"请一步步思考")。
问题:一家公司有3个部门,A部门20人,B部门是A部门的1.5倍,C部门比B部门少5人。公司总共有多少人?
请一步步思考。
实验表明,仅仅加上"Let's think step by step"这一句话,就能在算术推理任务上将准确率从不到20%提升到接近60%------不做任何其他改变。
用法二:Few-shot CoT(少样本思维链)
在Few-shot的基础上,每个示例都包含完整的"推理过程 + 答案"。这是最稳定、效果最好的CoT方式。
“请按照以下示例的格式回答问题。
示例1:
问题:小明有8支铅笔,送给朋友3支,又买了5支,现在有几支?
推理:8 - 3 = 5,5 + 5 = 10。
答案:10支。
示例2:
问题:一个班级有32名学生,其中女生比男生多6人,男生有多少人?
推理:设男生x人,女生x+6人,x + (x+6) = 32,2x + 6 = 32,2x = 26,x = 13。
答案:13人。
现在回答:一辆公交车上有45人,第一站下去12人,上来8人,第二站下去7人,上来15人,现在车上有多少人?请展示推理过程。”
用法三:自我一致性CoT(Self-Consistency)
这是CoT的一个进阶变体:让模型多次生成推理路径(比如采样5-10次),然后对最终答案进行"投票",选择出现次数最多的答案。
这种方法的逻辑是:如果模型从多条不同的推理路径都到达了同一个答案,那这个答案正确的概率就很高;如果某条路径明显走偏,它会被其他路径"纠正"。在多步推理和复杂数学问题上,Self-Consistency能进一步提升准确率5-10个百分点。
CoT的边界:什么时候不该用CoT?
CoT不是银弹。以下场景中,强行使用CoT反而会适得其反:
-
简单事实问答:"法国的首都是哪里?"------这种问题不需要推理,强行要求CoT只会浪费Token
-
模型能力不足:如果模型本身不够强(比如早期的GPT-3.5在某些领域),CoT也可能"推理歪了",不如直接回答
-
上下文窗口紧张:CoT会消耗大量额外Token,如果窗口有限或成本敏感,需要权衡收益
分述二:ReAct------让模型"边想边做"
什么是ReAct?------推理与行动的交织
ReAct(Reasoning + Acting) 是2022年由普林斯顿大学和Google Brain联合提出的智能体框架。如果说CoT只是让模型"思考",那ReAct就是让模型**"思考"和"行动"交替进行**,像人一样解决复杂问题。
ReAct的核心思想是三个词:思考 → 行动 → 观察,然后重复。
-
思考(Thought) :模型分析当前状态,决定下一步要做什么
-
行动(Action) :模型执行一个具体操作------调用搜索API、查询数据库、运行代码等
-
观察(Observation) :模型接收行动的结果反馈,更新自己的状态
这个过程不断循环,直到模型认为自己获得了足够的信息来给出最终答案。
举个生动的例子:假设你让模型回答"2026年NBA总冠军是谁?"------如果模型的知识截止到2025年,它无法直接回答。用ReAct模式:
Thought 1: 我需要查找2026年NBA总决赛的结果,因为我的知识没有覆盖到2026年。
Action 1: 搜索[2026年NBA总决赛结果]
Observation 1: 搜索结果返回了多篇新闻报道,标题显示“XX队以4-2击败XX队夺冠”。
Thought 2: 搜索结果确认了冠军队伍是XX队,但我还需要确认日期和比分细节,以便给出完整回答。
Action 2: 搜索[XX队 2026年NBA总决赛 日期 比分]
Observation 2: 返回了详细数据:总决赛于2026年6月进行,XX队4-2获胜,最后一场比分108-102。
Thought 3: 我已经获得了足够信息,可以给出最终答案了。
Final Answer: 2026年NBA总冠军是XX队,他们在总决赛中以4-2战胜了XX队,最后一场比分为108-102。
ReAct vs CoT:根本区别在哪里?
| 维度 | CoT(思维链) | ReAct(推理+行动) |
|---|---|---|
| 信息来源 | 仅靠模型内部知识 | 可调用外部工具获取新信息 |
| 推理方式 | 一次性完成全部推理链 | 推理与行动交替迭代 |
| 适用场景 | 逻辑推理、数学计算 | 需要外部信息、多步操作的任务 |
| 可纠错性 | 推理链固定,一旦偏离难以纠正 | 每步观察可反馈修正后续推理 |
| 复杂度 | 较低 | 较高,需要工具调用基础设施 |
一个更直白的理解:CoT让模型"把推理过程写出来";ReAct让模型"像人一样查资料、做实验、验证假设,然后得出结论"。
ReAct的工程实现:工具调用的基础
在2026年的实际工程中,ReAct模式的实现主要依赖大模型的Function Calling(函数调用) 能力。
Function Calling允许模型在推理过程中"声明"它想调用什么工具、传入什么参数,而不是实际去执行。外部的应用程序接收这个声明,执行相应的操作(比如调用API、查数据库),再把结果返回给模型。
典型的工具集包括:
-
搜索引擎:获取实时信息(新闻、股票、赛事结果等)
-
计算器/代码执行器:精确计算,避免模型自己算错
-
数据库查询:检索企业内部数据
-
文件读写:读取PDF、Excel,处理大型文档
-
第三方API:调用天气、地图、邮件等服务
ReAct的两个关键设计原则
原则一:思考要"精炼而有效"
ReAct中的"思考"不是长篇大论,而是关键的决策节点------当前知道什么、还缺什么、下一步要做什么。好的Thought通常是一两句话,而不是一段文章。
原则二:行动要"可拆解、可回溯"
每个Action应该做"最小单位的、独立的一件事"------一次只搜索一个关键词、只查询一张表、只计算一个值。这样如果某一步失败,可以精确回退,而不是让整个任务从头再来。
ReAct的常见陷阱
陷阱1:无限循环
模型可能在"思考→行动→观察"中陷入死循环------比如反复搜索同样的关键词,或者在一个失败的行动上反复尝试。需要在工程上设置最大迭代步数 (通常5-15步)和重复检测。
陷阱2:过度行动
模型可能在没有充分思考的情况下就开始行动,比如"无脑搜索"。好的ReAct设计应该鼓励模型先思考清楚"缺什么信息",再决定"用什么工具去获取"。
陷阱3:忽略观察结果
模型有时会在收到Observation后,忽视其中关键信息,继续走原来的思路。需要通过提示明确要求模型**"根据观察结果重新评估自己的状态"**。
分述三:CoT + ReAct的融合------2026年的最佳实践
在实际工程中,CoT和ReAct不是"二选一",而是往往结合使用。
最常见的融合模式是:
-
先用CoT做任务规划:模型在初始阶段用思维链拆解任务,列出需要做哪些事、每一步需要什么信息
-
再用ReAct执行每一步:对于需要外部信息的子任务,启动ReAct循环
-
最后用CoT做结果汇总:收集所有执行结果后,用思维链整合成最终答案
这种"规划-执行-汇总"的模式,在2026年的Agent开发框架(如LangGraph、AutoGen)中已经成为了标准范式。
另一个重要的融合场景是ReAct过程中的"内部推理":即使在每一次Action之前,模型也可以先在内部做一次"微型CoT"------想清楚"我为什么要做这一步、我期望得到什么结果、如果结果不符合预期该怎么办"。
结尾总结:从"问答"到"问题解决"的关键一跃
让我们回顾一下本文的核心内容:
第一,CoT思维链提示让模型的推理过程"可视化"。 通过在提示中要求模型"一步步思考",我们能大幅提升模型在多步推理、算术、逻辑任务上的准确率,同时获得推理的可追溯性和可调试性。Zero-shot CoT靠一句"Let's think step by step"就能生效,Few-shot CoT更加稳定可靠,Self-Consistency进一步通过"多次采样+投票"提升准确率。
第二,ReAct模式让模型"边想边做"。 在CoT的基础上,ReAct引入了"行动"和"观察"的循环------模型不仅能推理,还能主动调用搜索、计算器、数据库等外部工具来获取新信息。这种"思考→行动→观察→再思考"的迭代过程,让模型具备了解决"知识盲区之外"问题的能力。
第三,CoT和ReAct在实际工程中往往是融合使用的。 "规划→执行→汇总"的模式已成为2026年Agent开发的标准范式------先用CoT做全局规划,再用ReAct执行具体子任务,最后用CoT整合结果。
从Zero-shot到Few-shot,从CoT到ReAct------我们走过了一条清晰的"能力升级"路径:
-
Zero-shot/Few-shot:教会模型"听懂话、答对题"
-
CoT:教会模型"展示推理过程、自我纠偏"
-
ReAct:教会模型"调用工具、迭代解决问题"
掌握了ReAct模式,你就已经触碰到了AI Agent(智能体)开发的门槛。ReAct是所有Agent框架最底层的"思考引擎"------无论是LangGraph、AutoGen还是CrewAI,它们的核心工作流程都离不开"推理-行动-观察"这个基本循环。