| 实战代码系列最新文章😉 | C++实现图书管理系统(Qt C++ GUI界面版) |
| SpringBoot实战系列🐷 | 【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案 |
| 分库分表 | 分库分表之实战-sharding-JDBC分库分表执行流程原理剖析 |
| 消息队列 | 深入浅出 RabbitMQ-RabbitMQ消息确认机制(ACK) |
| AI大模型 | 零基础学AI大模型之LangChain Tool异常处理 |
前情摘要
1、零基础学AI大模型之读懂AI大模型 2、零基础学AI大模型之从0到1调用大模型API 3、零基础学AI大模型之SpringAI 4、零基础学AI大模型之AI大模型常见概念 5、零基础学AI大模型之大模型私有化部署全指南 6、零基础学AI大模型之AI大模型可视化界面 7、零基础学AI大模型之LangChain 8、零基础学AI大模型之LangChain六大核心模块与大模型IO交互链路 9、零基础学AI大模型之Prompt提示词工程 10、零基础学AI大模型之LangChain-PromptTemplate 11、零基础学AI大模型之ChatModel聊天模型与ChatPromptTemplate实战 12、零基础学AI大模型之LangChain链 13、零基础学AI大模型之Stream流式输出实战 14、零基础学AI大模型之LangChain Output Parser 15、零基础学AI大模型之解析器PydanticOutputParser 16、零基础学AI大模型之大模型的“幻觉” 17、零基础学AI大模型之RAG技术 18、零基础学AI大模型之RAG系统链路解析与Document Loaders多案例实战 19、零基础学AI大模型之LangChain PyPDFLoader实战与PDF图片提取全解析 20、零基础学AI大模型之LangChain WebBaseLoader与Docx2txtLoader实战 21、零基础学AI大模型之RAG系统链路构建:文档切割转换全解析 22、零基础学AI大模型之LangChain 文本分割器实战:CharacterTextSplitter 与 RecursiveCharacterTextSplitter 全解析 23、零基础学AI大模型之Embedding与LLM大模型对比全解析 24、零基础学AI大模型之LangChain Embedding框架全解析 25、零基础学AI大模型之嵌入模型性能优化 26、零基础学AI大模型之向量数据库介绍与技术选型思考 27、零基础学AI大模型之Milvus向量数据库全解析 28、零基础学AI大模型之Milvus核心:分区-分片-段结构全解+最佳实践 29、零基础学AI大模型之Milvus部署架构选型+Linux实战:Docker一键部署+WebUI使用 30、零基础学AI大模型之Milvus实战:Attu可视化安装+Python整合全案例 31、零基础学AI大模型之Milvus索引实战 32、零基础学AI大模型之Milvus DML实战 33、零基础学AI大模型之Milvus向量Search查询综合案例实战 33、零基础学AI大模型之新版LangChain向量数据库VectorStore设计全解析 34、零基础学AI大模型之相似度Search与MMR最大边界相关搜索实战 35、零基础学AI大模型之LangChain整合Milvus:新增与删除数据实战 36、零基础学AI大模型之LangChain+Milvus实战:相似性搜索与MMR多样化检索全解析 37、零基础学AI大模型之LangChain Retriever 38、零基础学AI大模型之MultiQueryRetriever多查询检索全解析 39、零基础学AI大模型之LangChain核心:Runnable接口底层实现 40、零基础学AI大模型之RunnablePassthrough 41、零基础学AI大模型之RunnableParallel 42、零基础学AI大模型之RunnableLambda 43、零基础学AI大模型之RunnableBranch 44、零基础学AI大模型之Agent智能体 45、零基础学AI大模型之LangChain Tool工具 46、零基础学AI大模型之LLM绑定Tool工具实战 47、零基础学AI大模型之LangChain Tool异常处理
本文章目录
-
- 前情摘要
- 零基础学AI大模型之CoT思维链和ReAct推理行动
-
- 一、为什么需要CoT/ReAct?痛点太明显了!
- 二、什么是CoT(思维链,Chain of Thought)?让模型“一步步想”
-
- 2.1 CoT核心机制
- 2.2 实战案例:买苹果哪家更划算?
- 2.3 CoT的优缺点
- 2.4 CoT典型应用场景
- 三、什么是ReAct(推理与行动,Reasoning and Acting)?让模型“边想边做”
-
- 3.1 ReAct核心逻辑
- 3.2 实战案例:2027年诺贝尔文学奖得主的代表作是什么?
- 3.3 ReAct的核心优势
- 3.4 ReAct典型应用场景
- 四、CoT vs ReAct 全方位对比(一张表看懂)
- 五、应用场景指南:该选CoT还是ReAct?
- 六、LangChain实战:分别实现CoT和ReAct
-
- 6.1 实战1:LangChain实现CoT(解决数学推理问题)
- 6.2 实战2:LangChain实现ReAct(查询实时天气)
- 七、常见陷阱与避坑技巧
-
- 7.1 CoT避坑技巧
- 7.2 ReAct避坑技巧
- 八、总结
零基础学AI大模型之CoT思维链和ReAct推理行动
咱们之前学完了Agent智能体和Tool工具,知道了大模型可以通过调用外部工具拓展能力边界。但实际用的时候会发现:面对数学计算、多步骤决策这种复杂任务,模型要么直接给出错误答案,要么“瞎编”信息(也就是咱们说的“幻觉”)。这时候该怎么办呢?
今天就来学两个能解决这个问题的核心技术——CoT(思维链) 和ReAct(推理与行动) 。它们就像给大模型装了“思考的脑子”和“动手的手脚”,让模型从“直接给答案”变成“像人一样思考+做事”,咱们一步步把它们搞懂~
一、为什么需要CoT/ReAct?痛点太明显了!
传统大模型处理问题就像“考试直接写答案”——不管题难不难,都跳过思考过程直接给结果。这在简单问题上还行,但遇到复杂场景就拉胯了:
- 数学推理:比如“买3送1的苹果,买8斤哪家划算”,直接算容易漏步骤算错;
- 多步骤决策:比如“订机票+查天气+预约接送机”,没法一步步规划执行;
- 实时信息查询:比如“2027年诺贝尔文学奖得主是谁”,模型训练数据里没有,只能瞎编;
- 可解释性差:用户不知道答案是怎么来的,没法信任,也没法排查错误。

