智能体通信协议学习笔记

智能体通信协议
├── 核心问题
│   ├── 智能体与外部世界高效交互
│   └── 多个智能体相互协作
├── 三种核心协议
│   ├── 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:自研轻量级实现
  2. 工具封装层:将协议封装为统一 Tool 接口
    • MCPTool、A2ATool、ANPTool 均继承自 BaseTool
    • 提供一致的run()方法,简化调用
  3. 智能体集成层:智能体与协议的集成点
    • 所有智能体通过 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. 实际应用中应根据具体需求选择合适的协议,并利用框架提供的工具封装简化开发

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

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