图片

让Java开发者像写Spring Boot一样开发AI应用——第三课

写在前面

前两天的课程,我们学会了创建单个Agent,也理解了ReAct范式如何让Agent具备“思考-行动-观察”的自主推理能力。

但有一个问题始终没有解决:一个Agent真的能搞定所有事吗?

想象一下:让一个人同时做厨师、财务、律师、程序员——他可能每样都会一点,但哪样都不精。单Agent的困境,是一样的。

今天的课,就是要打破这个困境。

多Agent架构,让AI从“单兵作战”进化为“团队协作”。

一、为什么需要多Agent?

单Agent的局限性

前两天的课程中,我们构建的ReactAgent都属于单Agent架构——一个Agent负责处理所有用户请求,完成从理解意图到执行任务的全部流程。

单Agent在以下场景中表现良好:

  • 任务范围明确、边界清晰(如单一领域的问答助手)

  • 工具数量有限(3-5个以内)

  • 上下文长度可控

但一旦任务变复杂,问题就来了:

| 问题

|

说明

工具选择困难

当Agent拥有太多工具时,难以做出正确的工具选择决策

| | 上下文过载 |

上下文或记忆增长过大,单个Agent难以有效跟踪

| | 专业度不足 |

一个Agent很难在所有领域都表现出色

| | 上下文混乱 |

过多的指令会让Agent困惑

| | 可维护性差 |

难以单独优化某个维度的能力

|

多Agent架构的核心价值

多Agent架构将复杂的应用程序分解为多个协同工作的专业化Agent。与依赖单个Agent处理所有步骤不同,多Agent架构允许你将更小、更专注的Agent组合成协调的工作流。

三大核心价值:

① 专业化分工(Specialization)——每个Agent聚焦单一专业领域,只处理自己最擅长的事。比如:一个Agent专门写文章,一个专门审稿,一个专门翻译。

② 并行处理(Parallelism)——多个Agent同时处理不同的子任务,显著减少总执行时间。

③ 容错性(Fault Tolerance)——单个Agent失败不影响整体系统。

💡 单Agent就像让一个人包揽所有工作,多Agent就像组建了一支专业团队——有人负责创意、有人负责财务、有人负责执行,各司其职,协同作战。

二、四种内置多Agent模式

Spring AI Alibaba Agent Framework预置了四种基础多智能体工作流模式:

| 模式

|

类名

|

核心特征

顺序代理

|

SequentialAgent

|

按固定顺序依次执行

| |

并行代理

|

ParallelAgent

|

多个Agent同时处理

| |

路由代理

|

RoutingAgent

|

LLM动态选择最合适的Agent

| |

循环代理

|

LoopAgent

|

迭代执行直到满足条件

|

模式一:SequentialAgent(顺序代理)——流水线模式

核心思想:多个Agent按预定义的顺序依次执行,每个Agent的输出自动成为下一个Agent的输入。

<span leaf="">用户输入 → Agent&nbsp;<span>A</span>&nbsp;→ Agent&nbsp;<span>B</span>&nbsp;→ Agent C → 最终输出</span>

适用场景:

  • 流水线任务(如:查天气→查景点→生成计划)

  • 写作→审稿→润色的内容生产流程

  • 合同审核流程(基础校验→商务审核→法务审核→报告汇总)

代码示例:写文章 + 审稿 + 翻译

<span leaf=""><span>// 第一个Agent:作家</span></span>

关键理解:

  • 框架自动将前一个Agent的outputKey映射到后一个Agent输入模板的变量

  • 所有Agent通过OverAllState共享状态

  • 占位符{input}表示用户原始输入,{outputKey}表示引用其他Agent的输出

💡 课堂强调:SequentialAgent是最基础的多Agent模式,理解它就能理解所有多Agent编排的本质——状态在Agent之间流动。

模式二:ParallelAgent(并行代理)——并发模式

核心思想:多个Agent同时处理相同的输入,然后将结果合并。

<span leaf="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ┌─ Agent&nbsp;<span>A</span>&nbsp;─┐</span>

适用场景:

  • 多角度分析(如:同时从创意、财务、执行三个维度策划方案)

  • 生成不同格式的内容

  • 同时查询多个数据源(如:机票+酒店+景点)

代码示例:多维度方案策划

<span leaf=""><span>// 子Agent1:创意策划师</span></span>

关键理解:

  • ParallelAgent让多个Agent处理相同的输入,结果通过MergeStrategy合并

  • 并行执行可以显著减少总执行时间

  • 可以结合SequentialAgent实现 “并行+串行”的混合协作模式

模式三:RoutingAgent(路由代理)——智能分发模式

核心思想:使用大语言模型(LLM)动态决定将请求路由到哪个子Agent。LLM根据输入内容和子Agent的描述自动选择最合适的Agent。

<span leaf="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ┌─ 作家Agent ─┐</span>

适用场景:

  • 智能客服系统(根据用户意图路由到不同专家)

  • 多功能助手(写作、翻译、编程等不同任务)

  • 需要根据问题类型选择不同处理路径的场景

