1. 背景介绍

1.1 从单模型到多智能体协作

在早期的 LLM 应用中,很多系统采用单模型单任务的方式:一个大型语言模型(如 GPT-4、Claude)接收用户请求,然后直接生成结果。
这种方式的优点是简单,但缺点也明显:

  • 对复杂任务,单模型往往难以兼顾所有环节(例如同时高效检索、专业写作、严格审查)
  • 容易出现“泛化但不精专”的输出
  • 难以动态扩展能力(添加新工具或新领域专家)

于是出现了两种不同的解决思路:

  1. MoE(Mixture of Experts):在一个模型内部,使用多个“专家子网络”,通过路由机制让不同输入走向不同的专家。
  2. Multi-Agent Collaboration(多智能体协作):在系统层面,组织多个具备不同能力的独立智能体(Agent),让它们协作完成任务。

在 LLM 应用场景中,多智能体协作提供了:

  • 灵活的任务分工
  • 动态扩展能力
  • 跨领域知识整合
  • 高质量输出的保障机制

1.2 与 MoE 的对比

Multi-Agent Collaboration 与 MoE 的最大不同在于:

  • MoE 是模型内部的专家路由机制
  • Multi-Agent 是系统层面的专家团队协作
对比维度MoE(专家混合模型)Multi-Agent Collaboration(多智能体协作)
架构层级模型内部结构(通常是单个大模型的一部分)系统层级(多个独立 Agent,可以是不同模型、不同工具)
专家形式神经网络子模块(在训练中学习特定任务)独立的 Agent,每个有自己的 Prompt、工具、上下文
路由机制由 gating network 自动选择专家由 Planner Agent 或调度器根据任务选择执行 Agent
扩展方式需要重新训练或微调才能新增专家可插拔,动态注册新 Agent 或工具即可
通信方式专家之间通过模型内部张量流交互Agent 之间通过标准化消息(JSON、API 调用)交互
优势高效、参数共享、推理成本可控灵活、可跨平台/跨模型、易于集成外部工具
适用场景同类任务的细分优化(如不同语言、不同任务类型)复杂、多步骤、多领域任务(如科研写作、产品设计)

1.3 优势

Multi-Agent Collaboration 更像是把任务交给一个团队

  • 每个成员(Agent)有专长(检索、写作、分析、审查、沟通)
  • 团队协作可以分担任务复杂度
  • 可以随时引入新成员(新工具/新模型)
  • 每个成员可以独立迭代,不影响其他 Agent

在 LLM 应用场景下,这种模式特别适合:

  • 长链任务(多步骤依赖)
  • 跨领域任务(需要不同专业知识)
  • 需要工具调用(如数据库查询、API访问)
  • 结果质量要求高(需要审查和迭代优化)

2. 核心模块

2.1 Planner Agent(任务规划者)

  • 接收用户任务
  • 拆解为子任务
  • 根据能力匹配最优执行 Agent
  • 输出任务依赖图(Task Dependency Graph)

2.2 Agent Registry(智能体注册中心)

  • 存储所有可用 Agent 的元数据:

    • 名称
    • 描述
    • 能力标签(capabilities)
    • 工具列表
    • Prompt 文件路径
    • 版本号
  • 提供能力匹配查询接口
  • 支持动态注册/注销(可插拔)

2.3 Agent Loader(智能体加载器)

  • 从配置文件或数据库读取 Agent 定义
  • 加载 Prompt、工具、参数
  • 实例化 Agent 并注册到 Registry
  • 支持热插拔(运行时增删 Agent)

2.4 Executor Agents(执行智能体)

  • 按任务分配执行具体操作
  • 专注某个领域或技能(如搜索、写作、分析)
  • 可以是:

    • 纯 LLM 角色
    • 基于 MCP 协议的工具
    • 混合型(LLM + 工具调用)

2.5 Reviewer Agent(审查者)

  • 检查结果的逻辑、语言、格式
  • 提出修改建议或直接优化
  • 提高输出可靠性

2.6 Communicator Agent(沟通者)

  • 整合所有结果
  • 格式化输出
  • 与用户交互,收集反馈

