文章目录

  • 1. 引言:背景与三协议概览
  • 2. MCP(Model Context Protocol)
    • 起源与动因
    • 架构与规范要点
    • 开发实践
  • 3. A2A(Agent-to-Agent Protocol)
    • 起源与动因
    • 架构与规范要点
    • 开发实践
  • 4. AG-UI(Agent-User Interaction Protocol)
    • 起源与动因
    • 架构与规范要点
    • 开发实践
  • 5. 对比与组合使用建议
  • 6. 如何落地

在这里插入图片描述

1. 引言:背景与三协议概览

随着大模型(LLM)从单一问答工具逐步演进到具备自主决策能力的Agent,开发者面临三大痛点:

  • 外部资源集成困难(M×N 适配挑战)
  • 多 Agent 协作通信缺乏统一标准
  • 前端 UI 与后端 Agent 交互混乱多样

为了解决上述问题,业界先后推出了三套开放协议:

  • MCP:模型 ↔ 工具/资源 的统一“USB-C”接口
  • A2A:Agent ↔ Agent 的“网络协议”
  • AG-UI:Agent ↔ 用户界面 的“翻译官”

2. MCP(Model Context Protocol)

在这里插入图片描述

起源与动因

  • M×N 集成难题:不同模型(M)要接入不同工具或数据源(N),往往需要自己实现 M×N 套适配。
  • 解决方案:Anthropic 于 2024 年 11 月开源 MCP,将各种工具/数据源封装成符合协议的 Server,模型端只需一套 Client 即可接入所有资源。

架构与规范要点

在这里插入图片描述

  • 客户端–服务器模式

    • MCP Client:嵌入到 LLM 应用中,负责发起请求。
    • MCP Server:将工具、数据库或 API 封装成轻量服务,暴露统一接口。
  • 协议标准化内容

    • 传输层:JSON-RPC / HTTP / SSE
    • 消息格式:请求/响应、批量处理、工具注解等
    • 安全与授权:API Key、OAuth2 等

开发实践

  1. 编写 MCP Server

    • 使用官方 SDK(Python/JS/Go/Java)或直接按照规范实现 HTTP 接口。
    • 定义工具元数据(名称、输入输出 schema、权限要求)。
  2. 在 LLM 应用中调用

    • 引入 MCP Client,加载各 Server 的“描述文件”(类似 USB-C 的 PD 协商)。
    • 发起工具调用请求,处理返回结果。
  3. 最佳实践

    • 批量模式:合并多次调用减少网络延迟
    • Streamable HTTP:实时返回流式输出
    • 工具注解:丰富命令与参数说明,提高调用准确度

3. A2A(Agent-to-Agent Protocol)

在这里插入图片描述

起源与动因

  • 多 Agent 协作:在复杂业务场景中,往往需要不同智能体互相分工、串联工作。
  • 信息孤岛:缺乏统一协议时,不同厂商或框架的 Agent“各说各话”,难以互通。
  • 发布:Google 在 2025 年 4 月 Cloud Next 大会上开放 A2A,目标打造 AI Agent 的“TCP/IP”。

架构与规范要点

在这里插入图片描述

  • Agent Card:每个 Agent 对外的“名片”,包含名称、版本、端点 URL、可用技能、认证方式。

  • 双向客户端–服务端角色

    • 发起方 Agent 扮演 Client
    • 接收方 Agent 扮演 Server
    • 同一个 Agent 可动态切换角色
  • 任务模型与流程

    1. submitted → 2. working → (可能 input-required)→ 3. completedfailed
    • 支持异步通知、回调、状态查询
  • 交换内容

    • 消息:文本、文件、结构化数据
    • 工件:最终结果对象

开发实践

  1. 实现 A2A Server

    • 准备 Agent Card 文档(JSON 格式),托管在可访问的端点。
    • 实现标准接口:接收任务、查询状态、推送回调。
  2. 调用其他 Agent

    • 发现并下载目标 Agent’s Card
    • 发起 HTTP 请求到其任务接口
    • 处理异步通知或轮询结果
  3. 工具与框架

    • 官方 SDK:Python/JS/Go/Java
    • Demo 项目:配置式开启 A2A 支持

4. AG-UI(Agent-User Interaction Protocol)

在这里插入图片描述

