代理间通信协议

A2A是一种基于HTTP和JSON-RPC的代理间通信协议,支持代理之间的结构化消息传递。

  • by gauthiii
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gauthiii/a2aProjects

使用说明

A2A项目概述

A2A是什么?

A2A(代理到代理协议)是代理使用共享消息格式(JSON-RPC+结构化消息)通过HTTP相互通信的标准方式。

A2A与MCP有何不同

MCP(模型上下文协议)和A2A解决了堆栈的不同层:

  • MCP是关于工具的
    它公开了get_weather(city)或search_docs(query)等函数/API。
    代理→ MCP服务器(工具)。

  • A2A是关于特工的
    它允许完整的代理(使用自己的工具、内存、逻辑)相互通信。
    代理人A↔ 代理B(对话/请求)。

项目

项目名称 链和运行命令
旅行规划师×天气造型师
(A2A+MCP演示)
A2A连接:旅行计划代理↔ 天气造型师代理。
MCP连接:天气造型师代理→ 气象MCP服务器→ OpenWeather API。

1.启动天气造型师代理:
uv run uvicorn weather_stylist_agent:app --port 8080
2.启动旅行计划代理:
uv run uvicorn travel_planner_agent:app --port 8081
3.调用链:
uv run talk_to_agent.py
货币与股票配对
(A2A+MCP演示)
A2A连接:货币对代理↔ 股票数据代理。
MCP连接:
•货币对代理→ 货币MCP服务器→ API汇率
•股票数据代理→ 库存MCP服务器→ 雅虎财经API。

运行顺序:
1.启动货币对(A2A)代理:
uv run uvicorn currency_pair_agent:app --port 8081
2.启动股票数据(A2A)代理:
uv run uvicorn stock_data_agent:app --port 8082
3.测试或协调沟通:
uv run python test.py
度假规划师×Airbnb
(A2A+MCP演示)
A2A连接:飞行代理↔ Airbnb代理。
MCP连接:
•飞行代理→ 航班MCP服务器→ 谷歌航班API(通过RapidAPI)
•Airbnb代理→ Airbnb MCP服务器→ Airbnb搜索和列表工具。

运行顺序:
1.启动航班MCP服务器:
uv run python flights_mcp_server.py
2.启动Airbnb(A2A)代理:
uv run uvicorn airbnb_a2a:app --port 8090
3.启动航班(A2A)代理:
uv run uvicorn flights_a2a:app --port 8091
4.运行编排器/测试器:
uv run python tester.py
Reddit×谷歌文档
(A2A+MCP演示)
A2A连接:谷歌文档代理↔ Reddit代理。
MCP连接:
•Reddit代理→ Reddit MCP服务器→ Reddit API(热门话题、评论、摘要)
•谷歌文档代理→ 谷歌文档MCP服务器→ 谷歌文档和驱动API。

运行顺序:
1.启动Reddit(A2A)代理:
uv run uvicorn reddit_a2a:app --port 8130
2.启动谷歌文档(A2A)代理:
uv run uvicorn docs_a2a:app --port 8131
3.运行A2A客户端/编排器:
uv run python a2a_client.py

✅ 流量: User → 规划师→ 谷歌文档代理→ Reddit代理→ Reddit MCP→ 谷歌文档MCP→ 最后写信给Doc

如何运行此项目

1.克隆仓库

git clone https://github.com/gauthiii/a2aProjects
cd a2aProjects

2.创建.env文件

OPENAI_API_KEY=your_openai_key_here  
OPENWEATHER_API_KEY=your_openweather_key_here  

# Optional
ANTHROPIC_API_KEY=your_anthropic_key_here
GROQ_API_KEY=
GEMINI_API_KEY=

GMAIL_CLIENT_ID=
GMAIL_CLIENT_SECRET=

EXCHANGE_RATE_API_KEY=
RAPID_GOOGLE_FLIGHTS_API=


3.使用uv安装依赖项

uv sync