代码示例:内容路由系统

<span leaf=""><span>// 子Agent1:作家</span></span>

提高路由准确性的关键:

| 原则

|

说明

清晰明确的Agent描述

给每个子Agent编写具体、无歧义的description

| | 明确的职责边界 |

严格划定每个Agent的权责范围

| | 避免能力重叠 |

杜绝多个Agent拥有相同/相似的业务能力

|

💡 强调:RoutingAgent的核心理念是 “让LLM做决策,而不是硬编码if-else” 。子Agent的description是路由决策的关键依据。

模式四:LoopAgent(循环代理)——迭代优化模式

核心思想:重复执行一个Agent,直到满足特定的终止条件。

<span leaf="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;┌─────────────────────┐</span>

适用场景:

  • 内容迭代优化(如:反复修改文章直到质量达标)

  • 逐步完善方案

  • 工具调用失败重试

内置循环策略:

| 策略

|

说明

|

适用场景

COUNT

固定次数迭代

|

执行Agent恰好N次

| | CONDITION |

条件循环

|

持续迭代直到质量阈值达标

| | ARRAY |

数组迭代

|

处理列表中的每个元素

|

代码示例:文章质量迭代优化

<span leaf=""><span>// 被循环执行的Agent - 文章优化器</span></span>

关键理解:

  • LoopAgent专注于迭代单个Agent直到满足条件

  • 循环控制变量在每次迭代时会被替换,不会累积

  • 可以通过LoopStrategy接口自定义循环逻辑

💡 提示:LoopAgent就像一位严格的主编——让AI写文章,不满意就退回去重写,直到满意为止。

三、四种模式对比总结

| 维度

|

Sequential

|

Parallel

|

Routing

|

Loop

执行方式

| 串行 | 并行 | 单选 | 迭代 | |

Agent数量

|

多个

|

多个

|

多个

| 单个 | |

状态传递

|

前→后传递

|

各自独立→合并

|

单选输出

|

迭代累积

| |

核心优势

|

流程清晰

|

性能高效

|

智能分发

|

持续优化

| |

典型场景

|

流水线任务

|

多维度分析

|

智能客服

|

内容迭代

|

模式选择决策树:

<span leaf="">需要多个Agent协作?</span>

四、实战:内容审核系统

系统设计

需求:构建一个“内容审核系统”,根据用户提交的内容类型,自动分发给对应的专业审核Agent。

<span leaf="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;┌─ 文学审核Agent ─┐</span>

核心代码实现

<span leaf=""><span>@Configuration</span></span>

单Agent vs 多Agent Routing对比

| 对比维度

|

单Agent审核

|

多Agent Routing审核

Prompt复杂度

|

一个Prompt覆盖所有类型

|

每个Agent专注一个领域

| |

审核质量

|

通用但不深入

| 专业、精准 | |

可维护性

|

修改影响所有类型

| 修改只影响单个Agent | |

扩展性

|

新增类型需重写Prompt

| 新增一个Agent即可 |

💡 结论:RoutingAgent让系统从“一个万能Agent”进化为 “一群专家Agent各司其职” 。

五、课后挑战

任务:设计一个“旅游规划多Agent系统”的架构图

要求:

  • 至少包含3个专业Agent(如:行程规划师、酒店推荐师、美食顾问、天气顾问等)

  • 明确每个Agent的职责、输入、输出

  • 选择合适的协作模式(Sequential / Parallel / Routing / Loop 或组合)

  • 画出架构图,标注数据流向

验收标准:

  • 架构图清晰展示至少3个Agent及其协作关系

  • 每个Agent有明确的职责描述和输入输出定义

  • 能说明为什么选择该协作模式

  • 能指出如果使用单Agent会有哪些不足

示例参考:

<span leaf="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;┌─ 天气顾问(并行)─┐</span>

六、本日核心收获

  1. 单Agent有天然局限:工具选择困难、上下文过载、专业度不足

  2. 多Agent架构三大价值:专业化分工、并行处理、容错性

  3. 四种内置模式各有所长

  • Sequential:流水线任务,状态依次传递

  • Parallel:并行处理,性能最优

  • Routing:智能分发,LLM做决策

  • Loop:迭代优化,持续改进

  1. 模式可以组合使用:Sequential中嵌套Parallel,实现“串行+并行”混合编排

  2. 底层是Graph引擎:所有Agent编排最终都会被编译为StateGraph执行

📌 本文要点回顾:从单Agent到多Agent,是从“单兵作战”到“团队协作”的进化。Spring AI Alibaba提供的四种内置模式——顺序、并行、路由、循环——覆盖了绝大多数多Agent协作场景。理解这些模式,你就掌握了构建复杂AI应用系统的核心能力。

有任何问题,欢迎在评论区留言交流!


作者:Java老兵搞AI,专注Java生态下的AI应用开发

如果觉得有用,点个「在看」支持一下吧