ReAct 设计模式是什么?Agent 是怎么一边思考、一边调用工具的?
如果你观察过一个 Agent 的运行过程,会发现它和普通聊天模型很不一样。
普通模型往往是:你问一句,它直接回答一句。
但 Agent 可能会先判断“这个问题需要查资料”,接着调用搜索工具;拿到搜索结果后,又发现还需要计算,于是继续调用计算器;最后才根据这些结果组织答案。
问题来了:
模型为什么知道下一步该做什么?工具返回结果之后,它又是怎么决定要不要继续行动的?
ReAct 设计模式,就是理解这件事最重要的入口之一。
为什么会有 ReAct?
先看一个最简单的问题:
“北京今天适不适合户外活动?”
如果只让大模型直接回答,它可以根据已有知识进行分析,但“今天的天气”属于外部实时信息,模型本身未必知道。
这时我们可以给模型一个天气工具。
但仅仅“有工具”还不够。
真实任务往往不是:
用户提问↓调用一次工具↓结束而更像这样:
用户提出任务↓判断缺什么信息↓调用工具↓拿到结果↓重新判断↓必要时继续调用其他工具↓直到信息足够↓生成最终回答这中间最重要的能力,不是“会不会调用工具”,而是:
能不能根据当前信息,动态决定下一步该做什么。
早期的两类方法各有明显局限。
一类方法强调推理。模型可以先分析问题、拆解步骤,再给出答案,但它主要依赖模型内部已有的信息,无法主动进入外部环境获取新证据。
另一类方法强调行动。模型可以执行搜索、点击、查询等动作,但如果缺少高层判断,就容易变成“会操作,但不知道为什么这么操作”。
ReAct 的思路,就是把两件事放到一个循环里:
Reason + Act:边判断,边行动,再根据行动结果继续判断。
ReAct 到底是什么?
它的核心思想并不复杂:
让语言模型的推理/决策过程与外部行动交替进行,并把环境反馈重新放回上下文,作为下一步决策的依据。
最经典的结构可以简化成:
Reason ↓Action ↓Observation ↓Reason ↓Action ↓Observation ↓…… ↓Final Answer ```这里最重要的不是记住三个英文单词,而是理解它们之间的关系。  ### Reason:判断下一步应该做什么 Reason 可以理解为 Agent 当前的判断过程。 比如: ```plaintext 用户问的是实时天气。我现在没有天气数据。下一步应该调用天气工具。需要注意的是,在今天的 Agent 系统里,Reason 不等于必须把完整“思维链”展示给用户。
从工程角度看,我们真正关心的是:
Agent 能否根据当前上下文,做出正确的下一步决策。
具体产品和模型可以只输出工具调用决策,而不暴露详细的内部推理文本。
Action:真正执行一个动作
Action 就是 Agent 对外部环境采取的操作。
常见动作包括:
- • 调用天气 API;
- • 查询数据库;
- • 读取文件;
例如:
Action:get_weather(city="Beijing")这一刻,Agent 不再只是“生成文字”,而是开始真正和外部世界发生交互。
Observation:环境返回了什么
工具执行完成之后,会返回结果。
例如:
Observation:Beijing: 24°C, cloudy这个结果会重新进入 Agent 的上下文。
Agent 再根据新的信息判断:
现在已经拿到天气信息。信息足够,可以回答用户。如果信息还不够,它也可以继续调用其他工具。
所以,ReAct 真正形成的是一个反馈循环:
判断↓行动↓获取结果↓根据结果重新判断↓继续行动或结束这就是 ReAct 最核心的地方。
一次 ReAct 到底是怎么跑起来的?
假设用户问:
“旧金山现在天气怎么样?”
Agent 拥有一个 get_weather 工具。
概念上,它的执行过程可以理解成:
用户:旧金山现在天气怎么样? ↓Agent:这个问题需要外部天气信息。 ↓Action:get_weather("San Francisco") ↓Observation:18°C,多云 ↓Agent:已经拿到回答问题所需的信息。 ↓Final Answer:旧金山目前约 18°C,多云……如果任务更复杂,这个循环就可能执行多次。
例如用户说:
“帮我看看杭州周末天气,如果不下雨,再推荐一个适合户外的地方。”
Agent 可能经历:
查询杭州天气↓得到天气结果↓判断是否适合户外↓如果适合,再搜索户外地点↓读取搜索结果↓筛选↓生成回答也就是说,下一步行动不是提前全部写死的,而是会受到上一轮 Observation 的影响。
这也是 ReAct 和普通固定流程最明显的区别之一。
用 LangChain 跑一个最小 ReAct Agent
现在的 Agent 框架通常已经把这套循环封装起来了,不需要我们手写:
while True: reason() act() observe()以当前 LangChain 的 create_agent 为例,官方实现会让模型和工具在循环中交替执行:模型决定是否发起工具调用,工具返回结果后再次交给模型,直到模型不再请求工具并输出最终结果。
先安装:
pip install -U langchain "langchain[openai]"配置模型所需的 API Key 后,可以写一个最小示例:
from langchain.agents import create_agentdef get_weather(city: str) -> str: """Get weather for a given city.""" # 为了演示 ReAct 循环,这里直接返回固定数据。 return f"{city}: 18°C, cloudy"agent = create_agent( model="openai:gpt-5.5", tools=[get_weather], system_prompt="You are a helpful assistant.",)result = agent.invoke( { "messages": [ { "role": "user", "content": "What's the weather in San Francisco?", } ] })print(result["messages"][-1].content_blocks)这段代码最值得看的是三个地方。
第一,tools=[get_weather]。
这相当于告诉 Agent:
你除了生成文字,还拥有一个可以获取天气信息的外部能力。
第二,用户问题进入模型之后,模型可以决定是否调用这个工具。
如果决定调用,就会生成一个 tool call。
第三,工具返回结果以后,这个结果会作为新的消息重新进入模型。
于是整体过程变成:
User Message ↓ Model ↓是否调用工具? ↓ ↓ 是 否 ↓ ↓Tool Final Answer ↓Tool Result ↓Model ↓再次判断你在代码里只写了一个agent.invoke(),但框架内部可能已经完成了多轮“模型 → 工具 → 模型”的循环。
这就是 ReAct 模式在现代 Agent 框架中的典型工程形态。
ReAct 适合解决什么问题?
ReAct 最适合的,不是所有任务,而是下面这类问题:
1. 搜索与研究
例如:
“帮我查几份资料,再综合判断它们的差异。”
Agent 不知道一开始会搜到什么。
第一次搜索结果,会决定下一步搜索什么。
这正适合 ReAct。
2. 数据库查询
例如:
“帮我找出销售额下降最明显的地区,并分析原因。”
Agent 可能先查汇总数据,再根据结果继续查某个地区、某段时间或某类商品。
查询路径是动态的。
3. 故障排查
例如:
“为什么这个服务启动失败?”
Agent 可能先读日志,再根据错误信息执行命令、查看配置、继续定位问题。
每一次 Observation 都可能改变下一步。
4. 多工具 Agent
例如一个 Agent 同时拥有:
搜索天气数据库代码执行文件读取用户只给出目标。
Agent 需要自己判断:当前应该调用哪个工具?
这种场景本身就是 ReAct 思路非常典型的落点。
最后
理解 ReAct,最重要的不是背下 Reason → Action → Observation 这三个词。
而是理解 Agent 的工作方式发生了什么变化。
普通大模型更像:
输入↓生成回答ReAct Agent 更像:
输入↓判断下一步↓执行↓观察结果↓继续判断↓直到任务完成ReAct 的本质,就是把“思考之后再行动、行动之后再根据结果继续判断”变成一个可重复执行的 Agent 循环。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~