多代理客户服务演示
此存储库演示了如何组合模型上下文协议(MCP)数据 与基于Google ADK的代理通过A2A协议进行协作。它 包含:
- 一个SQLite支持的MCP服务器,公开客户和票证操作。
- 三个ADK/A2A代理(路由器、客户数据、支持),负责协调
处理客户服务场景。
- Jupyter笔记本(
a2a_customer_service_demo.ipynb)这显示了端到端
工作流并捕获示例场景。
该项目现在还包括独立的Python脚本,因此您可以初始化 数据库,运行MCP服务器,并在笔记本电脑外部启动A2A代理。
先决条件
- python 3.11
pip和venv
项目结构
.
├── app/
│ ├── __init__.py
│ ├── agents.py # ADK/A2A agent definitions and runner
│ ├── config.py # Shared configuration helpers
│ ├── db.py # SQLite schema + MCP tool implementations
│ └── mcp_server.py # Flask-based MCP HTTP/SSE service
├── scripts/
│ ├── init_db.py # Initialize or reset the SQLite database
│ ├── run_mcp_server.py # Launch the MCP server
│ └── run_agents.py # Launch A2A agent services
├── a2a_customer_service_demo.ipynb
├── requirements.txt
├── instruction.md
└── README.md环境设置
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt创建一个 .env 存储库根目录中的文件:
GOOGLE_API_KEY=your_gemini_api_key
# Optional if you plan to tunnel the MCP server
NGROK_AUTHTOKEN=your_token
# Optional custom DB location
# CUSTOMER_SERVICE_DB=/absolute/path/to/customer_service.db运行端到端系统
- 初始化(或重置)数据库
python scripts/init_db.py --reset- 启动MCP服务器 (保持此终端运行)
python scripts/run_mcp_server.py --host 127.0.0.1 --port 5000- 启动A2A代理服务 在一个新的终端
python scripts/run_agents.py --mcp-url http://127.0.0.1:5000/mcp- 运行场景
- 打开 a2a_customer_service_demo.ipynb 在Jupyter/VS代码中执行: 1. start_services() 如果你更喜欢一体式笔记本电脑跑步。 1. 笔记本末尾的“手动场景”单元格。每个手机呼叫 run_scenario(...) 针对特定的客户服务请求。执行时间 至少三个不同的场景单元(例如“任务分配”, “谈判/升级”、“多步骤协调”)以满足 任务要求。 - 确保在场景运行之间留出短暂的停顿(约20秒),以避免 达到自由层Gemini API速率限制(HTTP 429/503响应)。
笔记本记录路由器的输出和代理之间的协调 跟踪,以便您可以捕获每个场景的请求和响应的证据。
附加说明
- 默认情况下,MCP服务器和代理都在本地运行(
127.0.0.1).如果你需要
要使MCP服务在外部可用,请配置 NGROK_AUTHTOKEN 在 .env 并单独启动一条ngrok隧道。
customer_service.db默认情况下在存储库根目录中创建。你可以
通过覆盖位置 CUSTOMER_SERVICE_DB 环境变量。
- A2A特工依靠
GOOGLE_API_KEY感谢您致电Gemini 2.5 Pro
模型。在启动代理或运行之前,请确保此变量存在 笔记本。
测试与验证
这 a2a_customer_service_demo.ipynb 笔记本包括一个“手动场景 触发器”部分有八个现成的场景。运行其中任何三个 演示路由器、数据代理和支持之间的端到端协调 代理通过MCP服务。笔记本打印:
- 用户提示
- 路由器输出
- 显示哪个代理处理了哪个子任务的详细协调日志
这些日志可以作为所需交付成果的一部分导出或截屏。
