大模型Agent核心架构,详解ReAct、Plan-and-Execute、Reason-Act-Observe循环21.6

一、前言

AI Agent我们也做了很多详细的应用说明,现在我们要做的AI应用也都围绕自主执行来实践,说一千道一万,其底层核心全都离不开Agent架构。我们在早期学习大模型时,总觉得Agent很神秘,看似是大模型自主干活,实则背后是一套固定的架构在驱动。今天我们重点探讨一下ReAct、Plan-and-Execute、Reason-Act-Observe循环这几个核心概念,搞清它们的区别、适用场景,了解在实际开发中该怎么选型、怎么规避坑点。

其实这些架构模式并不复杂,本质都是为了解决同一个问题:让只会"文本生成"的大模型,变成能思考、能行动、能纠错的自主智能体。普通大模型只能根据单次输入输出文本,没有状态感知、没有行动能力、没有迭代纠错机制。而Agent架构,就是给大模型装上"大脑决策逻辑+行动执行能力+环境反馈感知",让它可以处理复杂、多步骤、有不确定性的真实业务任务。

二、Agent基础认知

1. 什么是AI Agent

AI Agent,即人工智能智能体,简单来说就是具备自主决策、工具调用、环境感知、迭代纠错能力的大模型应用形态。如果把原生大模型比作"只会答题的学生",那Agent就是"会审题、会规划、会查资料、会实操、会纠错复盘的全能执行者"。

原生大模型存在三大致命短板,这也是Agent架构诞生的核心原因:

  • 无实时能力:大模型训练数据存在明确时间截止点,无法获取全网最新数据、企业实时业务数据,回答内容容易滞后、失效。
  • 无行动能力:原生模型仅支持文本生成,无法主动调用工具、执行代码、操作业务系统,只能输出文字,无法落地实操。
  • 无迭代思维:单次输入单次输出,不会根据环境反馈修正结果,极易产生内容幻觉、逻辑断层,复杂问题回答漏洞百出。

而Agent的核心价值,就是通过标准化架构模式,补齐大模型的三大短板,让大模型从"被动生成文本"升级为"主动完成复杂任务"。

2. Agent核心组件

所有Agent架构,无论ReAct还是Plan-and-Execute,底层都离不开五大通用组件,这是理解所有架构模式的基础,缺一不可,各司其职、协同工作:

  • 大模型推理核心(LLM大脑):作为Agent的决策中心,负责理解用户任务、梳理业务逻辑、生成思考内容、判定下一步行动。所有思考、规划、纠错逻辑均由大模型完成,是Agent智力与算力的核心来源。
  • 工具调用模块(行动手脚):包含全网搜索、代码执行、接口调用、文件读写、数据查询等各类工具,是Agent落地任务的核心载体,负责将大模型的抽象思考转化为真实可落地的具体动作。
  • 环境感知模块(信息来源):专门接收工具执行后的反馈结果、外部环境数据、用户补充信息,为模型下一轮思考提供真实事实依据,从根源杜绝模型凭空臆想、编造内容。
  • 记忆存储模块(状态留存):分为短期记忆与长期记忆,全程留存每一轮的思考、行动、观测结果,让Agent具备完整上下文状态感知,不会遗忘历史执行步骤,保障多步骤复杂任务连贯执行。
  • 循环控制模块(流程调度):核心调度单元,负责实时判断任务完成状态、判定是否继续循环迭代、触发终止条件,全程管控整体任务的执行流程,避免程序卡死与无效运行。

3. 核心循环逻辑

所有Agent架构的本质,都是"思考-行动-观测-再思考"的闭环迭代,也就是基础的Reason-Act-Observe循环。这是所有高级Agent模式的底层基石,所有架构都是在这个基础循环上做优化、升级、封装。

基础RAO循环的完整迭代逻辑,严格遵循闭环步骤,层层递进:

  • Reason推理思考:Agent结合原始任务目标、历史记忆数据、当前环境状态,自主分析下一步执行方向,明确需要完成的子任务、是否调用工具、所需参数与执行方案。
  • Act执行行动:根据推理得出的决策结果,调用对应工具、执行具体操作,将模型的思考逻辑落地为真实动作与执行结果。
  • Observe观测反馈:精准采集工具执行结果与环境变化数据,整理为结构化有效信息,为下一轮推理迭代提供核心依据。
  • 循环迭代判定:基于最新观测结果重新启动思考,循环往复,直至任务完成、触发最大步数限制或终止条件。

这个基础循环,彻底解决了大模型"单次生成、无反馈、无迭代"的核心问题,也是所有复杂Agent任务能够稳定落地的核心底层支撑。