起源与动因

  • UI 适配纷繁:聊天面板、助手插件、Web 应用,各自接口和消息格式不一致,开发成本高,用户体验差。
  • 发布:CopilotKit 团队 2025 年 5 月开源 AG-UI,将前后端交互抽象为事件流。

架构与规范要点

在这里插入图片描述

  • 事件驱动:定义标准事件类型(文本消息、工具调用、状态更新、用户输入等),前后端通过流式通道(WebSocket/SSE)收发事件。

  • 双向协作

    • Agent 发出事件,前端渲染 UI
    • 用户动作产生事件,后端 Agent 响应
  • 灵活传输:不绑定具体协议,保证事件格式一致即可。

开发实践

  1. 接入 SDK

    • Python 或 TS/JS SDK,封装底层事件通道。
    • CopilotKit:快速集成示例,内置常用组件。
  2. 前端构建

    • 订阅事件流,按事件类型渲染消息、控件、进度等。
    • 发送用户操作事件(点击、输入、选择)。
  3. 优化建议

    • 事件分组:将相关事件打包发送,减少频繁交互
    • 重试机制:连接断开时自动重连
    • UI 组件库:统一样式与行为

5. 对比与组合使用建议

协议解决场景典型用法推荐组合
MCP模型接入工具/数据源URL+API Key 嵌入 LLM 应用与 A2A 联动:自动调用工具后再交给其他 Agent
A2A多 Agent 间协作Agent Card + 异步任务流程与 AG-UI 联动:前端触发多 Agent 协作
AG-UIAgent 与用户界面实时、结构化交互事件流通道 + UI 组件同时接入 MCP:用户触发工具调用

6. 如何落地

  1. 评估需求:先确定项目是单模型调用外部资源(MCP)、多 Agent 协作(A2A)还是复杂前端交互(AG-UI)。
  2. 分步实施:建议先引入 MCP,完成资源接入;再逐步拆分多 Agent 逻辑,用 A2A 构建微服务式智能体;最后以 AG-UI 打通人机交互环节。
  3. 选用框架/SDK:优先使用官方 SDK 或成熟开源项目,如 LangGraph、Google ADK、CopilotKit,减少底层实现成本。
  4. 测试与监控:设计完整的端到端测试用例,监控协议调用延迟、消息丢失、错误恢复等指标。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94976.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94976.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/94976.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习DBSCAN密度聚类

引言 在机器学习的聚类任务中,K-means因其简单高效广为人知,但它有一个致命缺陷——假设簇是球形且密度均匀,且需要预先指定簇数。当数据存在任意形状的簇、噪声点或密度差异较大时,K-means的表现往往不尽如人意。这时候&#xff…

RecyclerView 缓存机制

一、四级缓存体系1. Scrap 缓存(临时缓存)位置:mAttachedScrap 和 mChangedScrap作用:存储当前屏幕可见但被标记为移除的 ViewHolder用于局部刷新(如 notifyItemChanged())特点:生命周期短&…

大模型SSE流式输出技术

文章目录背景:为什么需要流式输出SSE 流式输出很多厂商还是小 chunk背景:为什么需要流式输出 大模型的响应通常很长,比如几百甚至几千个 token,如果等模型一次性生成完才返回: 延迟高:用户要等很久才能看…

[Flutter] v3.24 AAPT:错误:未找到资源 android:attr/lStar。

推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战 前提 将 Flutter 升级到 3.24.4 后,构建在我的本地电脑上通过,但Github actions 构建时失败。 Flutt…

go语言标准库学习, fmt标准输出,Time 时间,Flag,Log日志,Strconv

