多智能体客服系统演示

一个结合MCP数据服务和基于Google ADK的多智能体协作系统,用于处理客户服务场景。

  • by linjiax7-g
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 linjiax7-g/MCPA2A

使用说明

多代理客户服务演示

此存储库演示了如何组合模型上下文协议(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

运行端到端系统

  1. 初始化(或重置)数据库

    python scripts/init_db.py --reset
    
  2. 启动MCP服务器 (保持此终端运行)

    python scripts/run_mcp_server.py --host 127.0.0.1 --port 5000
    
  3. 启动A2A代理服务 在一个新的终端

    python scripts/run_agents.py --mcp-url http://127.0.0.1:5000/mcp
    
  4. 运行场景

    • 打开 a2a_customer_service_demo.ipynb 在Jupyter/VS代码中执行:
      1. start_services() 如果你更喜欢一体式笔记本电脑跑步。
      2. 笔记本末尾的“手动场景”单元格。每个手机呼叫 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服务。笔记本打印:

  • 用户提示
  • 路由器输出
  • 显示哪个代理处理了哪个子任务的详细协调日志

这些日志可以作为所需交付成果的一部分导出或截屏。