智能体通信协议
羁木轮
2025年11月18日 23:38

智能体通信协议

├── 核心问题

│  ├── 智能体与外部世界高效交互

│  └── 多个智能体相互协作

├── 三种核心协议

│  ├── MCP(Model Context Protocol)

│  │  ├── 定位:智能体与工具的标准化通信

│  │  ├── 设计理念:标准化智能体与外部工具/资源的通信方式,基于“上下文共享”

│  │  ├── 架构:Host(宿主层)、Client(客户端层)、Servers(服务器层)

│  │  ├── 核心能力:Tools(主动执行操作)、Resources(被动提供数据)、Prompts(提供模板)

│  │  ├── 传输方式:Memory Transport(测试)、Stdio Transport(本地开发)、HTTP/SSE/StreamableHTTP(远程/生产)

│  │  └── 应用:通过MCPTool集成到智能体,自动展开为独立工具供调用

│  ├── A2A(Agent-to-Agent Protocol)

│  │  ├── 定位:智能体间的点对点协作

│  │  ├── 设计理念:实现智能体对等通信,无中心化协调器

│  │  ├── 特点:每个智能体既是服务提供者也是消费者,支持主动请求与响应

│  │  └── 应用:通过A2ATool实现智能体间直接对话与协作

│  └── ANP(Agent Network Protocol)

│    ├── 定位:构建大规模智能体网络的基础设施

│    ├── 设计理念:去中心化服务发现,支持动态发现和连接智能体

│    ├── 核心功能:服务注册、服务发现、路由机制

│    └── 应用:通过ANPTool实现大规模智能体网络的管理与通信

├── 协议选择依据

│  ├── 访问外部服务(文件、数据库等)→ 选MCP

│  ├── 多个智能体协作 → 选A2A

│  └── 构建大规模智能体生态 → 选ANP

└── HelloAgents框架实现

  ├── 三层架构

  │  ├── 协议实现层:MCP(基于FastMCP)、A2A(基于a2a-sdk)、ANP(自研轻量实现)

  │  ├── 工具封装层:MCPTool、A2ATool、ANPTool(均继承自BaseTool)

  │  └── 智能体集成层:通过Tool System与智能体(ReActAgent等)集成

  └── 核心优势:标准化接口、互操作性、动态发现、可扩展性

智能体通信协议学习笔记

一、为什么需要智能体通信协议

在构建复杂 AI 系统时,单体智能体面临三大限制:

  1. 工具集成困境:访问新外部服务需编写专门 Tool 类,兼容性差

  2. 能力扩展瓶颈:能力局限于预定义工具集,无法动态发现新服务

  3. 协作缺失:多智能体协作需手动编排,效率低下

通信协议的核心价值在于提供标准化接口,实现:

  • 标准化接口:统一访问各种外部服务的方式

  • 互操作性:不同开发者的工具可无缝集成

  • 动态发现:智能体运行时可发现新服务和能力

  • 可扩展性:轻松添加新功能模块

二、三种核心通信协议对比

1. MCP(Model Context Protocol)

  • 定位:智能体与工具的标准化通信

  • 设计理念:标准化智能体与外部工具 / 资源的通信方式,基于 "上下文共享"

  • 核心特点

    • 不仅是 RPC 协议,还支持丰富的上下文信息共享

    • 采用 Host、Client、Servers 三层架构

    • 提供三大核心能力:Tools(主动执行操作)、Resources(被动提供数据)、Prompts(提供模板)

  • 与 Function Calling 的差异

    • Function Calling 是模型的能力,解决 "如何调用"

    • MCP 是基础设施协议,解决 "如何连接",实现跨模型兼容

2. A2A(Agent-to-Agent Protocol)

  • 定位:智能体间的点对点协作

  • 设计理念:实现智能体对等通信,无中心化协调器

  • 核心特点

    • 每个智能体既是服务提供者也是消费者

    • 支持主动请求与响应

    • 避免中心化瓶颈,网络更灵活可扩展

