14.2 多智能体协作与编排

多智能体(Agent)系统是 AI 应用的重要发展方向,通过让多个专业化智能体(Agent)分工协作,可以解决单一智能体(Agent)难以处理的复杂任务。本节深入探讨多智能体(Agent)架构设计、协作模式和提示词策略。

14.2.1 为什么需要多智能体

单一智能体(Agent)面临的挑战:

挑战
单智能体(Agent)局限
多智能体(Agent)优势

能力边界

需要全能型提示词

专业化分工

上下文限制

所有信息挤在一个窗口

各自维护相关上下文

复杂任务

难以处理多步骤流程

流水线式处理

可维护性

巨型提示词难以调试

模块化易于优化

14.2.2 多智能体架构模式

1. 层级式架构

spinner

图 14-3:层级式多智能体(Agent)架构

特点

  • 中央编排智能体(Agent)负责任务分解和结果整合

  • 子智能体(Agent)专注各自领域

  • 通信清晰,便于调试

编排智能体(Agent)提示词示例

2. 对话式协作

多个智能体(Agent)通过对话讨论得出结论:

spinner

图 14-4:对话式协作模式

应用场景

  • 需要多角度分析的决策问题

  • 代码审查(一方写代码,一方审查)

  • 创意评估(提出方案 vs 挑战方案)

3. 流水线模式

任务在多个智能体(Agent)间顺序传递:

示例:内容创作流水线

4. 并行协作模式

多个智能体(Agent)同时处理不同子任务:

spinner

图 14-5:并行协作模式

5. 蜂群模式

不同于层级式架构,蜂群模式是一种去中心化的协作方式:

spinner

特点

  • 去中心化:没有指挥官,智能体(Agent)之间平等交互。

  • 自我组织:通过简单的个体交互涌现出复杂的群体行为。

  • 高鲁棒性:单个智能体(Agent)的失败不会导致系统瘫痪。

应用场景

  • 下一代游戏 NPC 生态

  • 大规模社会模拟

  • 开放结局的创意写作及头脑风暴

14.2.3 主流多智能体框架

LangGraph

LangGraph 使用图结构表示智能体(Agent)工作流:

CrewAI

CrewAI 采用“团队”隐喻组织多个智能体(Agent):

AutoGen

Microsoft 的 AutoGen 支持灵活的多智能体(Agent)对话:

14.2.4 智能体间通信设计

A2A Protocol

Google 提出的 A2A 协议标准化了智能体(Agent)间通信:

状态共享策略

spinner

图 14-6:智能体(Agent)状态共享机制

14.2.5 实战协作模式

生产级多智能体(Agent)系统通常采用以下两种通信模式:

模式一:任务委托(通过通信实现隔离)

这是经典的主-子智能体(Agent)设置,核心思想是:主智能体(Agent)发任务,子智能体(Agent)交结果,中间过程免打扰

spinner

特点

  • 子智能体(Agent)的上下文完全独立,从零开始

  • 适用于“过程不重要,只关心结果”的任务

  • 例如:代码搜索、数据查询、格式转换

从主智能体(Agent)视角,它只是调用了一个函数,但背后实际上是另一个拥有独立工作流的子智能体(Agent)在执行。这种模式也被称为 “智能体(Agent)即工具”

模式二:信息同步(通过共享上下文实现协作)

对于高度依赖历史信息的复杂任务,子智能体(Agent)需要继承完整的上下文:

适用场景

  • 深度研究报告(需要综合大量中间结果)

  • 跨步骤的分析任务

  • 需要上下文连贯性的创作任务

警告: 共享上下文模式成本较高:每个子智能体(Agent)启动时都需要 Prefill 大量输入,且无法复用主智能体(Agent)的 KV 缓存。应根据任务性质灵活选择。

智能体化的 MapReduce

当需要从多个并行子智能体(Agent)收集结果时,关键挑战是如何获得结构一致的输出:

解决方案三要素

  1. 共享沙箱:所有智能体(Agent)共享同一个文件系统,信息传递只需传递文件路径

  2. 输出 Schema:主智能体(Agent)预先定义结构化的输出模式

  3. 约束解码:强制子智能体(Agent)的输出严格符合 Schema

这种设计的核心思路是:使用结构化输出作为“契约”,保证信息在智能体(Agent)间完整、一致地传递

14.2.6 多智能体提示词设计原则

1. 明确角色边界

2. 定义交接协议

3. 错误处理机制

延伸思考

  1. 多智能体(Agent)协作和“一个智能体(Agent)+ 多工具”相比,优势在哪里?什么程度的复杂性才值得引入多智能体(Agent)架构?

  2. 当两个智能体(Agent)对同一问题给出矛盾的建议时,系统应该如何仲裁?你会如何在编排层面解决这个问题?

最后更新于