三、Reason-Act-Observe基础循环

1. 核心设计思想

Reason-Act-Observe,简称RAO循环,是所有Agent架构的底层最小单元,是最基础、最通用的智能体执行范式。它的设计思想极度贴合人类解决问题的自然逻辑,核心理念清晰易懂。

RAO循环的核心设计初衷与优势亮点:

  • 解决传统模型短板:传统大模型依赖一次性推理,无论任务复杂度高低,都会尝试一步生成结果,容易出现逻辑断裂、幻觉频发、无法适配动态场景等问题。
  • 分步迭代修正偏差:通过拆分复杂任务、分步迭代决策的模式,用真实环境反馈持续修正模型推理,让每一步决策都有事实依据,杜绝凭空生成内容。
  • 轻量化适配性强:无复杂前置规划、无冗余架构封装,主打"边思考、边行动、边修正"的轻量化迭代,能够适配绝大多数简单、中等复杂度的Agent业务任务。

2. 分步执行流程

RAO循环是标准化闭环流程,每一轮循环都严格遵循三步逻辑,层层递进、环环相扣,具体执行细节如下:

  • Reason推理思考(决策层):Agent接收用户原始任务,读取历史记忆中的思考、行动、观测全量记录,结合当前环境状态,完成子任务拆解、工具调用判定、行动方案确定三项核心工作,输出可追溯、可解释的结构化思考日志与行动指令。
  • Act行动执行(落地层):调度系统解析模型输出的行动指令,精准匹配对应工具、校验参数合法性,执行搜索、计算、接口请求等具体操作,完成抽象思考到真实落地的转化。
  • Observe观测反馈(反馈层):采集工具执行完整返回数据、环境状态变化、异常报错信息,将杂乱非结构化的原始数据,清洗整理为模型可快速识别的结构化文本,存入短期记忆备用。

完成三步后,系统自动判断任务状态:若任务目标达成,直接整理结果输出;若未完成,开启新一轮RAO循环,直至任务结束或达到最大迭代步数。

3. 适用场景与优势

RAO基础循环主打轻量化、高灵活、低门槛,适配步骤不确定、场景动态变化、无需前置全局规划的各类任务,拥有清晰的适用场景与核心优势。

典型适用场景

  • 实时信息查询与智能问答交互
  • 简单数据统计、数值计算与结果整理
  • 单维度轻量化工具调用任务
  • 日常智能对话、轻度信息汇总与梳理

核心能力优势

  • 适配动态场景:无需提前预判所有执行步骤,可根据实时工具反馈动态调整决策,完美适配各类不确定业务场景。
  • 大幅降低幻觉:每一轮决策均依托真实工具反馈,彻底摆脱模型固有知识局限,杜绝凭空编造数据与结论。
  • 架构极简易落地:无复杂前置逻辑,开发成本低、调试简单、迭代效率高,新手可快速上手落地。
  • 可解释性极强:每一轮思考、行动、结果均有完整日志留存,问题可追溯、可复盘、可优化。

4. 应用实现难点

作为基础架构,RAO循环看似简单,但实际应用过程中存在多个高频痛点:

  • 循环失控问题:在无强制约束机制的前提下,Agent极易陷入无效循环,重复执行相同工具、重复思考同类问题,无法自主终止任务,会造成服务器资源浪费、程序卡死、响应超时等问题。实际应用必须配置最大迭代步数、重复行为检测、任务完成判定阈值,严格约束循环行为。
  • 观测结果噪声干扰:工具返回的原始数据大多杂乱冗余,包含大量无效信息、空白字符、报错乱码。若直接输入大模型,会严重干扰模型推理逻辑,导致决策偏差、任务出错。需要单独封装观测预处理模块,完成数据清洗、结构化精简、异常内容过滤。
  • 短视决策固有缺陷:RAO仅基于当前单次状态做单步决策,无全局任务规划能力。面对多步骤、长链路复杂任务时,容易出现"局部最优、全局偏差"的问题,仅保证当下步骤合理,却偏离整体任务核心目标,导致最终任务不达标。

5. 示例:RAO基础循环

示例演示了 RAO(Reason-Act-Observe)闭环推理机制:Agent 先推理当前知识状态是否足够(Reason),若不足则调用实时搜索工具获取外部信息(Act),再将工具返回结果纳入知识库作为观测反馈(Observe),驱动下一轮推理判断,最终形成"感知→决策→执行→再感知"的自主迭代循环。