而CoT和ReAct就是为了解决这些痛点而生——核心需求很简单:让模型展示思考过程,并且能根据情况动态调整策略。
用个通俗的类比理解下:
- 普通模型 → 考试直接写答案(对错全靠蒙,不知道怎么想的);
- CoT → 在试卷上写解题步骤(知其然,也知其所以然);
- ReAct → 边查公式手册边解题(不会就查,确保答案准确)。
二、什么是CoT(思维链,Chain of Thought)?让模型“一步步想”
2.1 CoT核心机制

CoT的本质很简单:通过提示词让模型显式生成推理步骤,再根据步骤得出最终答案。就像咱们解数学题一样,先分析条件、再套用公式、最后计算结果,每一步都写清楚。
它的通用格式是这样的:
问题:…[输入问题]…
思考步骤:
1. 第一步分析(如提取关键数据、明确问题目标)
2. 第二步计算(如公式应用、逻辑推导)
3. …(更多推理步骤)
最终答案:…[根据步骤得出的结论]…
2.2 实战案例:买苹果哪家更划算?
咱们拿之前的例子实战下,感受下CoT的威力:
问题:A超市苹果每斤5元,买3斤送1斤;B超市同品质苹果每斤6元但买二送一。买8斤哪家更划算?
无CoT回答(可能出错):“A超市划算”(没说为什么,错了也不知道哪错);
CoT推理回答(清晰易懂):
看到没?步骤清晰,就算中间算错了,也能快速找到问题所在~
2.3 CoT的优缺点
优点:
- 简单易实现:不用改模型,只用写提示词定义步骤格式就行;
- 可解释性强:推理过程看得见,用户容易信任;
- 提升复杂推理准确率:尤其是数学、常识推理任务。
局限性:
- 依赖模型内部知识:如果模型本身知识错了(比如认为“太阳绕地球转”),推理链条也会错;
- 处理不了动态信息:没法获取实时数据(比如“今天的气温”);
- 步骤冗余:简单问题(比如“1+1等于几”)分步反而降低效率。
2.4 CoT典型应用场景
- 教育领域:辅导学生解数学、科学题,展示解题思路;
- 智能客服:回答复杂问题(如“退款流程”)时,说明决策依据,增强信任;
- 逻辑推理任务:比如合同条款分析、案件逻辑梳理等。
三、什么是ReAct(推理与行动,Reasoning and Acting)?让模型“边想边做”
如果说CoT是让模型“会思考”,那ReAct就是让模型“会思考+会做事”——不仅能推理,还能调用外部工具获取信息、执行操作,完美解决CoT“不懂就瞎想”的问题。
3.1 ReAct核心逻辑
ReAct的核心是循环执行“思考→行动→观察”三步法,直到得出最终答案。简单说就是:先想该做什么,再调用工具做,最后根据工具返回结果调整思路,循环往复。
它的通用格式是这样的:
问题:…[输入问题]…
思考:当前需要解决的问题是…,我需要先做什么…
行动:调用__工具名称__(参数)
观察:工具返回结果…
思考:根据返回结果,下一步需要…
行动:调用__工具名称__(参数)
观察:工具返回结果…
…(循环)
答案:…[最终结论]…
3.2 实战案例:2027年诺贝尔文学奖得主的代表作是什么?