3. 核心功能

  1. 任务拆解与分配

    • 将复杂任务拆解为子任务
    • 按能力匹配分配给最优 Agent
  2. 能力暴露与发现

    • 每个 Agent 提供能力描述
    • Planner 可动态发现并调用
  3. 协作通信

    • 统一数据格式(JSON、Protobuf)
    • 支持同步调用、异步消息
  4. 结果整合

    • 合并多 Agent 输出
    • 去重、冲突解决、统一格式
  5. 质量控制

    • 审查 Agent 迭代优化结果
  6. 动态扩展

    • 可插拔设计,支持快速添加新 Agent/工具

4. 工作流程

4.1 串行模式

User → Planner → Researcher → Writer → Reviewer → Communicator → User
  • 每个步骤依赖上一步的结果
  • 适合逐步加工的任务(如科研写作)

4.2 并行模式

User → Planner
Planner → Researcher1, Researcher2(并行)
         ↓
       Writer → Reviewer → Communicator
  • 独立任务可并行
  • 需要结果合并逻辑

4.3 混合模式(Hybrid)

  • 部分任务并行,部分串行
  • 例如:

    • 多个 Researcher 并行检索
    • Writer 串行整合

4.4 迭代模式(Iterative Loop)

  • Agent 间多轮交互优化结果
  • 适合代码生成、复杂推理任务

5. 执行型 Agent 类型

在多智能体协作架构中,执行型 Agent 是负责真正落地执行任务的单元,它们可以按**实现方式来分类。

5.1. Prompt驱动型 Agent

  • 特点:主要依赖大语言模型(LLM),通过精心设计的 Prompt 执行任务
  • 适用场景

    • 文本生成(写作、总结、翻译)
    • 创意任务(广告文案、故事创作)
  • 优点:开发快、灵活性高
  • 缺点:逻辑复杂度受限,结果依赖模型质量
  • 示例

    • Writer Agent
    • Summarizer Agent
    • Translator Agent

5.2. 代码逻辑型 Agent

  • 特点:内部主要是程序逻辑(算法、API调用、数据处理)
  • 适用场景

    • 数据清洗与分析
    • 结构化计算任务
    • 业务流程自动化
  • 优点:可控性强,适合复杂规则或算法
  • 缺点:开发周期长,灵活性稍低
  • 示例

    • DataFetcher Agent
    • Analyst Agent
    • DataVisualizer Agent

5.3. MCP协议型 Agent

  • 特点:通过 MCP 协议暴露能力,主系统通过 MCP Client 调用
  • 适用场景

    • 跨语言/跨平台工具
    • 第三方团队开发的插件型 Agent
    • 云原生部署的微服务型 Agent
  • 优点

    • 完全解耦,语言和平台不限
    • 动态加载方便
  • 缺点

    • 网络调用有延迟
  • 示例

    • Researcher Agent(远程API)
    • ChartGenerator Agent(云端绘图服务)

6. Agents可插拔

Multi-Agent Collaboration 中,执行型 Agent(Executor Agent)是负责真正执行子任务的单元。
但在复杂系统里,执行 Agent 数量可能很多(几十甚至上百个),如果全部写死在代码中:

  • 新增/删除 Agent 需要改主程序代码,重新部署
  • 不同任务场景下无法按需加载,浪费资源
  • Agent 的上下文和参数需求各不相同,维护困难

解决方案:设计一个动态加载机制,让系统可以在运行时加载、卸载和调用 Agent。

6.1. 目标

动态加载执行 Agent 的设计,就是通过一个统一的 Registry + Loader + Dispatcher 架构,让系统在运行时按需加载不同类型的 Agent(Prompt、代码、MCP),并自动适配它们的上下文和参数,实现可扩展、解耦和资源优化的多智能体协作。

  1. 热插拔:运行中加载或卸载 Agent,不影响其他部分
  2. 按需加载:只有任务需要时才加载对应 Agent
  3. 解耦:主系统与 Agent 实现分离,支持不同语言、不同部署方式
  4. 上下文适配:每个 Agent 能声明自己需要的上下文和参数格式

