关于 Google A2A Agent Example
这是一个使用 Python 和 Flask 实现 Google A2A 协议的示例,包含接收 Agent 任务的服务端,以及发现并调用它的客户端。服务端使用 OpenAI 的 GPT-4o-mini,并在需要网页搜索时通过 MCP 调用 Brave Search。
主要功能
- 01实现核心 A2A 接口
- 02通过 Agent Card 发现 Agent
- 03通过 HTTP 接收任务
- 04使用 GPT-4o-mini 生成回复
- 05使用 Brave Search 查询网页
适用场景
- 01了解 Agent 间任务交换
- 02测试 Agent 发现和任务提交
- 03为 A2A Agent 添加网页搜索
MCP 相关
需要网页搜索时,服务端通过 `MCPServerStdio` 使用 Brave Search MCP 服务。MCP 提供连接外部搜索工具的方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Google A2A Agent 示例
此仓库实现了一个基于 Google A2A 协议的简单 Agent-to-Agent(A2A)通信示例。A2A 是 Google 提出的标准,旨在通过标准化 API 让 AI Agent 彼此通信。
概述
该实现由两个主要组件组成:
-
服务端(
server.py):基于 Flask 的服务端,充当 AI Agent。它实现了 A2A 协议的核心端点:/.well-known/agent.json:提供 Agent 的元数据(Agent Card),用于描述其功能和 URL。/tasks/send:接收其他 Agent(或client.py这样的客户端)发送的任务,使用 AI 模型(OpenAI 的 GPT-4o-mini)和外部工具(通过 MCP 使用 Brave Search)进行处理,并返回结果。
-
客户端(
client.py):一个简单的 Python 脚本,用于演示如何与 A2A 服务端交互:- 获取 Agent Card,以发现该 Agent。
- 向该 Agent 的
/tasks/send端点发送任务(用户查询)。 - 接收并打印 Agent 的响应。
架构
交互流程如下所示:
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,用于理解请求并生成响应。
- Brave Search MCP Server(通过
MCPServerStdio管理),在需要网页搜索时使用。MCP(Model Context Protocol)规范了 AI 模型与外部工具/数据源的交互方式。
- 服务端将最终响应发送回客户端。
设置
-
克隆仓库:
git clone <repository_url> cd <repository_directory> -
创建并激活虚拟环境:
- Windows:
python -m venv venv .\venv\Scripts\activate - macOS/Linux:
python3 -m venv venv source venv/bin/activate
- Windows:
-
创建
.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替换为你的实际密钥) -
安装依赖项:
pip install -r requirements.txt -
运行服务端: 打开终端,激活虚拟环境,然后运行:
python server.py服务端将启动,通常监听
http://localhost:5000。 -
运行客户端: 打开一个单独的终端,激活虚拟环境,然后运行:
python client.py客户端将发现服务端,发送预设问题,并打印 Agent 的响应。
A2A 协议详情
Google 的 A2A 协议定义了 Agent 通过 HTTP 通信的标准方式。关键概念包括:
- Agent Card(
/.well-known/agent.json):描述 Agent 身份、功能(例如,是否支持流式传输)和 API 端点的标准 JSON 文档。 - 任务 API(
/tasks/send、/tasks/receive等):用于交换任务和消息的端点。此示例仅实现必要的/tasks/send。 - 标准化消息格式:Agent 之间交换消息时使用的一致 JSON 结构,通常包含角色(
user、agent)和内容部分。
如需了解更多信息,请参阅 Google A2A 协议官方文档(如有链接)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。