这个问题需要实时信息,CoT解决不了,但ReAct能轻松搞定:
ReAct流程:
再比如“2027年NBA总冠军是哪个队伍”,ReAct会调用体育新闻API或搜索引擎获取最新信息,而不是瞎编~
3.3 ReAct的核心优势
- 减少幻觉:通过调用外部工具获取真实数据,不用依赖模型“过时又可能错”的内部知识;
- 处理复杂任务:多步骤、需要交互的任务(如订机票、查物流)都能搞定;
- 透明可解释:思考过程和行动步骤都看得见,能跟踪决策逻辑;
- 拓展能力边界:模型能通过工具做任何事——查天气、算数据、控设备等。
3.4 ReAct典型应用场景
- 知识问答系统:需要实时信息(如财经数据、体育赛事、科技动态)的问答;
- 任务自动化:如预订机票、查询物流、控制智能家居、生成数据分析报告;
- 事实核查:验证信息真伪(如“某明星是否结婚”),避免传播错误信息。
四、CoT vs ReAct 全方位对比(一张表看懂)
很多同学会问:什么时候用CoT,什么时候用ReAct?咱们用一张表把核心区别说透:
| 核心组件 | 纯提示工程,无需外部依赖 | Agent智能体 + 外部Tool工具 |
| 数据依赖 | 仅依赖模型内部知识 | 可接入外部数据源/API,获取实时信息 |
| 错误修复 | 单次推理完成,无法动态修正 | 可通过多次“思考-行动”循环修正错误 |
| 适用场景 | 理论推导、数学计算、逻辑推理 | 实时信息查询、多步骤决策、任务自动化 |
| 计算开销 | 低(仅生成文本) | 中高(涉及工具调用、网络请求) |
| LangChain实现 | ChatPromptTemplate + LLMChain | Agent + Tools + AgentExecutor |
| 核心优势 | 简单、透明、无外部依赖 | 实时交互、扩展性强、减少幻觉 |
| 核心缺点 | 无法获取最新信息,知识可能过时 | 依赖工具API稳定性,开发成本稍高 |
五、应用场景指南:该选CoT还是ReAct?
根据上面的对比,给大家总结一套“选型口诀”,直接套用就行:
六、LangChain实战:分别实现CoT和ReAct
咱们用之前学过的LangChain框架,写两段简单代码,实战感受下CoT和ReAct的实现过程(零基础也能看懂)~
6.1 实战1:LangChain实现CoT(解决数学推理问题)
CoT的实现核心是“设计提示词模板,让模型输出推理步骤”:
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain
# 1. 初始化大模型(这里用OpenAI,也可以换成本地化模型如Llama3)
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
# 2. 设计CoT提示词模板:明确要求输出推理步骤
cot_prompt = ChatPromptTemplate.from_messages([
("system", "你是一个数学老师,解决数学问题时,先分步骤写出推理过程,再给出最终答案。"),
("human", "问题:{question}")
])
# 3. 构建LLMChain
cot_chain = LLMChain(llm=llm, prompt=cot_prompt, verbose=True) # verbose=True查看思考过程
# 4. 运行链,解决问题
question = "小明有5个苹果,小红给了他3个,他又吃了2个,最后还剩几个?"
result = cot_chain.run(question)
# 输出结果
print("CoT推理结果:")
print(result)
运行结果(会输出推理步骤):
> Entering new LLMChain chain…
Prompt after formatting:
[SystemMessage(content='你是一个数学老师,解决数学问题时,先分步骤写出推理过程,再给出最终答案。'), HumanMessage(content='问题:小明有5个苹果,小红给了他3个,他又吃了2个,最后还剩几个?')]
> Finished chain.
CoT推理结果:
1. 首先,小明原本有5个苹果,小红给了他3个,此时苹果数量为5 + 3 = 8个;
2. 接着,小明吃了2个苹果,剩余苹果数量为8 – 2 = 6个;
最终答案:6个
6.2 实战2:LangChain实现ReAct(查询实时天气)
ReAct需要结合Agent和Tool,这里用“天气查询工具”举例(需要先安装pyowm库获取天气API):
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.chat_models import ChatOpenAI
# 1. 初始化大模型
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
# 2. 加载工具:这里用"openweathermap"(需要先在环境变量配置API_KEY)
tools = load_tools(["openweathermap"], llm=llm)
# 3. 初始化ReAct Agent
react_agent = initialize_agent(
tools,
llm,
agent=AgentType.REACT_DOCSTORE, # ReAct类型Agent
verbose=True # 显示思考、行动、观察过程
)
# 4. 运行Agent,查询实时天气
result = react_agent.run("查询北京现在的天气,包括温度和天气状况。")
# 输出结果
print("ReAct查询结果:")
print(result)
运行结果(会显示“思考→行动→观察”循环):
> Entering new AgentExecutor chain…
I need to find the current weather in Beijing, including temperature and weather conditions. I should use the openweathermap tool.
Action: openweathermap
Action Input: Beijing
Observation: Current weather in Beijing: clear sky, temperature: 25°C
Thought: I have obtained the current weather in Beijing. The weather is clear sky and the temperature is 25°C. I can now answer the question.
Final Answer: 北京现在的天气为晴,气温25摄氏度。
> Finished chain.
ReAct查询结果:
北京现在的天气为晴,气温25摄氏度。
是不是很简单?通过这两段代码,就能直观感受到CoT和ReAct的区别~
七、常见陷阱与避坑技巧
7.1 CoT避坑技巧
7.2 ReAct避坑技巧
八、总结
今天咱们学会了CoT和ReAct两个核心技术,核心要点可以总结为3句话:
这两个技术是Agent智能体的核心基础,学好它们,咱们后续做复杂任务自动化(如智能助手、数据分析机器人)就轻松多了~
如果本文对你有帮助,欢迎点赞+关注+收藏🌟 ,有任何问题或实战需求,欢迎在评论区留言交流~ 我是工藤学编程,陪你从零到一玩转AI大模型!🚀


