前言

为什么需要 Agent 架构模式,在传统 LLM 应用中,大模型通常是根据用户输入直接生成答案,这种方式适合简单问答,但在真实业务场景中往往不够用。

可以把 AI Agent 理解为:

Agent = 大脑 + 手脚 + 记忆 + 主见
Agent = LLM + Tools + Memory + Autonomy

其中:

  • 大脑 LLM:负责理解用户意图、推理分析、生成回答。
  • 手脚 Tools:负责调用外部工具、API、数据库、搜索引擎或业务系统。
  • 记忆 Memory:负责保存上下文、历史记录、用户偏好和任务状态。
  • 主见 Autonomy:负责根据目标主动判断下一步该做什么,而不是每一步都等待用户明确指令。

例如用户查询订单、生成报告、排查问题、调用接口、修改代码时,系统不仅要回答问题,还需要:

  • 理解用户意图
  • 拆解任务步骤
  • 调用外部工具或业务接口
  • 根据工具结果继续判断
  • 对最终结果进行检查和修正

因此,Agent 应用通常会引入一些常见架构模式,例如 ReAct、Plan-and-Execute、Reflection 等,用来提升任务执行能力、复杂问题处理能力和结果可靠性。
在这里插入图片描述

1、ReAct

ReAct = Reasoning + Acting,整个流程是:Reason(思考)→ Act(行动)→ Observe(观察),循环直到任务完成。

在这里插入图片描述

1.1、Reason 思考

Reason 指的是大模型在接收到用户输入后,先对任务进行理解和分析,判断用户真正想完成什么目标,以及下一步应该采取什么动作。

在普通的 LLM 对话中,大模型通常是直接根据已有知识生成回答;而在 ReAct 模式中,大模型不会急着给出最终答案,而是会先进行任务拆解。例如,用户问:

我的订单 20260513001 为什么还没发货?

此时LLM不能直接猜测原因,而是应该先判断:

这个问题需要查询订单状态。
我需要调用订单查询工具。

也就是说,Reason 阶段主要解决的是:

用户想做什么
当前信息够不够
是否需要调用工具
应该调用哪个工具
工具调用需要哪些参数

在 Agent 系统中,Reason 阶段非常关键,因为它决定了 Agent 接下来要不要行动,以及如何行动。

1.2、Act 行动

Act 指的是 LLM 根据 Reason 阶段的判断,选择并调用外部工具,工具调用可以是 HTTP API,也可以是数据库查询、RPC 接口、函数调用,或者业务系统中的某个服务能力。例如:

订单查询接口
库存查询接口
物流查询接口
售后工单接口
数据库查询接口
搜索引擎接口
知识库检索接口

也就是说,Agent 并不是只靠大模型本身回答问题,而是可以通过 Tool 获取外部真实数据。例如:

Reason:用户想查询订单为什么没发货,需要先查订单状态
Act:调用订单查询接口,参数为 orderId=20260513001

所以从工程角度看,Act 本质上就是:

LLM 决定调用哪个工具
系统执行工具调用
工具返回结果响应

1.3、Observe 观察

Observe 指的是 Agent 拿到 Tool 的调用结果后,对结果进行观察和分析,判断任务是否已经完成,或者是否还需要继续调用其他工具。例如订单查询接口返回:

{
  "orderId": "20260513001",
  "status": "paid",
  "deliveryStatus": "waiting_stock",
  "stockStatus": "out_of_stock"
}

此时 LLM 会根据这个结果继续判断:

订单已经付款,但因为库存不足暂时无法发货
接下来需要查询补货时间

于是又会进入下一轮循环:

Reason:需要查询库存和补货时间
Act:调用库存接口
Observe:库存为 0,预计 3 天后补货

如果观察结果已经足够回答用户,Agent 就会结束循环,生成最终回复。

例如:

您的订单 20260513001 已付款成功,目前暂未发货的原因是商品库存不足。
系统显示预计 3 天后完成补货,补货后会自动安排发货。
我已经为您创建了售后跟进工单,工单号为 XXXXXXX。

所以 Observe 阶段的核心作用是:

读取工具返回结果
判断结果是否有效
判断任务是否完成
决定是否继续下一轮 Reason → Act → Observe


所以 ReAct 模式本质是一个 Loop 循环,当用户 user 对 LLM 进行输入提示词 input 之后,LLM 大模型先进行 Reasoning 推理思考,判断一下用户具体想要做什么事儿,例如:判断是否需要进行工具调用,如果需要就开始进行 Action 行动,进行 Tool 调用,拿到调用结果后会进行观察 Observe,是否需要带着结果继续向 LLM 大模型进行调用提问,本质是一个循环操作。例如:

用户问题:我的订单 20260513001 为什么还没发货
  ↓
Reason:判断应该先查订单
  ↓
Act:调用订单接口
  ↓
Observe:发现订单已付款,但仓库等库存
  ↓
