AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI 原创

发布于 2025-7-14 09:22
浏览
0收藏

AI 智能体应用在企业实际落地越来越多,一个完整的 AI 智能体应用系统通常包含三个主要角色:用户、AI 智能体和外部工具。AI 智能体架构设计的核心任务之一,就是解决这三个角色之间的沟通问题。

这三个角色的沟通,涉及到:MCP 协议、A2A 协议和 AG-UI 协议。其中,MCP 协议解决 AI  智能体和外部工具的标准化交互问题;A2A 协议解决 AI 智能体间的标准通信问题;AG-UI 解决前端应用(比如:APP)和 AI 智能体间的标准交互的问题。

AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

下文详细剖析之。

一、MCP 协议架构设计

MCP(模型上下文协议)是由 Anthropic 定义的一个开放协议,标准化应用程序如何为大语言模型(LLM)提供上下文。更具体地说,它试图标准化基于 LLM 的应用程序与其他环境集成的协议。

在 AI Agent 系统(Agentic Systems)中,上下文可以通过多种方式提供:

1、外部数据:这是长期记忆的一部分。

2、工具:系统与环境交互的能力。

3、动态提示词:可以作为系统提示词(System Prompt)的一部分注入。

第一、为什么要标准化?

目前,AI Agent 应用的开发流程很混乱:

    1、有许多 AI 智能体框架存在细微差异。虽然看到生态系统蓬勃发展令人鼓舞,但这些细微差异很少能带来足够的价值,但可能会显著改变你的代码编写方式。

    2、与外部数据源的集成通常是临时实现的,并且使用不同的协议,即使在组织内部也是如此。对于不同公司来说,这显然是如此。

    2、工具在代码库中以略微不同的方式定义。如何将工具附加到增强型 LLM 上也是不同的。

目标是提高我们创新 AI 智能体应用的速度、安全性以及将相关数据带入上下文的便利性。

第二、MCP 协议架构设计

AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

    1、MCP Host:使用 LLM 为核心并希望通过 MCP 访问数据的程序。

    2、MCP Client:与 MCP Server 保持1:1连接的客户端。

    3、MCP Server:每个 MCP Server 都通过标准化的模型上下文协议公开特定功能的轻量级程序。

    4、Local Data Sources:你计算机上的文件、数据库和服务,MCP Server 可以安全访问。

    5、Remote Data Sources:通过互联网可用的外部系统(比如:通过 API),MCP Server 可以连接到这些系统。

第三、通过 MCP 分离控制责任

MCP Server 公开三个主要元素(Prompts、Resoures、Tools),这些元素是有意设计的,以帮助实现特定的控制分离。

AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

1、Prompts 提示词被设计为用户控制的。后端的程序员可以公开特定的提示词(适用于与后端服务公开的数据交互),这些提示词可以注入到使用 LLM 的应用程序中,并暴露给给定应用程序的用户。

2、Resoures 资源被设计为应用程序控制的。Resources 资源是任何可以被利用 LLM 构建的应用程序使用的数据(文本或二进制)。应用程序的程序员(通常是 AI 应用开发工程师)负责将这些信息编码到应用程序中。通常,这里没有自动化,LLM 不参与此选择。

3、Tools 工具被设计为大模型控制的。如果我们赋予应用程序如何与环境交互的代理权,我们使用 Tools 工具来实现这一点。MCP Server 公开一个端点,可以列出所有可用 Tools 工具及其描述和所需参数,应用程序可以将此列表传递给 LLM,以便它决定哪些 Tools 工具适用于手头的任务以及如何调用它们。

二、A2A 协议架构设计

第一、为什么会有 A2A?

现在越来越清楚,未来的 AI 智能体系统(Agentic Systems)将是多 AI 智能体的。而且,这些 AI 智能体会在彼此之间远程协作,每个 AI 智能体都可能使用不同的 AI 智能体框架(比如:LangGraph、AutoGen、CrewAI、Agent Development Kit 等)来实现。

