ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

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

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(cityBeijing)这一刻Agent 不再只是“生成文字”而是开始真正和外部世界发生交互。Observation环境返回了什么工具执行完成之后会返回结果。例如Observation:Beijing: 24°C, cloudy这个结果会重新进入 Agent 的上下文。Agent 再根据新的信息判断现在已经拿到天气信息。信息足够可以回答用户。如果信息还不够它也可以继续调用其他工具。所以ReAct 真正形成的是一个反馈循环判断↓行动↓获取结果↓根据结果重新判断↓继续行动或结束这就是 ReAct 最核心的地方。一次 ReAct 到底是怎么跑起来的假设用户问“旧金山现在天气怎么样”Agent 拥有一个 get_weather 工具。概念上它的执行过程可以理解成用户旧金山现在天气怎么样 ↓Agent这个问题需要外部天气信息。 ↓Actionget_weather(San Francisco) ↓Observation18°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, cloudyagent create_agent( modelopenai:gpt-5.5, tools[get_weather], system_promptYou are a helpful assistant.,)result agent.invoke( { messages: [ { role: user, content: Whats 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%免费】
返回列表