AI代理通信协议

基于Google A2A协议的AI代理间通信实现,支持通过标准化API进行任务处理和外部工具集成。

  • by system32miro
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 system32miro/google-a2a-agent

使用说明

谷歌A2A代理示例

该存储库基于Google的A2A协议实现了一个简单的代理到代理(A2A)通信示例。A2A是谷歌提出的标准,使人工智能代理能够通过标准化的API相互通信。

概述

实施由两个主要部分组成:

  1. 服务器(server.py):一个基于Flask的服务器充当AI代理。它实现了核心A2A协议端点:

    • /.well-known/agent.json:提供代理的元数据(代理卡),描述其功能和URL。
    • /tasks/send:接受其他代理(或类似客户)的任务 client.py),使用AI模型(OpenAI的GPT-4o-mini)和外部工具(通过MCP的Brave Search)处理它们,并返回结果。
  2. 客户(client.py):一个简单的Python脚本,演示如何与A2A服务器交互:

    • 通过获取代理卡来发现代理。
    • 向代理发送任务(用户查询) /tasks/send 终点。
    • 接收并打印代理的响应。

建筑

交互流程可以可视化如下:

sequenceDiagram
    participant C as Client (client.py)
    participant S as A2A Server (server.py)
    participant MCP as Brave MCP Server
    participant OAI as OpenAI API

    C->>S: GET /.well-known/agent.json (Discover Agent)
    S-->>C: Agent Card JSON
    C->>S: POST /tasks/send (Task Request with User Query)
    S->>OAI: Process Query (Initial processing)
    Note right of S: Agent decides to use Brave Search
    S->>MCP: Search Request
    MCP-->>S: Search Results
    S->>OAI: Process Query + Search Results
    OAI-->>S: Final Response Text
    S-->>C: Task Response (with Agent's Final Message)
  • 这 客户端 通过发现 A2A服务器.
  • 这 客户端 向发送任务(例如,“什么是Google A2A?”) 服务器.
  • 这 服务器 使用 pydantic-ai 库,与以下内容协调:
    • 这 OpenAI API 以理解请求并生成响应。
    • A. Brave Search MCP服务器 (通过管理 MCPServerStdio)当需要网络搜索时。MCP(模型上下文协议)规范了AI模型如何与外部工具/数据源交互。
  • 这 服务器 将最终响应发送回 客户端.

设置

  1. 克隆存储库:

    git clone <repository_url>
    cd <repository_directory>
    
  2. 创建并激活虚拟环境:

    • 视窗:
      python -m venv venv
      .\venv\Scripts\activate
      
    • macOS/Linux:
      python3 -m venv venv
      source venv/bin/activate
      
  3. 创建一个 .env 文件: 创建一个名为的文件 .env 在根目录中,并添加您的API密钥:

    OPENAI_API_KEY=your_openai_api_key
    BRAVE_API_KEY=your_brave_api_key
    

    (替换 your_openai_api_key 和 your_brave_api_key 使用您的实际钥匙)

  4. 安装依赖项:

    pip install -r requirements.txt
    
  5. 运行服务器: 打开终端,激活虚拟环境,然后运行:

    python server.py
    

    服务器将启动,通常在 http://localhost:5000.

  6. 运行客户端: 打开A 分开 终端,激活虚拟环境,并运行:

    python client.py
    

    客户端将发现服务器,发送预定义的问题,并打印代理的响应。

A2A协议详细信息

谷歌的A2A协议为代理通过HTTP进行通信定义了一种标准方式。关键概念包括:

  • 代理卡(/.well-known/agent.json):一个标准JSON文档,描述代理的身份、功能(例如流式支持)和API端点。
  • 任务API(/tasks/send, /tasks/receive等等):用于交换任务和消息的端点。此示例仅实现了基本功能 /tasks/send.
  • 标准化消息格式:代理之间交换的消息的一致JSON结构,通常包括角色(user, agent)以及内容部分。

如需更深入的信息,请参阅谷歌官方A2A协议文档(如果有链接)。