6.2. 核心组件

  1. Agent Registry(注册中心)

    • 存储所有可用 Agent 的元信息
    • 可以是数据库、配置文件、或者服务发现系统
    • 元信息包括:

      {
        "name": "Researcher",
        "description": "Academic paper search",
        "capabilities": ["search", "academic"],
        "context_schema": {
          "query": "string",
          "max_results": "integer"
        },
        "execution_type": "mcp",
        "endpoint": "https://agent-server/research",
        "version": "1.2"
      }
  2. Agent Loader(加载器)

    • 根据 Registry 的信息,在运行时加载 Agent
    • 支持三种加载方式:

      • 本地代码型 Agent:用 importlib(Python)或 require(Node.js)加载模块
      • 远程 MCP Agent:建立 MCP 协议连接
      • Prompt模板型 Agent:读取 Prompt 模板文件,动态替换变量
  3. Dispatcher(调度器)

    • 接收 Planner 分解的子任务
    • 查询 Registry,匹配能力标签和上下文需求
    • 调用 Loader 动态加载 Agent
    • 把任务上下文和参数传入 Agent 执行
    • 收集结果并返回给协作流程

6.3. 动态加载流程

[用户任务] → Planner(任务分解)
→ Dispatcher(匹配能力标签)
→ 查询 Agent Registry
→ Agent Loader(动态加载)
→ 传入上下文/参数
→ Agent 执行任务
→ 返回结果
示例:加载一个 MCP Agent
  1. Registry 记录 Agent 信息

    {
      "name": "ChartGenerator",
      "capabilities": ["visualize", "chart"],
      "context_schema": {
        "dataset": "object",
        "chart_type": "string"
      },
      "execution_type": "mcp",
      "endpoint": "https://charts.example.com/api/generate",
      "version": "1.0"
    }
  2. Dispatcher 根据任务匹配到 ChartGenerator
  3. Loader 建立 MCP Client → 调用 Endpoint
  4. 传入上下文

    {
      "dataset": {...},
      "chart_type": "bar"
    }
  5. Agent 返回结果

    {
      "image_url": "https://charts.example.com/output/123.png"
    }

6.4. 上下文与参数适配

  • 每个 Agent 在 Registry 中声明 context_schema(JSON Schema)
  • Dispatcher 在调用前检查上下文是否满足要求
  • 如果缺少数据,可以:

    • 调用其他 Agent 补充
    • 请求用户提供
  • 参数(params)用于控制执行细节(如语言、响应长度等)

6.5. 优势

  • 可扩展性:新增 Agent 只需在 Registry 注册,不改主系统代码
  • 资源优化:只加载当前任务需要的 Agent
  • 多实现支持:Prompt型、代码型、MCP型都能统一管理
  • 跨团队协作:不同团队可独立开发 Agent,通过 MCP 接入

7. 完整示例

用户提出任务:

“帮我生成一份关于 2024 年亚洲旅游市场的分析报告,并附上数据可视化图表。”
  • 动态加载:Dispatcher 根据 Registry 信息调用 Loader,按需加载 Agent
  • 多类型 Agent:MCP型、代码型、Prompt型混合使用
  • 上下文适配:每个 Agent 的 context_schema 决定调用所需数据
  • Prompt工程:Writer Agent 通过模板+上下文生成高质量报告
  • 完整闭环:从任务拆解 → 执行 → 审查 → 输出,全流程覆盖

7.1. 系统中的角色定义

1.1 Planner(任务规划者)

  • 职责:分析用户任务,拆分为多个子任务
  • 输出:任务分解列表

1.2 Dispatcher(任务调度器)

  • 职责:根据任务能力标签匹配合适的执行型 Agent
  • 输出:Agent调用计划

1.3 执行型 Agent(Executor Agent)

  • 类型:

    1. Researcher Agent(MCP协议型,负责检索数据)
    2. DataVisualizer Agent(代码逻辑型,负责生成图表)
    3. Writer Agent(Prompt驱动型,负责撰写报告)

1.4 Reviewer(审查者)

  • 职责:检查报告是否符合要求(完整性、准确性)

