多智能体协议框架综述
探索现代多智能体协议:MCP、ACP和A2A
概述
这个仓库提供了对现代多智能体协议的全面综述,重点关注:
- 模型上下文协议(MCP)
- 代理通信协议(ACP)
- 代理到代理(A2A)协议
目标是分析它们在不同多智能体系统中的架构、用例以及性能。
为什么?
- 多智能体系统在人工智能应用中越来越普遍,需要稳健的协议来实现有效的通信和协调。
- 理解这些协议对于开发可扩展且高效的多智能体系统至关重要。
- 互操作性(即不同代理和系统能够无缝发现能力、交换上下文信息并协调行动的能力)对于模块化、可重用且具有韧性的多代理工作流至关重要。
- 标准化协议降低了开发成本,提高了安全性,并促进了跨平台协作。
______________________________________________________________________
协议(或规程)
1. MCP(最小成本采购/管理控制点/多用途指挥车等,具体含义需根据上下文确定)
- 用于将人工智能应用连接到外部系统的开源标准。
- 一个用于安全上下文摄入和结构化工具调用的JSON-RPC客户端-服务器接口。
- MCP简化了大型语言模型(LLM)与外部数据源和工具的集成过程。
- MCP通过提供一个通用的、不依赖于特定模型的接口,使AI系统能够访问并与各种资源进行交互,从而解决了碎片化和定制化集成所带来的挑战。
- 使用MCP,像Claude或ChatGPT这样的AI应用可以连接到
- 数据来源 (例如,本地文件、数据库) - 工具 (例如:搜索引擎、计算器) - 工作流程 (例如,专门的提示)——使他们能够获取关键信息并完成任务。
建筑
- MCP遵循客户端-服务器架构
- 参与者:
- MCP主机一个人工智能应用(例如,Claude、ChatGPT或您自定义的应用程序) - MCP服务器外部系统(例如,数据库、搜索引擎、工具) - MCP客户端MCP主机中的一个组件,负责管理与MCP服务器的通信。
- MCP 主机:
- 作为……的 发起者;倡议者 在MCP生态系统中的互动 - 负责管理与一个或多个MCP服务器的连接,并根据协议规范协调通信工作流 - 客户端初始化会话,请求并处理四种核心基本元素:资源(Resources)、工具(Tools)、提示(Prompts)和采样(Sampling),并处理与服务器端事件相关的异步通知。
- MCP 服务器:
- 作为数据、服务和交互模板的提供者,它使客户端能够利用这些资源来丰富基于大型语言模型(LLM)的工作流程。 - 它暴露并管理 - 上下文资源 - 通过工具执行外部操作 - 定义可重用的提示以实现一致的交互模式 - 通过采样方式分配文本生成任务。
- 核心组件:
- 资源结构化数据对象,如文档、数据库记录,为大型语言模型(LLM)提供上下文信息。它们为LLM提供定制化的、特定任务的输入,并支持上下文感知的补全功能。 - 工具大型语言模型(LLM)可以调用的外部功能或服务,以执行特定任务,如网络搜索、计算或数据检索。这有助于与第三方系统实现无缝集成,并简化访问流程 真实世界数据和操作。 - 提示由服务器定义但由最终用户通过客户端界面选择的用户控制模板。这些可重用的提示有助于保持一致性、减少冗余,并支持可重复的交互模式。 - 采样服务器控制,并允许MCP服务器将生成大型语言模型(LLM)补全的任务委托给客户端。这支持复杂的代理工作流程,并实现了对模型生成过程的细粒度监督。
2. ACP(非洲、加勒比和太平洋国家集团)
- ACP是一种通用的代理通信协议,它使用RESTful HTTP接口来支持MIME类型的消息(包括多部分消息)以及同步和异步交互。
- 这种基于REST的通信模型支持轻量级、运行时无关的代理调用,使ACP非常适合可扩展的系统集成。
- ACP(假设为某系统或协议的缩写)包括结构化的会话管理、消息路由,以及一个与基于角色的访问控制(RBAC)和去中心化身份(DID)系统相集成的灵活认证模型。
- 它兼容各种代理框架和部署模式,从轻量级的无状态工具到长期运行的有状态服务均可支持。
- ACP还通过运行时API、离线打包和基于清单的元数据来支持代理发现
建筑学
- 基于HTTP的模块化系统,旨在促进客户端与代理之间的交互。
- 主要成分:
- ACP 客户端: 通过提交符合ACP规范的请求来发起通信。支持使用有序的消息部分来构建消息,支持基于会话的交互以实现多轮工作流,并且支持同步和流式执行模式。错误响应遵循统一结构,并且支持标准的HTTP认证方法,如Bearer令牌、基本认证和JWT - ACP 服务器: 它作为一个中间件组件,将外部的HTTP请求转换为内部代理执行。服务器默认为无状态,因此与负载均衡器和如Kubernetes等编排平台兼容。通过TLS实现安全通信,并通过基于OpenTelemetry的追踪和指标支持可观察性。 - ACP特工: 使用基于装饰器的配置定义了执行组件。代理处理由有序消息部分组成的结构化请求,并生成符合ACP消息格式的响应。它们支持无状态和会话感知操作,包括交互式用例所需的等待/恢复等功能。
3. A2A(注:A2A通常表示“A to A”,在不同上下文中可能有不同的含义,如“A到A的转换”、“A2A协议”等,具体含义需根据上下文确定。此处仅作直译。)
- 实现跨平台、跨供应商和跨环境的AI代理之间安全、结构化且可互操作的协作。
- A2A旨在通过使用基于能力的表示方式(即Agent Cards)来支持点对点的代理交互。Agent Cards描述了代理能够执行的操作以及如何安全地调用这些操作。
- A2A支持通过HTTP和服务器发送事件(SSE)实现异步、事件驱动的通信,使其适用于分布式、可扩展的代理生态系统。
建筑学
- 代理间(Agent-to-Agent,简称A2A)架构促进了不同代理系统之间的通信与协作,以完成任务。
- 主要角色:
- 用户发起任务或请求,通常无需理解或直接与底层代理系统进行交互。 - 客户端代理接收到这个请求后,分析其意图,并通过检查其代理卡上公布的功能来识别一个合适的远程代理(服务器)。 - 服务器(远程)代理另一个提供服务、数据或功能给客户端代理的自主实体。客户端代理会调用远程代理来执行任务,协调消息交换并检索结果(这些结果被称为“工件”),然后将结果返回给用户。
______________________________________________________________________
- “用户”交互模型:
- 直接终端用户:通过聊天或语音与客户端代理互动,提交任务并立即查看结果。 - 间接终端用户:依赖于更高级别的产品(如仪表盘、编排工具),这些产品会默默将他们的请求委托给A2A代理。 - 作为用户系统的或服务:后端组件自主调用A2A(应用到应用)以执行持续性任务,如监控或数据转换。 - 代理作为用户:高级代理将任务分配给下游代理,实现分层工作流程。 - *总结:A2A对“用户”是谁或是什么保持中立态度;其首要任务是在所有这些场景中确保客户端与远程代理之间的一致交互。*
- “客户端代理”流程:
1. 代理发现——收集并评估描述远程代理技能、输入输出规格、认证需求的代理卡片;为用户请求选择最佳的远程代理。 1. 任务启动——构建一个包含用户意图、元数据和格式化输入的结构化任务对象;通过符合协议的消息将其发送出去。 1. 信息与工件交换——保持双向对话活跃,发送修改内容,接收工件及阶段性状态更新。 1. 会话上下文维护——跟踪标识符,以便在长时间或有状态的交互中,保持所有内容在一个工作流下集中管理。 1. 错误处理——解释远程故障,重试,切换到另一个代理,或在需要时通知用户。 1. 结果展示——将返回的工件塑造成用户可用的输出,并在周围的应用/用户界面中呈现出来。 1. 异步通道(可选)——通过服务器发送事件(SSE)流式传输进度,或在平台支持时订阅推送通知。 *角色——客户端代理负责协调执行、转换数据并搭建通信桥梁,将用户意图转化为协调一致的A2A(应用到应用)交互。*
- 远程代理
- 执行由客户端代理委托任务的服务终端。 - 它提供一个或多个技能,这些技能代表了它能够执行的独立操作,范围从简单的数据检索到涉及外部API或数据库的复杂计算或协调工作。 - 为了使这些功能能够被发现,远程代理会发布一张代理卡片——这是一份结构化的元数据文档,其中包含了可用技能列表、使用说明、输入/输出格式、支持的协议以及认证要求。 - 远程代理还必须管理其内部的资源使用情况,确保在任务执行过程中公平分配计算、内存、网络和存储资源 - 它负责执行安全和访问控制机制,如验证客户端身份、确保消息完整性,以及根据访问策略或令牌范围授权访问特定功能。
- 核心组件:
- 代理卡: 一种自我描述和发现机制。它是一个采用JSON格式的文档,公开声明代理的元数据,包括其名称、版本、描述、支持的技能以及认证要求。客户端代理依赖于代理卡片来发现和评估能够满足特定任务标准的远程代理。 - 技能: 表示代理所提供的可执行能力。每项技能都通过名称、目的、预期输入参数和输出格式来描述。技能通过任务来调用,并封装了代理提供的核心功能。 - 任务: 它指定了要执行的技能,以及输入参数和上下文元数据。任务由客户端代理发布,并由远程代理处理,支持异步或同步协作。通过将意图和调用结构化为标准化格式,任务使得A2A(Agent-to-Agent)代理能够在不同系统之间实现互操作。 - 消息: 作为智能体之间主要的通信渠道,这些渠道封装了数据交换和协调活动,如任务提交、中间状态更新或成果交付。 - 文物/遗迹: 远程代理(Remote Agents)针对任务所生成的输出或结果。工件(Artifacts)可以有多种形式,包括结构化数据(JSON、XML)、二进制文件(图像、文档)或简单的文本消息。工件会被返回给客户端代理(Client Agents),以便进行进一步处理或展示给最终用户。
______________________________________________________________________
4. 对比分析:能力、特性、开发、认证与安全
| 方面 | MCP(最小成本路径) | ACP(自适应巡航控制路径) | A2A(点对点) | |
|---|---|---|---|---|
| 主要能力/角色 | 上下文/工具访问、数据集成、资源调用、类型化数据交换 | 消息传递、任务交接、多模态有效载荷、代理协调 | 点对点委托、能力协商、发现、跨代理工作流 | |
| 特点/优势 | 标准化工具访问(API、函数)、类型化结构化数据、JSON-RPC、上下文连续性 | REST接口、异步/流式处理、多模态消息、代理“卡片”抽象 | 基于能力的代理卡片、对等消息传递、发现、跨厂商扩展 | |
| 开发便捷性/工具支持 | 相对简单(客户端+服务器模型),有可用的SDK(例如,MCP服务器/客户端框架) | 更加复杂(多个代理、消息路由、流处理),但仍设计为简单的REST API | 更高复杂性:协商、发现、信任,可能涉及动态拓扑 | |
| 认证/身份/授权模型 根据上述信息,以下是原文内容的翻译: | ||||
| **每个MCP服务器根据客户端控制权限(哪些工具/数据可被访问);使用API密钥、令牌、访问控制 | ACP代理通过REST通信,因此您可以叠加标准的HTTP认证(OAuth、令牌、双向TLS)以及代理身份/证书。 | 需要对等身份验证、委托令牌、基于能力的访问控制;更复杂的信任/身份管理 | ** | |
| 安全/威胁/缓解措施 ** | 提示注入、工具滥用、数据泄露;身份碎片化(身份边界模糊) | 重放攻击、消息篡改、窃听(使用TLS)、路由错误;载荷格式错误、跨代理冒充 | 恶意代理插入、能力滥用、Sybil攻击、信任锚定、安全发现 | ** |
| 权衡取舍/限制条件 ** | 不是一个完整的代理通信层;代理间能力有限 | 增加了消息传递开销、路由复杂性和延迟 | 对等协议、信任、版本控制和发现过程的复杂性,以及开销较大 | ** |
何时使用 / 在堆栈中的理想角色
- *| 基础层:连接智能体与数据/工具世界(在智能体边界内) | 域/集群内部的智能体间消息传递 | 跨域、异构、对等级的“开放”智能体生态系统 |*