Reason:判断应该继续查库存
  ↓  
Act:调用库存接口
  ↓
Observe:发现库存为 0,知道补货时间
  ↓
Reason:判断可以创建售后工单
  ↓
Act:创建工单
  ↓
Observe:拿到工单号
  ↓
Final Answer:回复用户

LangChain 框架创建的 Agent 实例默认就采用了 ReAct 范式。所以针对于日常比较简单的搜索、一次性的交互场景,ReAct 模式就比较合适,稍微复杂一点的场景,长一点任务流程,就可以考虑使用 Plan and Execute 模式。

2、Plan-and-Execute

ReAct 是一种循环的思想,Plan and Execute(也称 Planning) 和 ReAct 不一样,ReAct 是边想边做;Planning 是先拆任务,然后逐条执行 Plan,Vibe Coding里面常用的 Plan 模式就是这个思想,适合:长任务、复杂任务、报告生成、项目拆解。例如:

用户:帮我做一个竞品分析报告

Planner:梳理计划

  1. 确定竞品列表
  2. 搜集产品功能
  3. 对比价格
  4. 分析优缺点
  5. 输出报告

Executor:执行
逐步执行每个任务计划

在这里插入图片描述
现在力推的 SDD、TDD 的 Vibe Coding 方式,其实就是 Plan and Execute 模式变种。

3、Reflection

在普通的 LLM 应用中,模型通常是一次性生成答案,生成完成后就直接返回给用户。如果答案中存在逻辑漏洞、格式问题、遗漏信息或者代码错误,系统本身很难主动发现。

而 Reflection 模式会在“生成答案”之后增加一个检查环节,让模型像审稿人一样重新审视自己的输出内容,并判断这个结果是否满足用户需求。如果发现问题,就继续修改,直到结果达到要求后再输出最终答案。所以该模式非常适合写代码、论文,非常重视结果正确性。

所以 Reflection 关注的不是“下一步该调用什么工具”,也不是“任务应该怎么拆解”,而是:

当前生成的结果是否正确
当前生成的结果是否完整
当前生成的结果是否符合用户要求
当前生成的结果是否还需要优化

Reflection 模式通常包含三个核心阶段:

Generate:生成初版结果
Reflect:检查和评价结果
Revise:根据检查结果进行修改

大致流程如下:

生成初版结果

检查结果是否有问题

发现问题

修改优化

再次检查

输出最终结果

在这里插入图片描述

4、最佳实践

对于生产环境来说,我们构建 Agent 应用其实并不是只采用某一种模式进行,而且结合者上述几种和其他模式一起混合使用(并不是绝对的,也可以单一模式使用,要结合场景去判断),从而去构建出更健壮的AI Agent智能体应用。大致流程如下:

用户输入

Planner:理解需求,拆解任务步骤

生成计划 Plan

Executor:执行当前步骤

ReAct:Reason → Act → Observe

得到工具返回结果

Replanner:判断是否继续、跳过、调整计划

如果未完成,继续执行下一步

如果完成,生成初版最终答案

Reflection:检查答案是否准确、完整、可靠

如果有问题,返回修改或重新执行

Final Answer:输出最终答案

在这里插入图片描述

5、总结对比

对比维度ReAct 模式Plan-and-Execute 模式Reflection 模式
中文理解思考-行动-观察模式规划-执行模式反思-修正模式
核心思想边思考、边调用工具、边观察结果先生成整体计划,再按步骤执行先生成结果,再检查问题并优化
执行流程Reason → Act → Observe → 循环 → Final AnswerPlan → Execute → Observe → Replan → Final AnswerGenerate → Reflect → Revise → Final Answer
关注重点下一步该做什么整体任务怎么拆解和执行结果是否正确、完整、可靠
适合任务短链路、动态决策、工具调用类任务多步骤、长流程、目标明确的复杂任务对质量要求高、需要检查和修改的任务
典型场景查订单、查库存、查物流、接口排查、客服问答生成报告、复杂售后处理、项目规划、自动化任务执行代码审查、论文润色、SQL 检查、方案评审、最终答案校验
是否需要工具调用通常需要通常需要,但由执行阶段调用不一定需要,主要用于检查输出质量
是否有整体计划一般没有完整计划,边走边判断有,先规划完整步骤没有任务计划,重点是检查已有结果
是否支持动态调整支持,根据 Observation 决定下一步支持,通过 Replanner 调整计划支持,根据 Reflect 结果修改答案
优点灵活,适合实时决策和工具调用有全局视角,不容易迷失方向能提升答案质量,减少低级错误
缺点复杂任务中可能重复调用工具或跑偏规划成本更高,流程更重增加 LLM 调用次数和响应时间
企业级定位适合作为具体任务执行器适合作为外层任务编排框架适合作为最终质量检查器
一句话总结解决“下一步做什么”解决“整个任务怎么做”解决“做得对不对”
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