3. ANP(Agent Network Protocol)

  • 定位:构建大规模智能体网络的基础设施

  • 设计理念:去中心化服务发现,支持动态发现和连接智能体

  • 核心特点

    • 提供服务注册、发现和路由机制

    • 适用于成百上千智能体组成的大规模网络

    • 无需预先配置所有连接关系

协议选择依据

  • 访问外部服务(文件、数据库等)→ 选 MCP

  • 多个智能体协作 → 选 A2A

  • 构建大规模智能体生态 → 选 ANP

三、HelloAgents 框架通信协议架构

采用三层设计架构:

  1. 协议实现层:三种协议的具体实现

    • MCP:基于 FastMCP 库

    • A2A:基于 Google 官方 a2a-sdk

    • ANP:自研轻量级实现

  1. 工具封装层:将协议封装为统一 Tool 接口

    • MCPTool、A2ATool、ANPTool 均继承自 BaseTool

    • 提供一致的run()方法,简化调用

  1. 智能体集成层:智能体与协议的集成点

    • 所有智能体通过 Tool System 使用协议工具

    • 无需关心底层协议细节

四、MCP 协议实战

1. MCP 客户端使用

import asyncio

from hello_agents.protocols import MCPClient

async def connect_to_server():

  # 连接到社区提供的文件系统服务器

  client = MCPClient([

    "npx", "-y",

    "@modelcontextprotocol/server-filesystem",

    "." # 指定根目录

 ])

  async with client:

    # 发现可用工具

    tools = await client.list_tools()

    print(f"可用工具: {[t['name'] for t in tools]}")

    

    # 调用工具

    result = await client.call_tool("read_file", {"path": "README.md"})

    print(f"文件内容:{result}")

asyncio.run(connect_to_server())

2. MCP 传输方式

MCP 支持多种传输方式,适应不同场景:

  • Memory Transport:用于测试,无需实际服务器

  • Stdio Transport:本地开发,通过标准输入输出通信

  • HTTP Transport:生产环境,远程服务通信

  • SSE Transport:实时通信、流式处理

  • StreamableHTTP Transport:双向流式通信

# 不同传输方式的使用示例

from hello_agents.tools import MCPTool

# 1. 内存传输(测试用)

mcp_tool = MCPTool()

# 2. 标准输入输出传输(本地开发)

mcp_tool = MCPTool(server_command=["python", "my_mcp_server.py"])

# 3. 社区服务器(npx方式)

mcp_tool = MCPTool(server_command=["npx", "-y", "@modelcontextprotocol/server-filesystem", "."])

3. 在智能体中使用 MCP 工具

MCPTool 具有自动展开特性,会将服务器提供的工具自动展开为独立工具:

from hello_agents import SimpleAgent, HelloAgentsLLM

from hello_agents.tools import MCPTool

agent = SimpleAgent(name="助手", llm=HelloAgentsLLM())

# 添加MCP工具(自动展开为多个独立工具)

mcp_tool = MCPTool(name="calculator")

agent.add_tool(mcp_tool)

# 智能体可直接使用展开后的工具

response = agent.run("计算 25 乘以 16")

print(response) # 输出:25 乘以 16 的结果是 400

五、总结

  1. 智能体通信协议解决了工具集成、能力扩展和多智能体协作的核心问题

  2. MCP、A2A、ANP 三种协议分别针对不同场景,互为补充

  3. HelloAgents 框架通过三层架构实现了协议的标准化集成

  4. MCP 协议作为应用最成熟的协议,提供了灵活的工具访问能力和多种传输方式

  5. 实际应用中应根据具体需求选择合适的协议,并利用框架提供的工具封装简化开发

通过掌握这些通信协议,能够构建更灵活、可扩展、协同工作的智能体系统,突破单体智能体的能力边界。

ps:原文为md格式,作者不想调了

学习途径:https://github.com/datawhalechina/hello-agents/tree/main/docs