python 复制代码
# RAO 基础循环:Reason-Act-Observe 极简实现
# 模拟:实时查询最新数据并汇总(无前置规划,动态迭代)
# 模拟工具:实时数据查询工具
def search_realtime_data(keyword: str) -> str:
    """模拟实时数据搜索,规避模型知识滞后问题"""
    return f"【实时更新】{keyword}行业最新动态:政策优化、市场需求持续增长、技术迭代加速"

# 模拟大模型推理函数
def llm_reason(task: str, observe_info: str) -> str:
    """模拟模型推理:结合任务与观测结果判断下一步动作"""
    if not observe_info:
        return f"需要调用实时搜索工具,查询【{task}】相关最新信息"
    return "信息充足,可整理结果输出,终止循环"

# RAO 核心闭环循环
def rao_agent_run(task: str, max_loop: int = 3) -> str:
    observe_result = ""  # 初始化观测信息
    for loop in range(max_loop):
        print(f"\n===== RAO 第{loop+1}轮循环 =====")
        
        # 1. Reason 推理:模型根据当前已有信息,判断是继续调用工具还是输出结论
        reason_log = llm_reason(task, observe_result)
        print(f"推理思考:{reason_log}")
        print(f"  [说明] Agent 评估知识状态:{'无可用信息,需搜索' if not observe_result else '已有搜索结果,可终止'}")

        # 2. Act 行动:根据推理结论执行具体动作(调用工具或停止)
        if "调用实时搜索工具" in reason_log:
            act_result = search_realtime_data(task)
            print(f"行动执行:调用 search_realtime_data 工具完成数据检索")
            print(f"  [说明] Agent 按推理决策,向外部环境发起查询")
        else:
            break

        # 3. Observe 观测:将工具返回结果纳入知识状态,作为下一轮推理依据
        observe_result = act_result
        print(f"观测反馈:{observe_result[:40]}...")
        print(f"  [说明] Agent 将搜索结果存入知识状态,形成闭环:信息进 -> 推理 -> 判断是否继续")
    
    # 任务收尾输出结果
    print(f"\n--- RAO 流程说明 ---")
    print("Reason:推理当前知识是否足够,决定下一步动作")
    print("Act   :执行工具获取外部信息,或终止循环输出结果")
    print("Observe:将执行结果纳入知识库,供下一轮推理使用")
    return f"RAO任务完成:{observe_result}"

# 运行测试
if __name__ == "__main__":
    res = rao_agent_run("人工智能行业发展")
    print(f"\n最终结果:{res}")

输出结果:

===== RAO 第1轮循环 =====

推理思考:需要调用实时搜索工具,查询【人工智能行业发展】相关最新信息

说明 Agent 评估知识状态:无可用信息,需搜索

行动执行:调用 search_realtime_data 工具完成数据检索

说明 Agent 按推理决策,向外部环境发起查询

观测反馈:【实时更新】人工智能行业发展行业最新动态:政策优化、市场需求持续增长、技术迭代加...

说明 Agent 将搜索结果存入知识状态,形成闭环:信息进 -> 推理 -> 判断是否继续

===== RAO 第2轮循环 =====

推理思考:信息充足,可整理结果输出,终止循环

说明 Agent 评估知识状态:已有搜索结果,可终止

--- RAO 流程说明 ---

Reason:推理当前知识是否足够,决定下一步动作

Act :执行工具获取外部信息,或终止循环输出结果

Observe:将执行结果纳入知识库,供下一轮推理使用

最终结果:RAO任务完成:【实时更新】人工智能行业发展行业最新动态:政策优化、市场需求持续增长、技术迭代加速

四、ReAct经典交替执行架构

1. 架构核心定义

ReAct,全称Reasoning + Acting,核心定义是推理思考与工具行动严格交替、无缝耦合,通过Thought-Action-Observation固定闭环,实现任务迭代执行。它将大模型的语言推理能力与外部行动能力深度结合,彻底解决了传统大模型"只会思考、不会做事"的痛点,是所有高级Agent架构的基石。

ReAct是目前应用最广泛、最主流的Agent范式。但要清楚ReAct与基础RAO循环,切勿混淆,二者存在明确递进关系:

  • RAO循环是底层原始逻辑,仅定义了思考、行动、观测的基础闭环;
  • ReAct是RAO循环的标准化、工程化升级版本,是对基础循环的规范化封装。

相比于原生RAO循环,ReAct最大的优化在于:固定每一轮迭代的输出格式,强制区分思考过程、行动指令、观测结果,让整个执行流程高度规范化,更适合应用落地与批量开发。

2. 设计思想与逻辑

