首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

为什么 A2A 和 MCP 缺一不可?

  • 25-04-18 18:01
  • 2201
  • 12039
juejin.cn

嘿,大家好,我是老码小张。没错,就是那个没事儿就喜欢扒拉技术底层,琢磨怎么用代码改变世界(至少是改变点啥)的技术人。最近 AI Agent 这波浪潮真是汹涌澎湃,各种酷炫的应用层出不穷。但光鲜亮丽的背后,咱们技术人更关心的是:这些聪明的 Agent 们到底是怎么凑在一起干活的?它们怎么和外部工具、数据、甚至我们用户进行交互?

今天,我就想和大家聊聊这个话题,特别是两个正在崭露头角的关键协议:A2A (Agent-to-Agent) 和 MCP (Model Context Protocol)。别看名字挺唬人,我会尽量用大白话把它们是干嘛的、为啥重要、以及它们俩怎么“相爱相杀”又“缺一不可”讲清楚。

痛点:AI Agent 的“鸡同鸭讲”时代?

想象一下,我们开发了一个牛逼的 Agentic 应用,比如一个能自动帮你规划旅行、预订机票酒店、还能处理突发状况的智能助手。这个助手(我们称之为主 Agent)需要调用各种“工具”:

  • 查天气的 API
  • 订机票的平台接口
  • 翻译服务
  • 地图服务

同时,它可能还需要和其他“专业 Agent”协作:

  • 一个专门负责处理签证问题的 Agent
  • 一个本地美食推荐 Agent

如果每个工具、每个 Agent 都有自己的一套“方言”(接口规范、数据格式),那我们的主 Agent 就得学 N 种语言,适配 N 套逻辑。这复杂度,想想都头大!开发效率低不说,整个生态也碎片化,难以形成合力。

这就是标准化协议的价值所在: 统一“语言”,让不同的组件能够顺畅地对话和协作。而在 Agentic 应用这个场景下,我们发现有两种关键的交互模式,需要不同的协议来支撑。

MCP:让 Agent 学会使用“工具”的普通话

MCP,全称 Model Context Protocol,你可以把它理解为 Agent 和工具之间沟通的“普通话”。

啥是工具(Tools)?

在 Agent 的世界里,“工具”通常指那些功能相对单一、输入输出结构化、行为可预测的组件。比如:

  • 调用一个数学计算函数
  • 查询数据库里的特定信息
  • 执行一个 API 调用(比如上面说的查天气)

这些操作通常模式固定:给它明确的指令(输入),它返回明确的结果(输出)。

MCP 干了啥?

MCP 的目标就是标准化这个“Agent 调用工具”的过程。它提供了一种通用的方式,让 LLM(大语言模型,通常是 Agent 的“大脑”)或者 Agent 本身,能够理解并使用这些工具。

大家可能对“Function Calling”这个概念更熟悉。很多大模型(像 OpenAI 的 GPT 系列)都支持 Function Calling,允许你在调用模型时定义一些外部函数(工具),模型能判断何时需要调用哪个函数,并生成符合要求的参数。

MCP 正在做的,就是把这种“Function Calling”的能力标准化、通用化。 这意味着:

  1. 跨模型/框架兼容: 无论你用哪个大模型,或者哪个 Agent 框架(如 LangChain, LlamaIndex 等),调用工具的方式都趋于一致。
  2. 工具生态繁荣: 工具提供者(比如天气 API 服务商)只需要遵循 MCP 标准提供接口,就能被各种 Agent 应用方便地集成。
  3. 开发复杂度降低: 开发者不用再为对接五花八门的工具接口而头疼,可以更专注于 Agent 的核心逻辑。

举个例子(伪代码):

想象一下,Agent 想调用一个“计算器”工具来算 2+2。通过 MCP,这个交互可能看起来像这样(简化示意):

json
代码解读
复制代码
// Agent 发送给 MCP 兼容的工具执行器的请求 { "protocol": "MCP/1.0", "tool_id": "calculator_v1", "operation": "add", "parameters": { "operand1": 2, "operand2": 2 } } // 工具执行后返回给 Agent 的结果 { "protocol": "MCP/1.0", "request_id": "...", // 对应请求的 ID "status": "success", "result": { "value": 4 } }

看,输入输出都很结构化,一目了然。MCP 就是要统一这套交流范式。我们预测,随着越来越多的平台和框架拥抱 MCP,这种标准化的工具调用将成为 Agent 应用开发的基石。

A2A:让 Agent 之间像“人”一样协作

MCP 解决了 Agent 和“工具”的沟通问题,但这还不够。Agent 的强大之处在于它们的自主性、推理能力和处理复杂、开放式任务的能力。这意味着 Agent 之间,或者 Agent 和用户之间,往往需要更灵活、更像“对话”的交互方式。

这时候,A2A (Agent-to-Agent) 协议就派上用场了。

A2A 关注的是什么?

