Chapter 3:Spring AI 并行执行模式(ParallelAgent)
Chapter 3:并行执行模式(ParallelAgent)3.1 模式原理什么是并行执行?ParallelAgent 允许多个 Agent 同时处理独立任务,显著提升整体处理吞吐量。与 SequentialAgent 的串行执行不同,ParallelAgent 将可并行的任务分发到多个 Agent,最终汇总结果。┌─────────────┐ │ Aggregator │ │ 结果聚合 │ └──────▲──────┘ │ ┌────────────────────┼────────────────────┐ │ │ │ ┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐ │ Agent A │ │ Agent B │ │ Agent C │ │ 独立任务 │ │ 独立任务 │ │ 独立任务 │ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │ │ │ └────────────────────┼────────────────────┘ │ ┌──────────┴──────────┐ │ Input + Router │ │ 输入分发 │ └─────────────────────┘核心特征特征说明并行性Agent 同时执行,不等待彼此独立性各 Agent 任务相互独立汇总性结果需要聚合才能形成最终输出吞吐量提升总耗时 ≈ 最慢 Agent 的耗时Sequential vs Parallel 对比Sequential 执行(总耗时 = sum of all): Agent A [2s] → Agent B [3s] → Agent C [1s] = 6s Parallel 执行(总耗时 = max of all): Agent A [2s] ─┐ Agent B [3s] ─┼─→ 聚合 = 3s Agent C [1s] ─┘3.2 结果聚合机制Spring AI Alibaba 的聚合实现ParallelAgent 使用ResultAggregator模式汇总结果:publicclassParallelAgentResult{// 各 Agent 的原始输出privateMapString,AssistantMessageagentResults;// 聚合后的最终结果privateStringaggregatedResult;// 聚合方法publicStringaggregate(){// 策略一:拼接returnagentResults.values().stream().map(AssistantMessage::getText).collect(Collectors.joining("\n\n"));// 策略二:LLM 二次处理// return llmAggregator.combine(agentResults);}}聚合策略策略适用场景实现方式拼接结果相互独立直接 JoinLLM 聚合需要语义整合调用 LLM 总结投票多视角评估选择多数意见优先级有权重差异加权汇总3.3 快速入门示例基础配置@ConfigurationpublicclassParallelAgentConfig{@BeanpublicParallelAgentparallelAnalysisAgent(ChatModelchatModel){// 并行执行的分析 AgentReactAgentfinancialAgent=ReactAgent.builder().name("financial_analysis").description("Analyze financial aspects").chatModel(chatModel).systemPrompt("You are a financial analyst...").build();ReactAgentmarketAgent=ReactAgent.builder().name("market_analysis").description("Analyze market aspects").chatModel(chatModel).systemPrompt("You are a market analyst...").build();ReactAgentriskAgent=ReactAgent.builder().name("risk_analysis").description("Analyze risk aspects").chatModel(chatModel).systemPrompt("You are a risk management expert...").build();returnParallelAgent.builder().name("comprehensive_analysis").agents(financialAgent,marketAgent,riskAgent).
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2565019.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!