ReAct的核心设计思想可以总结为八个字:边想边做、以实修正,彻底颠覆了传统CoT思维链的固有短板。传统CoT与ReAct的核心区别:

  • 传统CoT:仅在文本层面完成推理,属于纸上谈兵,推理过程没有任何外部事实支撑,复杂业务场景下极易出现逻辑错误、结论失真。
  • ReAct架构:将模型"内部推理"和"外部行动"深度绑定、循环迭代,思考依托真实反馈,行动依托严谨推理。

其核心逻辑优势体现在两点:

  • 推理不再脱离现实:每一次思考都基于上一轮的真实行动反馈,而非模型固有陈旧知识,从根源大幅降低幻觉产生的概率。
  • 行动不再盲目执行:每一次工具调用都经过模型自主推理、目标判定,具备明确执行逻辑,杜绝无意义、无效的工具调用。

简单来说,ReAct让大模型摆脱了"固有知识的局限",进入"实时交互、动态适配"的工作状态,真正具备了自主解决真实问题的基础能力。

3. 完整执行流程

ReAct拥有标准化的闭环执行流程,每一轮迭代都包含三个核心阶段,全程可追溯、可管控、可优化,完整流程如下:

  • Thought深度推理(决策核心):大模型接收用户任务与历史全量日志,自主完成任务拆解、信息缺口判断、解决方案推演。明确当前缺失信息、所需工具、下一步核心目标,输出完整可解释的推理思路,而非直接输出最终结果,为后续行动提供精准依据。

  • Action工具执行(落地核心):根据Thought阶段的推理结论,生成包含工具名称、入参参数、执行规则的标准化调用指令。系统精准解析指令,完成工具调用、接口请求、代码执行等实操动作,产出真实可信的执行结果。

  • Observation结果回写(迭代核心):捕获工具执行的全部原始结果,清洗冗余、无效、错误信息,结构化整理为模型易识别的文本数据,存入记忆模块,作为下一轮推理迭代的核心依据。

循环判定:系统实时校验任务完成度,若达成目标则终止循环,整合所有步骤日志输出最终结果;若未完成则立即开启下一轮迭代,持续逼近任务目标。

4 适用场景与边界

ReAct作为通用基础架构,适配中等复杂度、步骤灵活、无需强全局规划的绝大多数业务场景,是应用实践最广的Agent范式。

典型适用场景

  • 实时资讯检索、知识问答与智能咨询
  • 企业知识库问答、自动化信息采集与整理
  • 简单办公自动化、流程辅助操作
  • 轻量级数据分析、数据统计与结果汇总
  • 业务故障排查、问题诊断与简单复盘

边界与固有短板

  • ReAct仅支持单步迭代决策,无全局任务拆解、无前置规划能力;
  • 面对长链路、多分支、强依赖、目标复杂的任务,容易出现步骤混乱、子任务遗漏、迭代步数过多、执行效率低下等问题;
  • 复杂项目拆解、多步骤深度数据分析、长流程自动化任务,单纯使用ReAct很难达到预期效果。

5. 应用实现难点

ReAct架构虽然成熟通用,但应用实践中仍存在多个核心难点,直接决定Agent的运行稳定性与业务可用性:

  • 输出格式不稳定:ReAct高度依赖固定格式的Thought、Action输出,但大模型偶尔会输出乱格式、字段缺失、冗余内容,导致后端工具解析失败、整体流程中断。实践时必须配套格式校验、异常重试、容错补全机制,保障输出标准化、流程不中断。
  • 迭代效率参差不齐:简单任务仅需1-2轮迭代即可完成,复杂任务往往需要十几轮迭代,存在算力资源消耗高、接口响应速度慢的问题。需要引入动态步数控制、任务优先级判定、冗余步骤自动裁剪机制,全方位优化执行效率。
  • 复杂任务逻辑断层:单步决策模式缺乏全局视野,模型容易局限于当下子任务,偏离整体核心目标,产生大量无效迭代。需要搭配记忆优化、目标锚定提示词、阶段性复盘机制,持续约束模型决策方向。
  • 工具调用精准度不足:模型容易出现选错工具、参数填写错误、重复调用同一工具、无效调用等问题,导致任务执行失败、数据异常。需要增加工具权限校验、参数预校验、调用结果二次核验机制,提升工具调用准确率。

6. 示例:ReAct架构基础实现

示例演示了 ReAct(Reasoning+Acting)架构的核心模式:每轮先用Thought推理当前状态并决定下一步动作,再由Action执行工具调用查询考勤数据、筛选迟到人员,最后将Observation工具返回结果作为新状态驱动下一轮推理,形成"思考→行动→观察→再思考"的多轮交替闭环。

python 复制代码
# ReAct 架构极简实现
# 模拟:员工考勤数据统计、筛选迟到人员(多轮交替迭代)

