|
|
1 month ago | |
|---|---|---|
| .idea | 1 month ago | |
| .gitignore | 1 month ago | |
| README.md | 1 month ago | |
| client.py | 1 month ago | |
| compare.py | 1 month ago | |
| demo_no_a2a.py | 1 month ago | |
| demo_with_a2a.py | 1 month ago | |
| server.py | 1 month ago | |
| server_translator.py | 1 month ago |
A2A 协议(Google)的 Python 演示。对比「有 A2A」和「没有 A2A」两种集成方式。
a2a-demo/
├── server.py # 问答 Agent(端口 9999)→ A2A Server
├── server_translator.py # 翻译 Agent(端口 9998)→ A2A Server
├── client.py # A2A 全流程演示(发现 + 调用 + 跨 Agent 管道)
├── compare.py # 交互式对比:直连 DeepSeek vs 走 A2A
├── demo_no_a2a.py # ❌ 无 A2A:两个 Agent 不同 API,手工适配
└── demo_with_a2a.py # ✅ 有 A2A:同一套协议,零适配代码
Python 3.10+(推荐 3.11),项目自带 uv 虚拟环境。
cd ~/Desktop/miaoa/AI/projects/a2a-demo
source .venv/bin/activate
如果虚拟环境不存在,重建:
cd ~/Desktop/miaoa/AI/projects/a2a-demo
uv venv --python 3.11
uv pip install a2a-sdk uvicorn starlette openai httpx sse-starlette httpx-sse
需要 3 个终端。
cd ~/Desktop/miaoa/AI/projects/a2a-demo
source .venv/bin/activate
python server.py
看到输出:
🚀 A2A Server 启动 → http://127.0.0.1:9999
INFO: Uvicorn running on http://127.0.0.1:9999
cd ~/Desktop/miaoa/AI/projects/a2a-demo
source .venv/bin/activate
python server_translator.py
看到输出:
🌐 翻译 Agent → http://127.0.0.1:9998
INFO: Uvicorn running on http://127.0.0.1:9998
先看没有 A2A 的情况:
cd ~/Desktop/miaoa/AI/projects/a2a-demo
source .venv/bin/activate
python demo_no_a2a.py
再看有 A2A 的情况:
python demo_with_a2a.py
❌ 没有 A2A
问答 → 手动写: POST /ask {"question": ...}
翻译 → 手动写: POST /v2/translate {"src": ...} → 解析 resp.data.result
第三个 → 再写一套适配代码
→ N 个 Agent = N 套适配代码
✅ 有 A2A
问答 → call_a2a_agent(url, question) ← 同一函数
翻译 → call_a2a_agent(url, question) ← 同一函数
第三个 → call_a2a_agent(url, question) ← 直接复用
→ N 个 Agent = 1 套代码
一边是直连 DeepSeek API,一边是经过 A2A 协议转发。
前提:问答 Agent(server.py)必须在 9999 端口运行。
# 终端 1:启动 Server
cd ~/Desktop/miaoa/AI/projects/a2a-demo
source .venv/bin/activate
python server.py
# 终端 2:运行对比
cd ~/Desktop/miaoa/AI/projects/a2a-demo
source .venv/bin/activate
python compare.py
进入交互模式后,输入问题即可看到两种方式的结果和耗时。
展示 A2A 协议核心价值:Agent Card 发现 + 统一协议调用 + 跨 Agent 管道。
前提:问答 Agent(9999)和翻译 Agent(9998)都必须运行。
cd ~/Desktop/miaoa/AI/projects/a2a-demo
source .venv/bin/activate
python client.py
输出三段:
| 问题 | 解决 |
|---|---|
| 端口被占用 | lsof -ti:9999 -ti:9998 \| xargs kill -9 |
| 502 Bad Gateway | AgentCard 序列化异常,检查 server.py 中没有 url 字段 |
| pip install a2a-sdk 失败 | 需要 Python ≥ 3.10,本项目用 uv 管理 |