向外输出 fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。 内置输出 不需要引入标准库,方便 package mainfunc main() {print("我是控制台打印,我不换行 可以自己控制换行 \n我是另一行")prin…

ElementUI之表格

文章目录使用ElementUI使用在线引入的方式表格1. 带状态表格row-class-name"Function({row, rowIndex})/String"2. 固定表头(height"string/number"属性)2.1 属性的取值2.2 动态响应式高度使用演示2.3 ​​自定义滚动条样式​​2.4 表头高度定制获取一行信…

K8S 的 Master组件

K8S 的 Master 组件有哪些?每个组件的作用? K8s 大脑的 4 大核心模块,掌控全局! Kubernetes 集群的 Master(主节点) 就像一座 指挥中心,负责整个集群的调度、管理和控制。它由 4 大核心组件组成…

如何 让ubuntu 在root 下安装的docker 在 普通用户下也能用

在 Ubuntu 系统中,如果 Docker 是以 root 用户安装的,普通用户默认无法直接使用 Docker 命令(会报权限错误)。要让普通用户也能使用 Docker,可以按照以下步骤操作:方法 1:将用户加入 docker 用户…

模板方法模式:优雅封装算法骨架

目录 一、模板方法模式 1、结构 2、特性 3、优缺点 3.1、优点 3.2、缺点 4、使用场景 5、实现示例 5.1、抽象类 5.2、实现类 5.3、测试类 一、模板方法模式 模板方法模式(Template Method Pattern)是一种行为设计模式,它在一个方…

韦东山STM32_HAl库入门教程(SPI)学习笔记[09]内容

(1)SPI程序层次一、核心逻辑:“SPI Flash 操作” 是怎么跑起来的?要读写 SPI Flash,需同时理解 硬件连接(怎么接线) 和 软件分层(谁负责发指令、谁负责控制逻辑)&#xf…

线上Linux服务器的优化设置、系统安全与网络安全策略

一、Linux服务器的优化设置 线上Linux的优化配置序号基础优化配置内容说明1最小化安装系统【仅安装需要的,按需安装、不用不装】,必须安装的有基本开发环境、基本网络包、基本应用包。2ssh登录策略优化 Linux服务器上的ssh服务端配置文件是【/et…

基于人眼视觉特性的相关图像增强基础知识介绍

目录 1. 传统的灰度级动态范围优化配置方法 2.基于视觉特性的灰度级动态范围调整优化 1. 传统的灰度级动态范围优化配置方法 传统的灰度级动态范围调整方法主要包括线性动态范围调整及非线性动态 范围调整。线性动态范围调整是最简单的灰度级动态范围调整方法,观察…

Selenium使用超全指南

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快概述selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QT…

Go通道操作全解析:从基础到高并发模式

一、channel类型 Go 语言中的通道(channel)是一种特殊的类型。它类似于传送带或队列,遵循先进先出(FIFO)原则,确保数据收发顺序的一致性。每个通道都是特定类型的导管,因此在声明时必须指定其元素类型。 channel是一种类型, 一种引用类型。 声明通道类型的格式如下:…

Linux网络--1、网络基础

目录 一、网络发展 二、理解分层 2.1OSI七层模型 2.2TCP/IP分层模型 2.3分层的好处 三、认识协议 3.1初步认识 3.2了解指定组织 3.3具体协议理解 3.3.1是什么 3.3.2为什么 3.3.3与OS的关系 3.4总结 四、网络传输流程 4.1局域网网络传输 4.1.1通信过程 4.1.2概念解析 4.2跨网…

前端视角下关于 WebSocket 的简单理解

参考 RFC 6455: The WebSocket Protocol WebSocket 协议基础 协议本质:在单个 TCP 连接上提供全双工通信通道的协议核心优势: 双向实时通信(服务器主动推送)低延迟(相比 HTTP 轮询)高效数据传输&#xff0…

自动化一键部署 LNMP 环境

第一步:准备环境 & 准备脚本文件1. 你在 CentOS 7 的服务器/虚拟机里打开终端,确认你有 root 权限或者能用 sudo。输入下面命令确认你的系统版本:cat /etc/centos-release你应该看到类似:CentOS Linux release 7.9.2009 (Core…

react之React.cloneElement()

react提供的这个方法克隆组件的方法,可能我们在平常的开发中用的很少,主要可能是我们并不知道或者并不了解这个方法。因为我在之前react的children文章中用到过,所以我就进行了一系列的测试,发现真的非常的好用。我们同样使用一些…

学习Java的Day27

今天学习的主要内容是在IntelliJ IDEA开发环境中,通过部署Tomcat服务器并连接MySQL数据库,实现了一个完整的留言板系统。这个项目涵盖了前后端开发的全流程,具体包括以下关键环节:开发环境搭建使用IntelliJ IDEA Ultimate版&#…

【计算机网络 | 第3篇】物理媒介

文章目录物理媒介介绍与物理媒体的分类🥝成本考量引导型传输媒体🍋引导型传输媒体:双绞线🍋‍🟩双绞线类别双绞线的发展历程双绞线的物理限制引导型传输媒体:同轴电缆🍋‍🟩结构组成…