A2A 是一个应用层协议,它的核心目标是让 Agent 能够以**它们自然的形态(像一个智能体,而不是一个工具)**进行协作。这种协作通常涉及:

  • 开放式对话: 不再是简单的“请求-响应”,而是可能持续多轮、不断演进的交流。
  • 意图理解与协商: Agent 需要理解对方的意图,甚至进行协商以达成共同目标。
  • 计划调整: 在协作过程中,计划可能会根据新的信息或对方的反馈进行调整。
  • 非结构化信息: 交互可能包含自然语言、图片等多模态信息。

回到那个汽车修理铺的例子:

想象一个汽车修理铺,里面有几个“AI 修理工”(Agent),它们需要使用各种工具(千斤顶、万用表、扳手等)。

  • MCP 的用武之地: 当 AI 修理工需要精确地操作工具时,比如“将平台升高 2 米”、“将扳手向右旋转 4 毫米”,这种结构化的指令交互,就适合用 MCP。AI 修理工通过 MCP 调用这些“工具”接口。

  • A2A 的用武之地:

    • 用户与 Agent 交互: 你(用户)对 AI 修理工说:“我的车发出嘎啦嘎啦的响声。” 这不是一个结构化指令,需要对话来 уточнять 问题。AI 修理工可能会问:“能发一张左前轮的照片给我吗?”、“我注意到有液体泄漏,这种情况持续多久了?” 这种持续的、信息不断补充和计划不断调整的对话,就是 A2A 发挥作用的地方。
    • Agent 之间的协作: 一个 AI 修理工可能需要向另一个专门负责采购零件的 AI Agent 发出请求:“帮我查一下 XX 型号的刹车片有没有货,价格多少,多久能到?” 这同样是一个需要沟通、可能涉及协商(比如价格、替代品)的过程,也适合 A2A。

A2A 的价值在于,它让 Agent 能够进行更高级别的、基于理解和协商的协作,而不是仅仅把对方当作一个简单的函数来调用。

A2A ❤️ MCP:不是替代,而是互补

说了这么多,你可能已经明白了:A2A 和 MCP 并不是竞争关系,它们是互补的!

  • MCP 强在“调用”: 标准化 Agent 对结构化工具和资源的调用,构建底层能力生态。
  • A2A 强在“协作”: 支持 Agent 之间、Agent 与用户之间进行更灵活、更智能的对话式交互。

一个复杂的 Agentic 应用,往往既需要 MCP 来高效地使用各种基础工具和服务,也需要 A2A 来实现 Agent 之间以及与用户的智能协作。

就像那个修车铺: AI 修理工需要 MCP 来操作扳手(工具),也需要 A2A 来和客户沟通、和零件供应商 Agent 协调。两者结合,才能完成复杂的维修任务。

技术实现猜想:A2A Agent 如何融入 MCP 生态?

原文提到了一个有趣的建议:将 A2A Agent 模型化为 MCP 资源,通过一个叫做 AgentCard 的东西来表示。

这是什么意思呢?我来解读一下:

我们可以把每个支持 A2A 协议的 Agent,也看作是一种特殊的“资源”。这个资源的“接口描述”(AgentCard)可能包含了它的身份标识、能力范围(比如“擅长汽车故障诊断”、“能预订机票”)、以及最重要的——它的 A2A 通信端点和协议规范。

这样一来,一个主 Agent 或编排框架(Orchestrator)可以:

  1. 发现: 通过类似 MCP 的机制(或者扩展的 MCP),发现有哪些 A2A Agent 可用(就像发现普通工具一样)。它可以读取这些 Agent 的 AgentCard。
  2. 切换协议: 当主 Agent 决定需要与某个 A2A Agent 进行复杂的协作(而不是简单的工具调用)时,它就根据 AgentCard 里的信息,切换到 A2A 协议,与目标 Agent 建立连接并开始“对话”。

这个流程展示了 Orchestrator 如何根据任务需求,灵活地在 MCP(调用工具服务)和 A2A(与协作 Agent 对话)之间切换。将 A2A Agent 表示为 MCP 可发现的资源,为这种混合交互模式提供了可能性。

写在最后

Agentic 应用的未来,离不开高效的工具调用和智能的协作交互。MCP 和 A2A 正是支撑这两大需求的关键协议。MCP 正在通过标准化“Function Calling”等方式,为 Agent 构建坚实的“动手能力”基础;而 A2A 则致力于赋予 Agent 更高级的“沟通协作”能力。

理解它们各自的定位和互补关系,对于我们设计和开发下一代智能应用至关重要。当然,A2A 作为一个相对更新的概念,其标准仍在演进中,需要社区的共同努力来推动和完善。

希望今天的分享能让你对 Agent 世界的底层协议有更清晰的认识。我是老码小张,下次有机会再跟大家聊聊其他有意思的技术话题!

注:本文转载自juejin.cn的老码小张的文章"https://juejin.cn/post/7493824873640493071"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

109
人工智能
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top