# 模拟工具:考勤数据查询、数据筛选工具
def get_attendance_data() -> list:
    """模拟获取月度员工原始考勤数据"""
    return [
        {"name": "张三", "status": "迟到", "times": 2},
        {"name": "李四", "status": "正常", "times": 0},
        {"name": "王五", "status": "迟到", "times": 1},
        {"name": "赵六", "status": "请假", "times": 0}
    ]

def filter_late_staff(raw_data: list) -> list:
    """筛选迟到员工数据"""
    return [item for item in raw_data if item["status"] == "迟到"]

# 模拟ReAct大模型思考逻辑
def llm_react_thought(step: int, task_state: str) -> str:
    """模拟模型阶段性思考"""
    if step == 1:
        return "当前无考勤数据,需要调用工具获取月度原始考勤数据"
    elif step == 2:
        return "原始数据包含正常、请假、迟到人员,需要筛选提纯迟到人员数据"
    return "数据筛选完成,信息完整,可输出最终结果"

# ReAct 核心交替执行流程
def react_agent_run() -> str:
    print("===== ReAct 架构开始执行 =====")

    # 第一轮迭代:获取原始数据
    thought1 = llm_react_thought(1, "初始状态")
    print(f"\n第一轮 Thought:{thought1}")
    print("  [说明] Agent 发现缺少数据,推理出第一步需要调用考勤查询工具")

    action1 = get_attendance_data()
    print(f"第一轮 Action:调用 get_attendance_data 获取原始考勤数据")
    print("  [说明] 按推理决策执行工具调用,从外部环境拉取4条员工记录")

    observe1 = action1
    print(f"第一轮 Observation:{observe1}")
    print("  [说明] 工具返回的原始数据作为观测结果,驱动下一轮推理")

    # 第二轮迭代:筛选处理数据
    thought2 = llm_react_thought(2, observe1)
    print(f"\n第二轮 Thought:{thought2}")
    print("  [说明] 基于上轮观测结果,推理出需进一步筛选迟到人员")

    action2 = filter_late_staff(observe1)
    print(f"第二轮 Action:调用 filter_late_staff 筛选迟到员工")
    print("  [说明] 执行数据筛选,从原始数据中过滤出 status='迟到' 的记录")

    observe2 = action2
    print(f"第二轮 Observation:{observe2}")
    print("  [说明] 筛选结果就绪,信息完整,准备输出")

    # 任务终止,输出结果
    print(f"\n--- ReAct 流程说明 ---")
    print("Thought   : 每步先推理当前状态,决定下一步该做什么")
    print("Action    : 执行具体工具(查询/筛选),将推理转化为行动")
    print("Observation: 工具返回结果作为新状态,触发下一轮 Thought")
    return f"ReAct任务完成:本月迟到员工统计结果{observe2}"

# 运行测试
if __name__ == "__main__":
    res = react_agent_run()
    print(f"\n最终结果:{res}")

输出结果:

===== ReAct 架构开始执行 =====

第一轮 Thought:当前无考勤数据,需要调用工具获取月度原始考勤数据

说明 Agent 发现缺少数据,推理出第一步需要调用考勤查询工具

第一轮 Action:调用 get_attendance_data 获取原始考勤数据

说明 按推理决策执行工具调用,从外部环境拉取4条员工记录

第一轮 Observation:{'name': '张三', 'status': '迟到', 'times': 2}, {'name': '李四', 'status': '正常', 'times': 0}, {'name': '王五', 'status': '迟到', 'times': 1}, {'name': '赵六', 'status': '请假', 'times': 0}

说明 工具返回的原始数据作为观测结果,驱动下一轮推理

第二轮 Thought:原始数据包含正常、请假、迟到人员,需要筛选提纯迟到人员数据

说明 基于上轮观测结果,推理出需进一步筛选迟到人员

第二轮 Action:调用 filter_late_staff 筛选迟到员工

说明 执行数据筛选,从原始数据中过滤出 status='迟到' 的记录

第二轮 Observation:{'name': '张三', 'status': '迟到', 'times': 2}, {'name': '王五', 'status': '迟到', 'times': 1}

说明 筛选结果就绪,信息完整,准备输出

--- ReAct 流程说明 ---

Thought : 每步先推理当前状态,决定下一步该做什么

Action : 执行具体工具(查询/筛选),将推理转化为行动

Observation: 工具返回结果作为新状态,触发下一轮 Thought

最终结果:ReAct任务完成:本月迟到员工统计结果{'name': '张三', 'status': '迟到', 'times': 2}, {'name': '王五', 'status': '迟到', 'times': 1}

