毋献仪 发表于 2026-2-1 15:30:03

Agent设计模式学习(基于langchain4j实现)(11) - PlanAndExecute

上篇学习了ReACT,今天继续学习PlanAndExecute模式

与ReACT模式的关键区别如下:
对比维度ReAct AgentPlan-and-Execute Agent思考模式单步思考-行动循环两阶段分离:先规划后执行执行流程Thought → Action → Observation (循环)Plan → Execute Step 1 → Execute Step 2 → ...规划范围只规划下一步一次性规划完整执行路径LLM调用每次循环都需要LLM规划时一次,执行时可能多次优势:


[*]效率更高:减少重复的"思考"步骤
[*]可预测性:预先知道完整执行路径
[*]易于调试:每个步骤都有明确的状态
[*]适合复杂任务:结构化处理多步骤流程
适用场景:


[*]✅ 数据处理的ETL流程
[*]✅ 自动化工作流
[*]✅ 需要审计的合规任务
[*]✅ 批量处理任务
[*]❌ 探索性任务(路径不确定)
[*]❌ 需要实时交互的对话
 
示例代码:
定义规划器Planner
1 public interface Planner {
2
3   @SystemMessage("""
4            你是一个任务规划专家。请将用户的任务分解为详细的执行步骤。
5
6            输出格式必须是严格的JSON格式:
7            {
8                "plan_name": "任务名称",
9                "steps": [
10                  {
11                        "step_number": 1,
12                        "description": "步骤描述",
13                        "tool": "使用的工具名称",
14                        "parameters": {"参数名": "参数值"}
15                  }
16                ],
17                "expected_output": "预期输出"
18            }
19
20            可用工具列表:
21            1. add - 两数相加
22            2. getWeather - 天气查询
23            3. calculateCircleArea - 计算圆的面积
24            4. getCurrentDateTime - 获取当前时间
25            5. calculateCuboidVolume - 计算长方体体积
26            6. multiply - 两数相乘
27            7. divide - 两数相除
28            8. queryExpressOrder - 查询快递单
29            9. queryRefundProgress - 查询退款进度
30         """)
31   @UserMessage("问:{{request}}")
32   @Agent("基于用户提供的问题生成计划")
33   String createPlan(@V("request") String request);
34 }Planner 注:20-29行硬编码的方式指定需要用到的工具列表,也可以去掉,在运行时,类似ReAct一样,一股脑把sampleTools全扔给Planner调用的LLM,从运行结果来看,一样能跑通,但是使用token量就会大很多。
定义执行器
1 public interface Executor {
2
3   @SystemMessage("""
4             你是一个任务执行器。根据给定的步骤执行任务。
5            
6             每次只执行一个步骤,然后等待下一个指令。
7             执行完成后,报告结果和下一步建议。
8            
9             输出格式:
10             步骤 {n}: [工具名称]
11             输入: {参数}
12             输出: {结果}
13             状态: [成功/失败]
14            
15             如果步骤失败,请说明原因和建议。
16             """)
17   @UserMessage("{{step}}")
18   @Agent("基于用户提供的问题生成计划")
19   String executeStep(@V("step") String step);
20 }Executor定义协调器
1 /**2* @author junmingyang3*/4 public class Coordinator {5   6   private final Planner planner;7   private final Executor executor;8   private final SampleTools tools;9   private final Map context; 101112   public Coordinator(ChatModel model, SampleTools tools) { 1314         this.tools = tools; 15         this.context = new HashMap(); 1617         //创建规划器 18         this.planner = AgenticServices.agentBuilder(Planner.class) 19               .chatModel(model) 20               .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(15)) 21               // 如果明确知道工具的列表,可以显式提供,这里就无需再绑定,以减少token使用 22               //.tools(this.tools) 23               .build(); 2425         //创建执行器 26         this.executor = AgenticServices.agentBuilder(Executor.class) 27               .chatModel(model) 28               .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(15)) 29               .tools(this.tools) 30               .build(); 31   } 323334   public Map executeTask(String task) { 35         System.out.println("\n" + "=".repeat(80)); 36         System.out.println("
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

注思 发表于 2026-2-3 10:01:17

新版吗?好像是停更了吧。

厥轧匠 发表于 2026-2-4 06:02:16

分享、互助 让互联网精神温暖你我

胆饬 发表于 2026-2-5 03:30:19

感谢分享

简千叶 发表于 2026-2-8 01:32:44

鼓励转贴优秀软件安全工具和文档!

扈怀易 发表于 2026-2-8 05:47:35

感谢分享,学习下。

哈妙思 发表于 2026-2-8 13:01:42

不错,里面软件多更新就更好了

赀倦 发表于 2026-2-8 16:26:40

分享、互助 让互联网精神温暖你我

寿爹座 发表于 2026-2-8 21:03:49

谢谢楼主提供!

娄静曼 发表于 2026-2-9 12:05:45

分享、互助 让互联网精神温暖你我

锷稠 发表于 2026-2-9 22:37:44

用心讨论,共获提升!

庾签 发表于 2026-2-11 18:25:51

新版吗?好像是停更了吧。

决任愧 发表于 2026-2-13 11:27:47

感谢分享,学习下。

背竽 发表于 2026-2-13 18:33:54

yyds。多谢分享

少琼 发表于 2026-2-19 23:11:23

收藏一下   不知道什么时候能用到

魄柜 发表于 2026-2-22 05:03:58

感谢分享,下载保存了,貌似很强大

处匈跑 发表于 2026-2-26 12:09:10

这个好,看起来很实用

劳暄美 发表于 2026-3-2 11:21:44

懂技术并乐意极积无私分享的人越来越少。珍惜

厂潺 发表于 2026-3-8 07:23:04

东西不错很实用谢谢分享

坏级尹 发表于 2026-3-11 07:07:35

东西不错很实用谢谢分享
页: [1]
查看完整版本: Agent设计模式学习(基于langchain4j实现)(11) - PlanAndExecute