这里面有3个固有的问题:

    1、不同框架实现的 AI 智能体系统之间,不支持系统状态的转移和交换。

    2、远程 AI 智能体之间也无法转移系统状态。

    3、离线的 AI 智能体不共享工具、上下文和内存(包括系统状态)。

第二、A2A 解决方案

A2A 是一个开放协议,它为 AI 智能体之间提供了一种标准方式,无论底层开发框架或供应商如何,都可以进行协作。

AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

根据谷歌的官方文档: A2A 协议促进了“客户端”和“远程” AI 智能体之间的通信。

简单来说,“客户端” AI 智能体创建任务并与“远程” AI 智能体沟通,期望执行某些工作或返回数据。

第三、A2A 架构设计

    1、能力发现:所有实现 A2A 的 AI 智能体都通过“Agent Card”公开其能力目录。这有助于其他 AI 智能体发现给定 AI 智能体实现的潜在有用功能。

    2、任务管理:通信协议,使得短期和长期任务变得更容易。它帮助通信中的 AI 智能体保持同步,直到请求的任务完成并返回答案。这很重要,因为有些 AI 智能体可能需要很长时间来执行工作,而且目前没有统一标准如何等待这种情况发生。

    3、协作:AI 智能体可以相互发送消息以传达上下文、回复、工件或用户指令。

    4、用户体验协商:这是一个很有趣的功能。它允许协商数据返回的格式,以符合用户界面的期望(比如:图像、视频、文本等)。

通过 A2A 公开的 AI 智能体的发现是一个重要话题。谷歌建议使用统一的位置来存储组织的“Agent Card”。

比如:

https://<DOMAIN>/<agreed-path>/agent.json

这并不意外,因为谷歌将处于最佳位置,能够索引全球所有可用的 AI 智能体,可能创建一个类似于当前搜索引擎索引的全球 AI 智能体目录。

我喜欢 A2A 强调无需重新发明轮子,并且建立在现有标准之上:

    1、该协议建立在现有、流行的标准之上,包括:HTTP、SSE、JSON-RPC,这意味着它更容易与企业日常使用的现有 IT 堆栈集成。

    2、默认安全 - A2A 旨在支持企业级身份验证和授权,与 OpenAPI 的身份验证方案相当。

三、AG-UI 协议架构设计

第一、为什么需要 AG-UI?

每个 AI 智能体后端都有自己的工具调用、ReAct 样式规划、状态差异和输出格式机制。

如果你使用 LangGraph,前端将实现自定义的 WebSocket 逻辑、杂乱的 JSON 格式和特定于 LangGraph 的 UI 适配器。

但要迁移到 CrewAI/Dify 等,一切都必须进行调整,这样工作量大大增加。

AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

第二、AG-UI 架构设计

AG-UI 使用一个轻量级、事件驱动的协议来连接 AI Agents 和前端应用程序,架构设计如图所示:

AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

  • Front-end:通过 AG-UI 进行通信的应用(聊天或任何启用 AI 应用) ;
  • AI Agent A:前端可以直接连接的 AI Agent,无需通过代理;
  • Secure Proxy:一个中介代理,安全地将前端的请求路由到多个 AI Agents;
  • AI Agent B 和 C:由代理服务管理的 AI Agents。

第三、AG-UI 工作机制

AG-UI 的核心工作机制非常简洁而优雅,如下图所示:


AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

  • 客户端通过 POST 请求启动一次 AI Agent 会话;
  • 随后建立一个 HTTP 流(可通过 SSE/WebSocket 等传输协议)用于实时监听事件;
  • 每条事件都有类型和元信息(Metadata);
  • AI Agent 持续将事件流式推送给 UI;
  • UI 端根据每条事件实时更新界面;
  • 与此同时,UI 也可反向发送事件、上下文信息,供 AI Agent 使用。

AG-UI 不再是单向的信息流,而是一种真正的双向“心跳式”交互机制。AG-UI 就像 REST 是客户端到服务器请求的标准一样,AG-UI 将实时 AI Agent 更新流式传输回 UI 的标准。从技术上讲,AG-UI 使用服务器发送事件(SSE)将结构化 JSON 事件流式传输到前端。

