ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

上篇手写多Agent写了500行?Spring AI Alibaba官方就有,几行搞定

上篇手写多Agent写了500行?Spring AI Alibaba官方就有,几行搞定 上一篇我们手写了一套多Agent协作框架定义AgentRole、写任务分发器、自己起线程池做并行、手写executeWithFeedback做反馈循环前前后后500多行。发出去之后评论区有个同学说得很直接“这不就是自己造了个迷你版Spring AI Alibaba吗官方不是有多Agent支持吗”被他说中了。我们手写那套就是为了让你看懂多Agent是怎么跑起来的——真到项目里没必要自己造轮子。Spring AI Alibaba 1.0 GA 已经把这套协作原语内置了定义角色用ReactAgent串流水线用SequentialAgent并行用ParallelAgent主管调度用Supervisor模式。今天就把上篇那套用SAA重写一遍你看看从500行能瘦到多少。一、先对账我们手写了什么框架替你做了什么上篇手写500行Spring AI AlibabaAgentRole 四个静态角色定义ReactAgent.builder().name().instruction()一个BuilderexecutePipeline顺序流水线SequentialAgent.builder().agents(a,b,c)自己写CompletableFuture线程池并行ParallelAgent.builder()内置合并策略手写executeWithFeedback反馈循环Supervisor主管模式路由回退手动把上一步output塞进下一步contextoutputKey自动在状态里传递自己打日志、记耗时框架内置日志和状态追踪一句话你之前写的调度、并行、上下文传递框架全干了。你真正该自己写的只剩每个角色的Prompt和业务工具。二、用SAA重写需求→开发→测试流水线上篇我们手写了一个软件开发流水线需求分析师→代码生成→测试。用SAA重写整个配置类长这样Configuration public class MultiAgentConfig { // 1. 需求分析Agent一个ReactAgent就是一个角色 Bean public ReactAgent requirementAnalyst(ChatModel chatModel) { return ReactAgent.builder() .name(requirement_analyst) .model(chatModel) .description(需求分析师把业务需求拆成功能点) .instruction( 你是资深需求分析师。把下面需求拆成3-5个功能点每个点一句话说清输入输出。 只做需求分析不写代码。需求{input} ) .outputKey(requirement_doc) // 输出存进状态下一个Agent直接取 .build(); } // 2. 代码生成Agent自动能读到上一步的 requirement_doc Bean public ReactAgent codeGenerator(ChatModel chatModel) { return ReactAgent.builder() .name(code_generator) .model(chatModel) .description(Java开发根据需求写代码) .instruction( 根据下面需求文档生成生产级Java代码含异常处理。 只写代码。需求文档{requirement_doc} ) .outputKey(code) .build(); } // 3. 测试Agent同时能读到需求和代码 Bean public ReactAgent testEngineer(ChatModel chatModel) { return ReactAgent.builder() .name(test_engineer) .model(chatModel) .description(测试工程师写JUnit用例) .instruction( 根据需求和代码写3个JUnit用例覆盖正常和异常。 需求{requirement_doc} 代码{code} ) .outputKey(test_cases) .build(); } // 4. 流水线三个Agent串起来替代上篇手写的 executePipeline Bean public SequentialAgent devPipeline(ReactAgent requirementAnalyst, ReactAgent codeGenerator, ReactAgent testEngineer) { return SequentialAgent.builder() .name(dev_pipeline) .agents(requirementAnalyst, codeGenerator, testEngineer) .build(); } }对外暴露就一行PostMapping(/pipeline) public MapString,Object pipeline(RequestBody MapString,String body) { Object result devPipeline.invoke(Map.of(input, body.get(requirement))); return Map.of(status,success,result, result); }注意那个outputKey——这是框架替你做的最关键的事需求Agent的输出自动存到requirement_doc开发Agent的Prompt里写{requirement_doc}就能直接取到你不用再像上篇那样手动拼context字符串、手动把上一步结果传进下一步。这就是状态在节点间自动流转。三、并行和反馈循环也有现成的上篇我们手写了并行执行executeParallel起线程池和反馈循环executeWithFeedback审查不通过回退重写。SAA里并行把SequentialAgent换成ParallelAgent.builder().agents(a,b,c)几个Agent同时跑同一个输入结果自动合并——你不用再写CompletableFuture.allOf().join()主管模式复杂流程不是固定流水线时用Supervisor Agent做调度者由大模型判断下一步该派哪个角色相当于上篇那个分发器升级成了由模型自主决策比硬编码if-else灵活。四、说句公道话框架不是万能的不能光吹有三个边界你得清楚不然上生产要踩坑你还是得自己写Prompt——instruction那部分角色靠不靠谱全看你Prompt写得行不行框架只是把架子搭好业务工具还是你自己接——查数据库、调内部接口这些还是得做成Tool函数挂给Agent框架不替你写业务版本和成本要盯——多Agent一次跑下来是好几倍Token消耗三个角色各调一次模型上线前算清楚钱框架版本也跟着官方更新别锁死在老里程碑版。所以正确姿势是用SAA当骨架把上篇手写那500行调度代码省掉把精力放在Prompt和工具上。上篇手写那篇不白写——你真懂了调度原理用框架时才知道它在背后帮你干了啥出了问题才查得动。五、简历可以这么写基于 Spring AI AlibabaReactAgent/SequentialAgent实现多Agent协作流水线将需求分析、代码生成、测试用例三个专职Agent串联通过outputKey自动传递上下文替代手写线程池调度约300行代码支持ParallelAgent并行扩展与Supervisor主管路由。领取完整Demo关注图片上水印即Java-AI工程师打出【agents】即可得到三个ReactAgent 一条Sequential流水线 一个接口配好Key直接跑。下期预告多Agent讲完下一篇回到生产避坑Agent上线后Token账单爆炸这5个地方在偷偷烧钱省下来就是纯利润。本文属于「Java AI Agent实战」合集
返回列表