近期关注AI行业动态的人士应该能观察到一个趋势,基础模型训练领域正日益呈现出寡头垄断的特征,而AI应用创新的前景和空间依然开阔,令人兴奋的AI应用层出不穷。一个完整的AI应用系统中常常包括三个主要角色:用户、AI Agent、外部工具,AI交互系统的核心之一是解决这三个角色之间的通信问题。
本文针对Agent框架的三个主流协议进行介绍,包括MCP协议——解决AI Agent和外部工具交互问题;A2A协议——解决Agent间通信问题;AG-UI协议——解决AI Agent与前端应用之间的交互标准化问题。随着AI应用的蓬勃发展,AI相关的规范和标准如协议开始出现在大众眼前,本文主要介绍其产生背景、实现思路、在AI应用中实践。
Agent 应用协议栈来源:https://github.com/ag-ui-protocol/ag-ui
MCP全称是Model Context Protocol(模型上下文协议),由Claude母公司Anthropic于24年11月开源发布,以下是MCP开源项目近期的Star数增长趋势,可以看到自今年3月以来,MCP迎来了井喷式的发展和关注量。今年3月27日,OpenAI宣布在Agent SDK中支持MCP,4月4日,谷歌宣布在Gemini的官方API文档中添加MCP的使用范例,海外三大AI巨头已经全部投入MCP怀抱。
MCP Github Star History来源:https://star-history.com
MCP协议的出现离不开Function Calling的使用,2023年6月,OpenAI 在 GPT-4-0613 和 GPT-3.5-turbo-0613 模型中首次引入Function Calling功能,赋予Agent执行具体任务的能力。通过Function Calling,模型能够根据上下文理解并执行特性函数调用,比如搜索知识库、搜索天气地理等实时信息、执行数学计算等。之后,谷歌、Anthropic也陆续推出模型的Function Calling能力。但是不同的模型的厂商在Function Calling的能力上的接口、格式、细节上存在诸多不兼容,举例如下:
这些细节差异导致开发者需要针对不同模型做适配函数声明、参数传递、响应解析等环节,极大增加了AI开发者对于多模型集成的复杂度。因此,MCP作为一个通用协议被提出,旨为模型提供一个标准化的方式来管理和利用上下文,并提供统一的协议与外部世界(工具、服务、数据)进行交互。以这张经典的示例图为比如,使用MCP如同电脑插入USB-C接口后,简化了各种外部设备的适配。AI模型通过MCP可以轻松调用各种数据源和工具。
MCP 架构示例图来源:Norah Sakal on X https://x.com/norahsakal/status/1898183864570593663
值得注意的是,支持 MCP的模型通常需要支持 Function Calling,但Function Calling不是唯一实现方式。理论上,只要模型能理解和生成结构化的调用协议,比如 JSON-RPC、gRPC、RESTful API等,就可以实现 MCP能力。Function Calling是最主流、最推荐的实现 MCP 的方式。
开发者想要快速体验一下MCP服务仅需三个步骤:
MCP Server 配置
完成上述配置后,在Cursor中选择Agent模式,即可通过自然语言进行本地文件操作。对于和文件系统相关的query,Agent自动调用filesystem的MCP Server工具,过程中会询问用户授权操作,调用MCP Server Tool如 create_directory、write_file、search_files等:
MCP 操作效果
除此之外,还有大量可用的MCP Server服务,热门的比如 Git、Playwright、Times,国内各个互联网产品也推出了自己的MCP Server,比如支付宝、高德地图、阿里云无影AgentBay、12306等。以无影AgentBay为例,公测期间申请服务Apikey并按照官网指导进行MCP Server配置后,即可通过自然语言操作云电脑,其覆盖 Linux、Windows、Android、浏览器等镜像环境。
AgentBay MCP Server使用示例
随着MCP生态的快速发展,也衍生出MCP的“集散地”如 mcp.so 和 smithery.ai,目前已发布了数千个MCP Server。MCP 让Agent中对外部世界的工具“即插即用”,大量减少重复造轮子的工作,AI应用开发者可以使用开源的MCP Server或者定义自己的MCP Server,提高接入工具的效率。
25年3月,在MCP出圈的同时,谷歌也推出了MCP的“补充”:A2A(Agent2Agent)协议。虽然A2A和MCP都是通过开放和标准化的方式,解决AI系统中不同单元的集成和交互问题,但是A2A和MCP的目标和作用域有本质区别。MCP解决的是Agent和外部工具/数据的集成,是Agent的“家务事”;而A2A致力于促进独立Agent间的通信,帮助不同生态系统的Agent沟通和协作。
Agentic Application 示例来源:https://a2aprotocol.ai/
举个例子,我的微信朋友圈中有个业务广泛的“黄牛总代”,这个黄牛合作了各领域的“黄牛”,比如演唱会和赛事抢票、医院热门号、灵隐寺月饼代排等,他们使用专用手段,例如内部渠道、脚本、人肉排队等方式解决用户需求。各领域黄牛就是Agent,MCP是将这些Agent与它们的结构化工具(例如抢票脚本)连接起来的协议。而A2A是用户或者黄牛总代Agent与黄牛Agent合作的协议,例如“我要一张周杰伦演唱会的门票”。基于A2A协议,Agent间可以进行双向沟通,不断优化计划,例如“我要6月23日门票”、“江浙沪地域任何价位都可以接受”,最终实现目标。
A2A作为一个开放协议,主要考虑Agent间通信在用户、企业交互上的主要问题挑战,官方介绍其主要功能特性如下:
A2A 协议示例来源:https://a2aprotocol.ai/
A2A中包含三个核心者:User,存在于协议中,主要的作用是用于认证&授权;Client Agent,任务发起者;Server Agent,任务的执行者。Client和Server之间通信是以任务的粒度进行,每个Agent既可以是Client,也可以是Server。A2A的典型工作流程如下:
A2A 典型工作流
值得关注的是,多Agent系统(Multi-Agent System, MAS)是Agent系统的发展趋势,因为它更适用于解决复杂问题求解、分布式任务、模拟社会系统等问题,在多Agent系统中,每个Agent 专注单一领域,工具少于10个,团队协作需推理支持否则成功率低(目前成功率<50%)。以股票分析团队为例,需要一个Agent专注分析股票数据,另一个Agent提供股票操作建议。
但是,2025年MAS系统仍不成熟,业内对于单Agent还是多Agent仍存在大量争论,MAS系统的设计和协调机制复杂度高,行为难以预测和控制,目前更适合研究而非生产,所以A2A协议没有像MCP协议快速发展和普及。
AG-UI(Agent-User Interaction Protocol,智能体用户交互协议)是2025年5月由 CopilotKit 团队发起并开源的协议,旨在解决AI Agent与前端应用之间的交互标准化问题,提供一个轻量级、事件驱动的开放协议,实现AI Agent与用户界面的实时双向通信。AG-UI 协议的出现主要是为了解决智能体与前端应用之间的交互以下标准化问题,其工作流如下:
AG-UI 工作流示例图来源:https://webflow.copilotkit.ai
在AG-UI 协议中最核心的部分在于事件的定义:
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。