ai-agents-for-beginners

使用智能代理协议(MCP、A2A 和 NLWeb)

智能代理协议

(点击上方图片查看本课视频)

随着 AI 代理的使用日益增多,对确保标准化、安全性以及支持开放创新的协议需求也在增长。本课将介绍三种旨在满足这一需求的协议——模型上下文协议(MCP)、代理间协议(A2A)和自然语言网页(NLWeb)。

引言

本课内容包括:

MCP 如何允许 AI 代理访问外部工具和数据,以完成用户任务。

A2A 如何实现不同 AI 代理之间的通信与协作。

NLWeb 如何为任何网站带来自然语言界面,使 AI 代理能够发现并与内容互动。

学习目标

识别 MCP、A2A 和 NLWeb 在 AI 代理中的核心目的和优势。

解释 每个协议如何促进大型语言模型(LLM)、工具和其他代理之间的通信与互动。

认识到 每个协议在构建复杂代理系统中所扮演的不同角色。

模型上下文协议(MCP)

模型上下文协议(MCP) 是一个开放标准,为应用程序向大型语言模型(LLM)提供上下文和工具的方式提供了标准化方法。这使得 AI 代理能够通过“通用适配器”一致地连接到不同的数据源和工具。

接下来我们将了解 MCP 的组成部分、与直接调用 API 的优势对比,以及 AI 代理如何使用 MCP 服务器的示例。

MCP 核心组件

MCP 基于客户端-服务器架构,其核心组件包括:

主机 是启动与 MCP 服务器连接的 LLM 应用程序(例如代码编辑器 VSCode)。

客户端 是主机应用内维护与服务器一对一连接的组件。

服务器 是提供具体功能的轻量级程序。

协议中包含三个核心基础功能,作为 MCP 服务器的能力:

工具:AI 代理可调用的离散动作或功能。例如,天气服务可能提供“获取天气”工具,电子商务服务器可能提供“购买产品”工具。MCP 服务器在能力列表中公布每个工具的名称、描述及输入/输出格式。

资源:由 MCP 服务器提供的只读数据项或文档,客户端可按需获取。示例包括文件内容、数据库记录或日志文件。资源可以是文本(如代码或 JSON)或二进制(如图像或 PDF)。

提示:预定义的模板,提供建议的提示,以支持更复杂的工作流程。

MCP 的优势

MCP 为 AI 代理带来了显著的优势:

动态工具发现:代理可以动态获取服务器提供的可用工具列表及其描述。相比传统 API 往往需要静态编码集成,且 API 变更需要更新代码,MCP 提供“一次集成”的方式,更具适应性。

跨 LLM 互操作性:MCP 可跨不同 LLM 工作,灵活切换核心模型以评估并提升性能。

标准化安全:MCP 包含标准认证方法,便于扩展对更多 MCP 服务器的访问管理,相较于管理各种传统 API 不同密钥和认证方式,简化了安全管理。

MCP 示例

MCP Diagram

假设用户想通过由 MCP 支持的 AI 助手预订航班。

  1. 连接:AI 助手(MCP 客户端)连接航空公司提供的 MCP 服务器。

  2. 工具发现:客户端询问航空公司 MCP 服务器:“有哪些可用工具?”服务器回应如“搜索航班”和“预订航班”等工具。

  3. 调用工具:用户向 AI 助手说:“请搜索从波特兰到火奴鲁鲁的航班。”AI 助手通过其 LLM 识别需要调用“搜索航班”工具,并向 MCP 服务器传递相关参数(出发地、目的地)。

  4. 执行与响应:MCP 服务器作为包装层,调用航空公司的内部预订 API,随后接收航班信息(如 JSON 数据)并返回给 AI 助手。

  5. 后续交互:AI 助手展示航班选项,用户选定航班后,助手可能调用同一 MCP 服务器上的“预订航班”工具,完成预订。

代理间协议(A2A)

MCP 主要连接 LLM 与工具,代理间协议(A2A) 更进一步,实现不同 AI 代理之间的通信与协作。A2A 将不同组织、环境和技术栈的 AI 代理连接起来,共同完成共享任务。

我们将探讨 A2A 的组成部分和优势,并通过旅游应用示例说明其应用。

A2A 核心组件

