AI工程化设计(五)Agent设计范式(2)Plan-and-Execute
Plan-and-Execute比 ReAct 更“有全局观”的 Agent 设计范式一、介绍1. 什么是 Plan-and-ExecutePlan-and-Execute 是另一类非常重要的 Agent 设计范式核心思想可以概括为一句话先把任务想清楚、拆清楚再按步骤执行。也就是把“规划Plan”和“行动Execute”明确分开。如果说ReAct 更像是“边走边看”那 Plan-and-Execute 更像是“先做作战计划再逐步落地”它解决的不是“每一步怎么做”而是整个任务应该怎么组织才能更稳定地完成。2. 它解决了什么问题在复杂任务中如果一上来就用类似 ReAct 的方式“边想边做”很容易出现一些问题只关注当前一步忽略整体目标局部最优做着做着跑偏重复尝试同样的路径任务结构混乱结果不成体系Plan-and-Execute 的核心价值就在于用“先规划”来约束整个执行过程让任务更有全局一致性。3、为什么它很有价值Plan-and-Execute 在复杂任务中表现更好的原因主要有1. 全局一致性更强不容易做着做着偏题输出结构更稳定。2. 任务拆分清晰每一步都有明确目标方便跟踪和调试。3. 更适合长链路任务尤其是需要多阶段产出的任务报告、项目、流程。4. 更容易插入人工控制可以在关键步骤加入审批、确认。5. 更适合并行化某些步骤可以分配给不同 Agent 或系统同时执行。尤其是在企业场景中这一点非常重要很多任务本质上是写文档跑流程调多个系统需要审计和复盘这些都天然更适合“先规划”。4、它的缺点Plan-and-Execute 也有明显代价1. 计划可能不准确一开始的信息不完整计划容易偏。2. 前期规划增加时延相比直接执行多了一步思考成本。3. 小任务显得过重简单问题不需要完整规划流程。4. 环境变化时容易失效计划如果不更新会变成错误约束。5. 执行层可能过于僵化如果设计不好会出现“按错计划认真执行”的问题。可以总结为一句话它最大的风险不是“没想”而是“想得太早、改得太晚”。5、实践建议如果你要在工程里落地 Plan-and-Execute可以优先注意这几点1. 计划不要过细太细会导致执行僵化失去灵活性。2. 明确每一步的输出否则执行阶段很难判断“是否完成”。3. 允许动态重规划不要把计划当成不可变的真理。4. 高风险步骤加人工确认比如发邮件、改数据、调用外部系统。5. 子任务内部用 ReAct不要让 Execute 变成“死流水线”。二、核心原理1. 两阶段结构Plan-and-Execute 通常分为两个核心阶段Plan规划阶段在这个阶段Agent 会理解任务目标分析约束条件和输入拆分出可执行的步骤明确步骤之间的依赖关系Execute执行阶段在这个阶段Agent 会按计划逐步执行调用工具 / 查询数据 / 生成内容记录中间结果必要时调整计划2. 一个标准流程典型流程可以抽象成Goal → Plan → Step 1 → Step 2 → Step 3 → ... → Final Result而不是Goal → 做一步 → 看结果 → 再决定下一步ReAct不过需要注意一个关键点Plan-and-Execute 并不是“一次规划永不修改”。更准确的理解是以计划为主线的动态执行过程执行过程中如果环境发生变化或者某一步失败是可以回到规划层进行调整的。3. Plan 阶段到底在做什么很多人会把 Plan 简单理解为“列一个 TODO 清单”其实远不止如此。一个好的计划通常会结构化这些信息最终目标是什么成功标准是什么有哪些前置依赖哪些步骤必须串行哪些可以并行哪些步骤风险高需要人工确认每一步的输入和输出是什么重点不在于“步骤多”而在于计划必须可执行、可检查、可调整4. Execute 阶段在做什么执行阶段也不是机械地“照单执行”。一个成熟的执行过程通常包括读取当前步骤选择合适工具执行检查结果是否达标记录状态memory / log决定是否进入下一步必要时回到 Plan 修正这意味着执行层本身也可能包含推理和决策而不是纯流水线。三、两个典型例子1. 写一份市场调研报告用户需求帮我做一份关于 AI Coding Agent 市场格局的调研报告包含竞品、定价、优势、风险和建议。Plan 阶段Agent 可能会先生成一个结构化计划明确研究范围仅 AI Coding Agent收集主要竞品名单收集各产品的功能、价格、定位做横向对比分析总结市场趋势和风险生成最终报告Execute 阶段然后按步骤执行检索竞品名单搜集产品资料官网 / 文档 / 评测整理成结构化数据做对比分析输出报告如果直接用纯 ReAct也能做但很容易漏竞品结构混乱输出像“笔记拼接”而不是完整报告Plan-and-Execute 的优势在于先定义“成品应该长什么样”再去填充内容。2. 修复一个复杂 Bug工程场景用户需求修复订单同步延迟的问题并补上测试。Plan 阶段可能生成这样的步骤复现问题并确认触发条件定位延迟发生环节判断是队列积压、接口超时还是锁竞争设计修复方案修改代码补充测试验证并总结Execute 阶段逐步执行查日志看监控指标阅读代码修改实现运行测试这里有一个非常关键的点每一个子步骤内部其实仍然可能使用 ReAct。四、demoimport os from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI BASE_URL os.getenv( LLM_GATEWAY_BASE_URL, https://llm-gateway.xxx.xxx.xxx/v1, ) API_KEY os.getenv(LLM_GATEWAY_API_KEY, ******) MODEL os.getenv(LLM_MODEL, gpt-5.1) llm ChatOpenAI( modelMODEL, base_urlBASE_URL, api_keydummy, default_headers{X-Api-Key: API_KEY}, temperature0, use_responses_apiFalse, ) plan_prompt PromptTemplate.from_template( 你是一个 Planner。 请把下面的任务拆成 3-5 个清晰步骤只输出计划不要直接完成任务。 任务{task} ) execute_prompt PromptTemplate.from_template( 你是一个 Executor。 请严格根据下面的计划完成任务输出最终结果即可。 任务{task} 计划 {plan} ) def main() - None: user_input 写一份 AI Coding Agent 市场调研报告 plan_resp llm.invoke(plan_prompt.format(taskuser_input)) plan_text (plan_resp.content or ).strip() print( PLAN ) print(plan_text) execute_resp llm.invoke( execute_prompt.format( taskuser_input, planplan_text, ) ) print(\n FINAL RESULT ) print((execute_resp.content or ).strip()) if __name__ __main__: main()输出
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2547164.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!