五、Plan-and-Execute规划执行分离架构

1. 架构核心定义

Plan-and-Execute,即规划-执行分离,是针对ReAct短板升级的进阶Agent架构,核心解决复杂长链路任务执行效率低、逻辑混乱、容易偏离目标的问题。

两种架构的通俗区别:

  • ReAct:走一步、看一步、想一步,无全局规划,动态迭代;
  • Plan-and-Execute:先全局规划、再分步落地、全程对标目标,先定方案再执行。

该架构的核心定义是:将任务流程拆分为前置全局规划阶段与后置分步执行阶段,实现规划与执行解耦。先由大模型基于完整任务目标,拆解出结构化、有序、完整的任务执行清单,再由执行单元逐一步骤落地,全程对标规划方案,避免决策偏差。

2. 设计思想与优势

Plan-and-Execute的诞生,就是为了弥补ReAct"无全局规划、单步短视"的核心缺陷。它的核心设计思想是全局最优、分步落地、解耦可控,实现复杂任务顶层设计与底层执行的彻底拆分。

两大核心阶段分工明确

  • 规划阶段:专注定全局、定流程、定目标,不做任何实操执行,仅负责任务拆解、步骤梳理、依赖梳理、目标界定,输出完整执行方案。
  • 执行阶段:专注落地每一步规划,严格按照前置方案完成工具调用、迭代反馈,无需重新思考全局逻辑,聚焦子任务落地。

相比于ReAct,该架构的核心优势极其明显:

  • 全局可控无偏差:通过前置完整规划,从根源避免子任务遗漏、执行方向偏离核心目标,保障复杂任务整体达标。
  • 执行效率更高:无需每一轮迭代都重新思考全局逻辑,大幅减少无效迭代,长链路任务执行效率显著提升。
  • 复杂任务适配性强:专门适配长链路、多步骤、强依赖的复杂场景,解决ReAct短视决策的固有短板。
  • 可管控性更强:规划清单可人工审核、修改、优化,提前规避模型决策错误,大幅降低业务风险。

3. 完整执行流程

Plan-and-Execute分为两大核心阶段、完整闭环流程,逻辑清晰、分层明确,具体落地步骤如下:

  • 第一阶段:Plan全局规划(前置一次性完成):大模型接收用户原始复杂任务,结合自身知识储备,完成全局任务拆解。将复杂主任务拆分出若干有序、有依赖、可独立执行的子任务,生成结构化执行清单,明确每一步的执行目标、所需工具、执行顺序、完成标准。本阶段全程不调用任何工具,仅完成顶层逻辑规划,且支持人工校验修正方案。
  • 第二阶段:Execute分步执行(迭代闭环落地):执行引擎读取前置规划清单,按顺序逐个子任务落地执行。每个子任务的执行过程,复用ReAct的Thought-Action-Observation循环机制,单步思考、单步执行、单步反馈,完成当前子任务后再推进下一个步骤,严格对标规划方案。
  • 第三阶段:全局校验与收尾:所有子任务执行完成后,系统整合全量执行结果,对照初始规划目标做全局校验,判定整体任务是否达标。针对未完成、存在偏差、异常的内容,启动针对性补充迭代,最终整合输出完整、精准的任务结果。

4. 适用场景与边界

Plan-and-Execute主打复杂、长链路、多步骤、强逻辑依赖的任务,完美适配ReAct无法胜任的高阶场景,同时存在明确的能力边界。

典型适用场景

  • 复杂数据分析、数据复盘与专业报告生成
  • 多步骤项目拆解、任务拆分与全流程落地
  • 全流程自动化办公、多环节业务闭环处理
  • 学术调研、文献整理、多维度结论验证
  • 复杂逻辑推理、长文本结构化梳理与复盘

能力边界与适配禁忌

  • 简单任务适配低效:针对简单、短步骤、静态任务,前置规划会产生额外算力与时间消耗,属于过度设计,效率不如轻量化ReAct与RAO循环。
  • 强动态场景适配差:前置规划为一次性静态方案,面对实时变化、突发异常、频繁调整的动态场景,固定规划容易僵化,无法快速适配环境变更。

5. 应用实现难点

