news 2026/9/30 4:21:32

ReAct 设计模式是什么?Agent 是怎么一边思考、一边调用工具的?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ReAct 设计模式是什么?Agent 是怎么一边思考、一边调用工具的?

ReAct 设计模式是什么?Agent 是怎么一边思考、一边调用工具的?

如果你观察过一个 Agent 的运行过程,会发现它和普通聊天模型很不一样。

普通模型往往是:你问一句,它直接回答一句。

但 Agent 可能会先判断“这个问题需要查资料”,接着调用搜索工具;拿到搜索结果后,又发现还需要计算,于是继续调用计算器;最后才根据这些结果组织答案。

问题来了:

模型为什么知道下一步该做什么?工具返回结果之后,它又是怎么决定要不要继续行动的?

ReAct 设计模式,就是理解这件事最重要的入口之一。

为什么会有 ReAct?

先看一个最简单的问题:

“北京今天适不适合户外活动?”

如果只让大模型直接回答,它可以根据已有知识进行分析,但“今天的天气”属于外部实时信息,模型本身未必知道。

这时我们可以给模型一个天气工具。

但仅仅“有工具”还不够。

真实任务往往不是:

用户提问↓调用一次工具↓结束

而更像这样:

用户提出任务↓判断缺什么信息↓调用工具↓拿到结果↓重新判断↓必要时继续调用其他工具↓直到信息足够↓生成最终回答

这中间最重要的能力,不是“会不会调用工具”,而是:

能不能根据当前信息,动态决定下一步该做什么。

早期的两类方法各有明显局限。

一类方法强调推理。模型可以先分析问题、拆解步骤,再给出答案,但它主要依赖模型内部已有的信息,无法主动进入外部环境获取新证据。

另一类方法强调行动。模型可以执行搜索、点击、查询等动作,但如果缺少高层判断,就容易变成“会操作,但不知道为什么这么操作”。

ReAct 的思路,就是把两件事放到一个循环里:

Reason + Act:边判断,边行动,再根据行动结果继续判断。

ReAct 到底是什么?

它的核心思想并不复杂:

让语言模型的推理/决策过程与外部行动交替进行,并把环境反馈重新放回上下文,作为下一步决策的依据。

最经典的结构可以简化成:

Reason ↓Action ↓Observation ↓Reason ↓Action ↓Observation ↓…… ↓Final Answer ```这里最重要的不是记住三个英文单词,而是理解它们之间的关系。 ![](http://cdn.zhipoai.cn/042cb723.jpg) ### 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时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 4:20:21

Hindsight Agent记忆系统实战:MCP协议接入与Docker化部署

1. 从“hindsight”说起:为什么我们需要给 Agent 装一个“事后诸葛亮”的记忆模块第一次看到“hindsight”这个词被拿来命名一个 Agent 记忆相关的项目,我脑子里蹦出来的不是词典释义,而是每次 debug 到凌晨三点时那种“早知道就该把中间状态…

作者头像 李华
网站建设 2026/9/30 4:20:01

18个ChatGPT商业分析提示词:框架锚定与工作流实战指南

简介:这份资源面向希望借助ChatGPT提升日常工作效率的职场人、管理者与创业者,核心是18个可直接套用的提示词模板,覆盖营销策略、品牌建设、业务运营、供应链、商业模式、团队协作、社交媒体、客户体验、创业、财务规划与企业文化等场景。每个…

作者头像 李华
网站建设 2026/9/30 4:19:53

Spring Boot自动配置迁移:从spring.factories到AutoConfiguration.imports

1. 自动配置加载机制:从 spring.factories 说起接触过 Spring Boot 的同学应该都知道,Spring Boot 最让人省心的就是“自动配置”。也就是说,你引入一个spring-boot-starter-data-redis依赖,RedisTemplate 就能直接注入使用了。不…

作者头像 李华
网站建设 2026/9/30 4:18:26

DeepSeek内容变现实战:API接入、批量生成与避坑指南

简介:在AI内容创作的热潮中,如何将大模型能力转化为可落地的生产力,是众多内容从业者关注的核心问题。以DeepSeek为代表的国产大模型,通过兼容OpenAI的API接口,降低了技术门槛,让公众号文章、PPT、视频脚本…

作者头像 李华
网站建设 2026/9/30 4:18:22

AI工程从零开始:数据、训练、评估与部署全链路实战

我真正下决心做一次“ai-engineering-from-scratch”,把整套AI工程链路从零开始完整走一遍,是因为一次被生产事故狠狠教育了。那个项目的模型在离线测试里跑得漂漂亮亮,上线一周后准确率直接对折,连同事都开始怀疑我的测试集是不是…

作者头像 李华