Skip to content

第 9 章:多智能体编排,顺序、并行、循环不是开会

多智能体不是把几个 Agent 拉进群聊,让它们自由发挥。工程里的多智能体更像流水线、并行任务和质检回路。你真正要关心的是:谁先做、谁一起做、什么时候返工、结果怎么合并。

本章边界

本章只讲三种最常用的编排模式:顺序、并行、循环。更复杂的组织结构、自治协作和跨服务协议先不展开。

1. 生活类比:厨房分工

做一份套餐:

  • 顺序模式:先切菜,再炒菜,再装盘。
  • 并行模式:一个人煮汤,一个人炒菜,一个人准备甜点。
  • 循环模式:厨师做完,主厨试味,不合格就返工。

对应到 Agent:

厨房动作Agent 模式工程含义
先后依赖Sequential后一步依赖前一步输出
分头干活Parallel多个子任务独立执行,最后合并
返工改进Loop执行、评价、不合格再来一轮

2. 最小顺序示例

java
ReactAgent sqlGenerateAgent = ReactAgent.builder()
        .name("sql_generator")
        .model(chatModel)
        .systemPrompt("把自然语言转换成 MySQL SQL,只输出 SQL。")
        .outputKey("sql")
        .includeContents(true)
        .build();

ReactAgent sqlRatingAgent = ReactAgent.builder()
        .name("sql_rater")
        .model(chatModel)
        .systemPrompt("给 SQL 和用户意图的匹配度打 0 到 1 分。")
        .instruction("SQL: {sql}\n用户问题: {input}")
        .outputKey("score")
        .build();

SequentialAgent sqlAgent = SequentialAgent.builder()
        .name("sequential_sql_agent")
        .subAgents(List.of(sqlGenerateAgent, sqlRatingAgent))
        .build();

这段代码背后的关键不是“有两个 Agent”,而是第二个 Agent 要读取第一个 Agent 的输出。sql_generator 先写入 sqlsql_rater 再基于 sql 打分。

3. 三种编排模式

选择之前先问三句话:

  1. 后一步是否依赖前一步?
  2. 子任务能不能独立并行?
  3. 什么时候退出,谁说了算?

如果第三个问题答不出来,千万别急着用循环。没有退出条件的 Loop,就是把算力倒进无底洞。

4. 决策表

模式什么时候用最容易踩的坑
Sequential生成 -> 校验 -> 总结忘记定义中间输出 key
Parallel多专家独立分析同一问题合并策略不清楚
Loop生成 -> 评分 -> 低分重试没有最大轮数和退出条件
Routing先判断该交给哪个专家把确定规则也交给模型猜

多智能体的难点不是“创建更多 Agent”,而是状态协议。每个 Agent 输出什么 key、下游怎么读、冲突怎么合并,都要提前说清楚。

5. 新手容易误解什么

误解一:Agent 越多越聪明。

Agent 越多,协调成本越高。两个职责清晰的 Agent,通常比五个描述模糊的 Agent 更可靠。

误解二:并行就是开线程。

并行还要处理结果合并。没有合并策略,三个专家给你三份报告,最后还是没人能交付结论。

误解三:循环就是无限优化。

循环必须有停止条件、最大次数和失败兜底。工程里没有“永远再试一次”这种浪漫。

6. 本章小结

多智能体编排的学习顺序:

text
SequentialAgent -> ParallelAgent -> LoopAgent -> Routing

先把线性流水线看懂,再看并行聚合,最后看循环优化。下一章进入路由型多智能体:让模型决定任务交给谁。

7. 练习题

  1. 设计一个“生成 SQL -> 执行前审查 -> 输出解释”的顺序 Agent 流程。
  2. 设计一个“三个专家并行评审需求文档”的合并策略。
  3. 给一个 LoopAgent 写退出规则:最大几轮、什么分数算通过、失败怎么兜底。
课后源码索引:想验证实现时再打开
你想验证的结论源码锚点
顺序 SQL 示例examples/multiagent-patterns/pipeline/src/main/java/com/alibaba/cloud/ai/examples/multiagents/pipeline/sequential/SequentialPipelineConfig.java,类 SequentialPipelineConfig,方法 sequentialSqlAgent(...)
循环 SQL 优化示例examples/multiagent-patterns/pipeline/src/main/java/com/alibaba/cloud/ai/examples/multiagents/pipeline/loop/LoopPipelineConfig.java,类 LoopPipelineConfig,方法 loopSqlRefinementAgent(...)
顺序 Agent 如何构建图spring-ai-alibaba-agent-framework/src/main/java/com/alibaba/cloud/ai/graph/agent/flow/agent/SequentialAgent.java,类 SequentialAgent,方法 builder()buildSpecificGraph(...)
并行 Agent 如何合并结果spring-ai-alibaba-agent-framework/src/main/java/com/alibaba/cloud/ai/graph/agent/flow/agent/ParallelAgent.java,类 ParallelAgent,方法 buildSpecificGraph(...)MergeStrategy.merge(...)
循环 Agent 如何设置子 Agent 和退出策略spring-ai-alibaba-agent-framework/src/main/java/com/alibaba/cloud/ai/graph/agent/flow/agent/LoopAgent.java,类 LoopAgent,方法 subAgent(...)loopStrategy(...)buildSpecificGraph(...)
三种图构建策略spring-ai-alibaba-agent-framework/src/main/java/com/alibaba/cloud/ai/graph/agent/flow/strategy/SequentialGraphBuildingStrategy.javaParallelGraphBuildingStrategy.javaLoopGraphBuildingStrategy.java

Built with VitePress. Deployed on Cloudflare Pages.