1.5 Communicator(沟通者)

  • 职责:将最终结果以用户可理解的形式输出

7.2. Registry 中的 Agent

[
  {
    "name": "Researcher",
    "capabilities": ["search", "market_data"],
    "context_schema": {
      "region": "string",
      "year": "integer"
    },
    "execution_type": "mcp",
    "endpoint": "https://agent-server/research",
    "version": "1.0"
  },
  {
    "name": "DataVisualizer",
    "capabilities": ["visualize", "chart"],
    "context_schema": {
      "dataset": "object",
      "chart_type": "string"
    },
    "execution_type": "code",
    "entrypoint": "agents/data_visualizer.py",
    "version": "2.0"
  },
  {
    "name": "Writer",
    "capabilities": ["write", "report"],
    "context_schema": {
      "topic": "string",
      "references": "array",
      "charts": "array"
    },
    "execution_type": "prompt",
    "prompt_template": "prompts/writer.txt",
    "version": "1.5"
  }
]

7.3. 完整流程示例

Step 1: 用户任务输入

User → Planner

输入:

{
  "task": "Generate a market analysis report for Asia tourism in 2024 with charts"
}

Step 2: Planner 任务分解

Planner 输出:

[
  {
    "subtask": "Get tourism market data for Asia in 2024",
    "capabilities": ["search", "market_data"]
  },
  {
    "subtask": "Generate chart from dataset",
    "capabilities": ["visualize", "chart"]
  },
  {
    "subtask": "Write market analysis report including charts",
    "capabilities": ["write", "report"]
  }
]

Step 3: Dispatcher 匹配 Agent

Dispatcher 查 Registry → 得到匹配:

[
  {"subtask": "...", "agent": "Researcher"},
  {"subtask": "...", "agent": "DataVisualizer"},
  {"subtask": "...", "agent": "Writer"}
]

Step 4: 动态加载 & 执行

4.1 调用 Researcher Agent(MCP型)
调用:

{
  "region": "Asia",
  "year": 2024
}

返回:

{
  "dataset": [
    {"country": "Japan", "visitors": 3200000},
    {"country": "Thailand", "visitors": 2800000},
    {"country": "Singapore", "visitors": 1500000}
  ]
}

4.2 调用 DataVisualizer Agent(代码型)
输入:

{
  "dataset": [...上一步数据...],
  "chart_type": "bar"
}

返回:

{
  "chart_url": "https://charts.example.com/output/asia-tourism-2024-bar.png"
}

4.3 调用 Writer Agent(Prompt型)
Prompt 模板prompts/writer.txt):

You are an expert market analyst specializing in tourism industry reports.
Task: Write a comprehensive market analysis report.
Topic: {{topic}}
References: {{references}}
Charts: {{charts}}

Instructions:
- Provide an introduction to the market
- Include key statistics and trends
- Interpret the chart data
- Give predictions for the coming year
- Keep the tone professional and concise

注入上下文

{
  "topic": "Asia Tourism Market 2024",
  "references": [
    {"country": "Japan", "visitors": 3200000},
    {"country": "Thailand", "visitors": 2800000},
    {"country": "Singapore", "visitors": 1500000}
  ],
  "charts": ["https://charts.example.com/output/asia-tourism-2024-bar.png"]
}

LLM 输出(摘要):

The Asia tourism market in 2024 shows strong recovery post-pandemic, led by Japan and Thailand...
[完整报告省略]

Step 5: Reviewer 检查

Reviewer 检查:

  • 数据引用是否正确
  • 图表链接是否有效
  • 报告结构是否完整

Step 6: Communicator 输出给用户

最终输出:

{
  "report": "[完整报告文本]",
  "chart": "https://charts.example.com/output/asia-tourism-2024-bar.png"
}

7.4. 流程图

                   ┌───────────────────────────────┐
                   │           User(用户)         │
                   └───────────────┬───────────────┘
                                   │ 任务请求
                                   ▼
                      ┌──────────────────────────┐
                      │       Planner(规划者)   │
                      │ 分解任务为多个子任务       │
                      └───────────────┬──────────┘
                                      │ 子任务列表
                                      ▼
                     ┌──────────────────────────┐
                     │    Dispatcher(调度器)   │
                     │ 匹配能力标签 → 查Registry │
                     └───────┬─────────┬────────┘
                             │         │
                             │         │
         ┌───────────────────┘         └────────────────────┐
         │                                                    │