Plan-and-Execute架构层级更多、逻辑更复杂、流程更长,实践难点远多于ReAct:

  • 前置规划误差不可逆:规划阶段是任务执行的顶层依据,一旦出现任务拆解错误、步骤遗漏、顺序错乱、依赖缺失,后续所有执行步骤都会持续出错。且模型初始规划偏差很难在执行阶段自主修正,直接决定任务成败,需要配套动态调优与人工校验机制。
  • 静态规划适配动态场景差:前置规划为一次性生成的静态方案,但真实业务存在大量动态变化、突发异常、未知问题,固定规划极易与实际执行场景脱节,导致方案失效、任务中断,需要引入实时复盘、动态修正规划的能力。
  • 规划与执行对齐难度大:子任务落地结果经常与规划阶段的预期目标存在偏差,出现进度滞后、结果异常、执行不达标等问题。需要设计专门的对齐校验、偏差修正、补全迭代机制,大幅提升了系统整体复杂度。
  • 资源消耗更高:相比基础架构,多了一层全局规划推理环节,整体Token消耗、算力消耗、接口响应耗时显著增加,对模型性能、服务器资源、接口稳定性要求更高,需要做好资源节流与性能优化。

6. 示例:Plan-and-Execute架构应用

示例演示了 Plan-and-Execute(规划-执行)架构:Agent 先一次性生成全局任务清单(获取销售数据→统计核心指标→生成复盘报告→校验准确),再按规划顺序逐步执行每个子任务,规划与执行完全解耦,适合步骤明确、依赖关系清晰的复杂长链路任务。

python 复制代码
# Plan-and-Execute 架构极简实现
# 模拟:年度销售数据复盘报告生成(先规划、后执行、再校验)

# 模拟工具:销售数据查询、指标统计、报告生成工具
def get_sales_data() -> dict:
    """获取年度销售原始数据"""
    return {"Q1": 120, "Q2": 150, "Q3": 180, "Q4": 210, "unit": "万元"}

def calc_sales_index(data: dict) -> dict:
    """统计核心销售指标"""
    total = sum([data["Q1"], data["Q2"], data["Q3"], data["Q4"]])
    growth = round((data["Q4"] - data["Q1"]) / data["Q1"] * 100, 2)
    return {"年度总销售额": total, "整体增长率": f"{growth}%"}

def generate_report(index_data: dict) -> str:
    """生成结构化复盘报告"""
    return f"""年度销售复盘报告:
1. 年度总销售额:{index_data['年度总销售额']}万元
2. 整体销售增长率:{index_data['整体增长率']}
3. 总结:全年销售额持续稳步增长,业务发展态势良好"""

# 第一步:全局规划(一次性前置完成)
def plan_task() -> list:
    """生成复杂任务全局执行清单"""
    plan_list = [
        "1. 获取年度各季度销售原始数据",
        "2. 统计年度总销售额、增长率等核心指标",
        "3. 基于指标数据生成结构化复盘报告",
        "4. 校验报告完整性与数据准确性"
    ]
    print("【全局规划完成】生成标准化任务清单:")
    for p in plan_list:
        print(p)
    return plan_list

# 第二步:分步执行规划任务
def execute_plan(plan_list: list) -> str:
    print("\n【开始分步执行任务】")
    # 按规划顺序逐一对标执行
    raw_data = get_sales_data()
    print(f"执行完成:{plan_list[0]},原始数据:{raw_data}")

    index_data = calc_sales_index(raw_data)
    print(f"执行完成:{plan_list[1]},核心指标:{index_data}")

    report = generate_report(index_data)
    print(f"执行完成:{plan_list[2]}")

    # 全局校验收尾
    print(f"执行完成:{plan_list[3]},报告数据准确、结构完整")
    return report

# Plan-and-Execute 核心主流程
def plan_execute_agent_run() -> str:
    # 规划与执行解耦
    plan = plan_task()
    final_result = execute_plan(plan)
    return f"\nPlan-and-Execute任务完成\n最终复盘报告:\n{final_result}"

# 运行测试
if __name__ == "__main__":
    res = plan_execute_agent_run()
    print(res)

输出结果:

【全局规划完成】生成标准化任务清单:

  1. 获取年度各季度销售原始数据

  2. 统计年度总销售额、增长率等核心指标

  3. 基于指标数据生成结构化复盘报告

  4. 校验报告完整性与数据准确性

【开始分步执行任务】

执行完成:1. 获取年度各季度销售原始数据,原始数据:{'Q1': 120, 'Q2': 150, 'Q3': 180, 'Q4': 210, 'unit': '万元'}

执行完成:2. 统计年度总销售额、增长率等核心指标,核心指标:{'年度总销售额': 660, '整体增长率': '75.0%'}

执行完成:3. 基于指标数据生成结构化复盘报告

执行完成:4. 校验报告完整性与数据准确性,报告数据准确、结构完整

Plan-and-Execute任务完成

最终复盘报告:

年度销售复盘报告:

  1. 年度总销售额:660万元

  2. 整体销售增长率:75.0%

  3. 总结:全年销售额持续稳步增长,业务发展态势良好