每个事件都有一个显式的有效负载(比如:Python 字典中的 keys):

  • TEXT_MESSAGE_CONTENT 用于令牌流式处理;
  • TOOL_CALL_START 以显示工具执行情况;
  • STATE_DELTA 更新共享状态(代码、数据等);
  • AGENT_HANDOFF 在 AI Agent 之间顺利传递控制权。

并且 AG-UI 带有 TypeScript 和 Python 的 SDK,即插即用适用于任何技术栈,如下图所示:

AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

在上图中,来自 AI Agent 的响应并不特定于任何工具包。这是一个标准化的 AG-UI 响应。

AG-UI 提供了前端 TypeScript 和后端 Python 的 SDK,可无缝接入到现有 AI Agent 代码中,核心模块包括:

  • RunAgentInput:运行 AI Agent 的输入参数;
  • Message:用户助手通信和工具使用;
  • Context:提供给 AI Agent 的上下文信息;
  • Tool:定义 AI Agent 可以调用的函数;
  • State:AI Agent 状态管理。

1、前端接入

npm install @ag-ui/core
npm install @ag-ui/client

2、后端 Python 端接入

from ag_ui.core import TextMessageContentEvent, EventType
from ag_ui.encoder import EventEncoder
# Create an event
event = TextMessageContentEvent(
    type=EventType.TEXT_MESSAGE_CONTENT,
    message_id="msg_123",
    delta="Hello, world!"
)
# Initialize the encoder
encoder = EventEncoder()
# Encode the event
encoded_event = encoder.encode(event)
print(encoded_event)
# Output: data: {"type":"TEXT_MESSAGE_CONTENT","messageId":"msg_123","delta":"Hello, world!"}\n\n

第四、AG-UI 关键特性

  • 🪶 轻量级:设计简单,易于理解与扩展;
  • 🔌 支持多种传输协议:Server-Sent Events(SSE)、WebSocket、Webhook 任你选择;
  • 🔄 真正双向同步:支持实时对话、工具调用、上下文更新等;
  • 🧩 框架无关:LangGraph、CrewAI、Mastra 等框架均可无缝对接;
  • 🛡️ 宽松的 Schema 匹配策略:低耦合、高兼容,降低开发门槛;
  • ⚙️ 即插即用:开源协议,前端(比如:React/Vue)快速集成无门槛。

第五、AG-UI、A2A、MCP 协议对比

AG-UI 明确且专门针对 AI 智能体-用户交互层。它不与诸如 A2A(AI Agent 到 AI Agent 协议)和 MCP(模型上下文协议)等协议竞争。

比如:同一个 AI 智能体可能通过 A2A 与另一个 AI 智能体通信,同时通过 AG-UI 与用户通信,同时调用由 MCP Server 提供的工具。

这些协议在 AI 智能体生态系统中起到互补的作用:

  • AG-UI:处理人在循环中的交互和流式 UI 更新;
  • A2A:促进 AI 智能体到 AI 智能体之间的通信和协作;
  • MCP:在不同模型之间标准化工具调用和上下文处理。

四、AI 智能体协议架构设计总结

AI 智能体协议三部曲的对比如下:


AI 智能体架构中的协议设计三部曲:MCP → A2A → AG-UI-AI.x社区

AI 智能体架构设计中的这三个协议共同构成了 AI 智能体应用系统架构设计的基础设施。它们让 AI 智能体能够“长出手脚”(通过 MCP 实现操作能力)、拥有协作伙伴(通过 A2A 实现 AI 智能体之间的协作),并且能够通过 AG-UI 与用户直接交互,实现落地应用。

这三个协议推动了 AI 智能体应用系统从单一 AI 智能体向多 AI 智能体 的进化,不仅提升了底层能力,还优化了上层的用户体验。同时,它们的开放性和兼容性也为更多 AI 创新应用和跨领域协作提供了可能。


本文转载自​玄姐聊AGI​  作者:玄姐

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
相关推荐