┌─────────────────────┐                           ┌───────────────────────┐
│ Agent Loader(加载器)│                           │ Agent Registry(注册中心)│
│ 动态加载执行Agent     │<───读取元信息──────────────│ Agent元数据:             │
└───────┬──────────────┘                           │ name、capabilities、     │
        │                                          │ context_schema、         │
        │                                          │ execution_type、endpoint │
        ▼                                          └─────────────────────────┘
┌──────────────────────────┐
│   执行型 Agent(Executor)│
│  多类型:                 │
│  1. Researcher(MCP型)   │
│  2. DataVisualizer(代码型)│
│  3. Writer(Prompt型)    │
└───────┬─────────┬────────┘
        │         │
        │         │
        ▼         ▼
┌─────────────────────┐        ┌────────────────────────────┐
│  数据检索结果dataset │        │  图表URL chart_url          │
└───────────┬─────────┘        └───────────────┬────────────┘
            │                                   │
            └─────────────────┬────────────────┘
                              ▼
                ┌──────────────────────────┐
                │ Writer Agent(Prompt型) │
                │ 生成报告 report           │
                └───────────────┬──────────┘
                                │
                                ▼
                    ┌─────────────────────────┐
                    │ Reviewer(审查者)      │
                    │ 检查完整性、准确性       │
                    └──────────────┬─────────┘
                                   │
                                   ▼
                   ┌────────────────────────────┐
                   │ Communicator(沟通者)      │
                   │ 输出给用户:报告+图表       │
                   └────────────────────────────┘
数据流说明
  1. User → Planner:用户发起任务,Planner 拆分成子任务。
  2. Planner → Dispatcher:Dispatcher 根据能力标签匹配合适的 Agent。
  3. Dispatcher → Agent Loader:Loader 根据 Registry 元信息动态加载 Agent(Prompt型、代码型、MCP型)。
  4. 执行型 Agent

    • Researcher(MCP型):调用远程API获取数据集
    • DataVisualizer(代码型):生成图表并返回 URL
    • Writer(Prompt型):使用 Prompt 模板 + 上下文生成报告
  5. Reviewer:检查结果质量与合规性
  6. Communicator:将报告和图表打包返回用户

8. 和 ReAct 的关系

8.1 层次关系

  • 工具(Tool) 是最底层的能力单元
  • Agent 是上层的能力封装,内部可以调用多个工具
  • Multi-Agent Collaboration 是更高层的编排框架,负责协调多个 Agent
用户任务
   ↓
Multi-Agent Collaboration(编排)
   ↓
多个 Agent(角色)
   ↓
Agent 内部可能使用 ReAct 框架调用工具

换句话说:

ReAct 解决的是一个智能体如何调用工具的问题,
Multi-Agent Collaboration 解决的是多个智能体如何协作的问题。
在多智能体系统中,单个 Agent 内部可以用 ReAct 方式调用工具。

8.2 技术演进关系

可以理解为一种发展的进步

  1. 早期阶段

    • 单模型调用工具(ReAct)
    • 优点:简单直接
    • 缺点:任务复杂时,Prompt变得庞大,工具管理困难
  2. 中期阶段

    • 引入 Agent 概念,一个 Agent 封装一类能力(可能内部用 ReAct)
    • 优点:职责清晰、可扩展
  3. 当前阶段

    • 多 Agent 协作(Multi-Agent Collaboration)
    • 优点:

      • 动态加载不同类型的 Agent(Prompt型、代码型、MCP型)
      • 可跨团队开发
      • 高可维护性和可扩展性

所以:

Multi-Agent Collaboration 是在 ReAct 基础上的架构升级,把工具调用的粒度提升为 Agent 调用,并引入编排、调度、动态加载等能力。

KerryWu
679 声望171 粉丝

保持饥饿