A2A 致力于使代理之间通信并协作完成用户子任务。协议中的每个组件均支持这一点:

代理卡

类似 MCP 服务器分享工具列表,代理卡包含:

代理执行器

代理执行器负责传递用户聊天上下文给远程代理,远程代理需要这些信息来理解待完成的任务。在 A2A 服务器中,代理通过自身的 LLM 解析请求并利用内部工具执行任务。

工件

当远程代理完成请求的任务,其工作成果以工件形式创建。工件包含代理工作的结果所完成工作的描述以及通过协议传递的文本上下文。工件发送后,远程代理的连接关闭,直至再次需要。

事件队列

此组件用于处理更新和消息传递。在生产环境中尤为重要,以防任务尚未完成时代理间连接被关闭,尤其是任务完成可能耗时较长。

A2A 的优势

增强协作:使来自不同厂商和平台的代理能够互动、共享上下文并协作,促进传统分离系统间无缝自动化。

模型选择灵活性:每个 A2A 代理可自主选择使用的 LLM,允许按代理优化或微调模型,与某些 MCP 场景中单一 LLM 连接不同。

内置认证:认证集成于 A2A 协议中,为代理交互提供强健安全框架。

A2A 示例

A2A Diagram

让我们扩展旅游预订场景,这次采用 A2A。

  1. 用户向多代理请求:用户与“旅游代理” A2A 客户端/代理互动,例如说:“请预订下周前往火奴鲁鲁的全程旅行,包括航班、酒店及租车。”

  2. 旅游代理协调:旅游代理接收到复杂请求,利用其 LLM 推理任务,确定需要与其他专门代理交互。

  3. 代理间通信:旅游代理使用 A2A 协议连接下游代理,如不同公司的“航空代理”、“酒店代理”和“租车代理”。

  4. 委托任务执行:旅游代理将具体任务发送给这些专门代理(例如“查找飞往火奴鲁鲁的航班”、“预订酒店”、“租车”)。每个专门代理运行自己的 LLM,使用自己工具(也可能是 MCP 服务器),完成各自的预订部分。

  5. 整合响应:所有下游代理完成任务后,旅游代理汇总结果(航班详情、酒店确认、租车预订),以聊天式响应方式发送给用户。

自然语言网页(NLWeb)

网站长期以来是用户访问互联网上信息和数据的主要渠道。

下面我们将了解 NLWeb 的不同组件、优势及通过旅游应用示例展示 NLWeb 的工作方式。

NLWeb 组件

NLWeb 示例

NLWeb

再次考虑我们的旅游预订网站,这次由 NLWeb 驱动。

  1. 数据摄取:旅行网站现有产品目录(如航班列表、酒店介绍、旅游套餐)用 Schema.org 格式或通过 RSS 提供。NLWeb 工具摄取这些结构化数据,生成嵌入,并存储于本地或远程向量数据库。

  2. 自然语言查询(人类):用户访问网站,不是通过菜单导航,而是在聊天界面中输入:“帮我找一个下周在火奴鲁鲁有游泳池的适合家庭的酒店”。

  3. NLWeb 处理:NLWeb 应用接收查询,发送查询给 LLM 进行理解,同时在其向量数据库中搜索相关酒店列表。

  4. 精准结果:LLM 协助解读数据库搜索结果,根据“适合家庭”、“游泳池”和“火奴鲁鲁”条件甄别最佳匹配,并生成自然语言响应。关键是响应引用了网站目录中的真实酒店,避免虚构信息。

  5. AI 代理交互:由于 NLWeb 充当 MCP 服务器,外部 AI 旅行代理亦可连接此网站的 NLWeb 实例。AI 代理可使用 ask MCP 方法直接查询网站:ask("酒店推荐的火奴鲁鲁地区有素食友好餐厅吗?")。NLWeb 实例将处理查询,利用其餐厅信息数据库(如果加载了),并返回结构化 JSON 响应。

想了解更多关于 MCP/A2A/NLWeb 吗?

加入 Microsoft Foundry Discord ,与其他学习者交流,参加答疑时间,获得 AI 代理相关问题的解答。

资源

上一课

生产环境中的 AI 代理

下一课

AI 代理的上下文工程


免责声明: 本文件由 AI 翻译服务 Co-op Translator 翻译完成。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。