六、架构对比与选型

1. 架构核心差异对比

1.1 架构定位差异

  • Reason-Act-Observe是底层基础循环,为所有Agent的核心内核,无复杂封装;
  • ReAct是标准化基础架构,是RAO循环的工程化封装,适配通用场景;
  • Plan-and-Execute是进阶分层架构,主打复杂任务的规划执行解耦。

1.2 决策模式差异

  • RAO与ReAct均为单步动态决策,走一步优化一步,无前置方案;
  • Plan-and-Execute为全局规划+单步执行,先定全局方案,再分步落地。

1.3 全局视野差异

  • RAO与ReAct无全局规划、存在短视决策缺陷,易偏离目标;
  • Plan-and-Execute具备完整全局视野,从顶层锁定任务目标,精准度更高。

1.4 执行效率差异

  • 简单任务三者效率差异极小;
  • 复杂长链路任务中,Plan-and-Execute迭代更少、效率远高于前两者。

1.5 工程与效果差异

  • 工程复杂度RAO最低、ReAct中等、Plan-and-Execute最高;
  • 幻觉控制与任务准确率,Plan-and-Execute最优,ReAct与RAO次之。

2. 业务场景选型推荐

日常Agent开发落地中,可直接按照以下标准快速选型,精准匹配业务场景,避免架构错配、资源浪费、效果不佳:

  • 优先选用RAO基础循环:适用于超简单单步骤任务、实时动态交互场景、轻量化工具调用、追求极致响应速度、低算力消耗的轻量化业务场景。
  • 优先选用ReAct架构:适用于中等复杂度、步骤不确定、动态性较强、无需全局规划的通用业务,适配绝大多数常规Agent应用,性价比最高、落地成本最低。
  • 优先选用Plan-and-Execute架构:适用于长链路多步骤、复杂逻辑依赖、任务流程固定、对落地精准度和完整性要求极高的高阶复杂业务场景。

七、总结

其实所有Agent架构的迭代演进,本质都是同一个方向:让大模型更像人类思考做事,更适配真实复杂业务场景。三大架构各司其职、层层递进,不存在绝对优劣,只有场景适配的区别:

  • Reason-Act-Observe基础循环:是智能体的核心灵魂,奠定了"思考-行动-反馈-迭代"的智能基础,是所有高阶架构的底层根基,适配轻量化简单任务。
  • ReAct经典架构:是工程落地的通用基石,标准化了循环执行流程,解决了大模型"只会想、不会做"的核心问题,适配绝大多数中等复杂度的常规业务场景。
  • Plan-and-Execute进阶架构:是复杂任务的最优解,通过规划执行分离的设计,补齐了单步决策的短视短板,保障长链路、高复杂任务精准高效落地。

我们做Agent开发,务必要完整了解架构概念,核心是吃透底层循环逻辑、理解架构设计初衷、明晰场景适配边界、掌握工程避坑要点。当下AI Agent已经成为大模型落地的核心趋势,从简单对话到自主智能体,从被动应答到主动执行,架构能力直接决定AI应用的上限。

相关推荐
bloxed7 小时前
大模型应用-进阶核心技能【09:Agent之ReAct模式实战】
大模型应用
eaglewgs2 天前
从软件测试角度聊聊“Prompt / Context / Harness区别”
测试开发·ai·测试·大模型应用·agent应用
minhuan2 天前
DeepAgents深度解析:依托MCP与A2A双协议,构建企业级多智能体复杂业务集群应用21.3
人工智能·大模型应用·deepagents深度解析·多智能体复杂业务集群
minhuan3 天前
LangChain+LangGraph架构拆解:基于复杂AI任务编排与状态管理的大模型应用开发21.4
人工智能·langchain·大模型应用·langgraph·复杂ai任务编排
钛态3 天前
前端安全防线:CSRF 攻击链路与双重 Token 校验的工程实现
前端·vue·react·web
钛态3 天前
AI 组件生成评测:别只看页面能不能渲染
前端·vue·react·web
赵大仁3 天前
Next.js + Vercel AI SDK 实战:30 分钟搭出流式 Chat 页面
前端·ai·实战·react·next.js·vercel
minhuan5 天前
AI后端架构应用:详解大模型高并发场景下缓存策略、消息队列与可靠投递设计方案.209
大模型应用·ai后端架构应用·高并发场景下缓存策略·可靠投递设计方案
小小放舟、5 天前
PaiCLI-Demo:从零实现 ReAct Agent + Tool Call
java·后端·intellij-idea·springboot·agent·react·tool call