A2A与MCP:面向智能体系统的互补协议

A2A ❤️ MCP

在AI智能体开发领域,出现了两种关键类型的协议来促进互操作性:一种是连接智能体与工具和资源的协议,另一种是支持智能体间协作的协议。Agent2Agent (A2A)协议和Model Context Protocol (MCP)分别满足这两种相关但不同的需求。

简而言之:智能体应用需要同时使用A2A和MCP。我们推荐使用MCP处理工具交互,使用A2A处理智能体间通信。

为什么需要不同的协议?

这种区分源于智能体交互对象的本质差异:

  • 工具与资源

    • 通常是具有明确定义、结构化输入输出的基础组件
    • 执行特定、通常是无状态的功能(如计算器、数据库查询API、天气查询服务)
    • 行为通常可预测且事务性
    • 交互通常是单一请求-响应周期
  • 智能体

    • 是更自主的系统,能够推理、规划、使用多种工具
    • 可以在较长时间内保持状态,参与复杂的多轮对话以完成新颖或演化的任务
    • 行为可能具有涌现性,比简单工具更不可预测
    • 交互通常涉及持续的任务、上下文共享和协商

智能体应用需要同时利用这两种能力:智能体使用工具来收集信息和执行操作,同时与其他智能体协作以解决更广泛、更复杂的目标。

模型上下文协议(MCP)

  • 重点:标准化AI模型和智能体如何连接和交互工具、API、数据源和其他外部资源
  • 机制:定义结构化方式来描述工具能力(类似于大语言模型中的函数调用)、传递输入和接收结构化输出
  • 用例
    • 使LLM能够调用外部API(如获取当前股票价格)
    • 允许智能体使用特定参数查询数据库
    • 将智能体连接到一组预定义函数或服务
  • 生态系统:MCP旨在创建一个生态系统,让工具提供商可以轻松将其服务暴露给各种AI模型和智能体框架,智能体开发者可以标准化地使用这些工具

Agent2Agent协议(A2A)

  • 重点:标准化独立、通常不透明的AI智能体之间作为对等体进行通信和协作
  • 机制:提供应用层协议使智能体能够:
    • 通过Agent Card发现彼此的高级技能和能力
    • 协商交互模式(文本、文件、结构化数据)
    • 管理共享的、有状态的、可能长时间运行的任务
    • 交换会话上下文、指令和复杂的多部分结果
  • 用例
    • 客户服务智能体将复杂账单查询委托给专门的账单智能体,同时保持客户交互的上下文
    • 旅行规划智能体协调独立的航班、酒店和活动预订智能体,管理多阶段预订流程
    • 智能体为持续演变的协作项目交换信息和状态更新
  • 与工具交互的关键区别:A2A允许比简单工具调用更动态、有状态和潜在多模态的交互。使用A2A的智能体是作为智能体(或代表用户)进行通信,而仅仅是调用离散函数

A2A与MCP如何互补

A2A和MCP并不互斥,它们高度互补,解决了智能体系统不同层次的交互需求。

展示A2A和MCP协同工作的图示。用户通过A2A与智能体A交互。智能体A通过A2A与智能体B交互。智能体B使用MCP与工具1和工具2交互

一个智能体应用可能使用A2A与其他智能体通信,而每个智能体内部使用MCP与其特定工具和资源交互

示例场景:汽车修理店

考虑一个由自主AI"机械师"智能体运营的汽车修理店,这些智能体使用专用工具(如车辆千斤顶、万用表和套筒扳手)来诊断和修复问题。工作人员经常需要诊断和修复他们以前从未见过的问题。维修过程可能涉及与客户的广泛对话、研究和与零件供应商的合作。

  1. 客户交互(用户通过A2A与智能体交互)

    • 客户(或其主要助手智能体)使用A2A与"店铺经理"智能体通信:"我的车发出咔嗒声"
    • 店铺经理智能体使用A2A进行多轮诊断对话:"能发送一段噪音的视频吗?","我看到有液体泄漏,这种情况持续多久了?"
  2. 内部工具使用(智能体通过MCP与工具交互)

    • 由店铺经理分配任务的机械师智能体需要使用MCP与其专用工具交互:
      • 对"车辆诊断扫描仪"工具的MCP调用:scan_vehicle_for_error_codes(vehicle_id='XYZ123')
      • 对"维修手册数据库"工具的MCP调用:get_repair_procedure(error_code='P0300', vehicle_make='Toyota', vehicle_model='Camry')
      • 对"平台升降机"工具的MCP调用:raise_platform(height_meters=2)
  3. 供应商交互(智能体通过A2A交互)

    • 机械师智能体确定需要特定零件,使用A2A与"零件供应商"智能体通信:"你们有2018款丰田凯美瑞的零件#12345库存吗?"
    • 同样符合A2A标准的零件供应商智能体响应,可能导致订单产生

在这个例子中:

  • A2A促进客户与店铺之间,以及店铺智能体与外部供应商智能体之间的高级别、对话式和任务导向的交互
  • MCP使机械师智能体能够使用其特定的结构化工具执行诊断和维修功能

将A2A智能体表示为MCP资源

可以设想,A2A服务器(远程智能体)也可以将其部分技能作为MCP兼容资源公开,特别是当这些技能定义明确且可以以更像工具的无状态方式调用时。在这种情况下,另一个智能体可能通过MCP风格的工具描述(可能源自其Agent Card)"发现"这个A2A智能体的特定技能。

然而,A2A的主要优势在于它支持更灵活、有状态和协作的交互,超越了典型的工具调用。A2A是关于智能体合作完成任务,而MCP更多是关于智能体使用能力。

通过同时利用A2A进行智能体间协作和MCP进行工具集成,开发者可以构建更强大、灵活和可互操作的AI系统。