多代理客户服务系统

一个基于Google A2A协议和MCP的多代理客户服务系统,通过路由代理、客户数据代理和支持代理协同处理客户服务请求。

  • by jazilkalim
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 jazilkalim/MultiAgent-with-A2A-and-MCP-Server

使用说明

任务5:基于A2A和MCP的多代理客户服务系统

概述

该项目使用谷歌的代理到代理(A2A)协议和模型上下文协议(MCP)实现了一个多代理客户服务系统。该系统由三个专业代理组成,协调处理客户服务请求:

  1. 路由器代理 -协调请求并将其路由到适当的专业代理
  2. 客户数据代理 -通过MCP工具管理客户信息
  3. 客服专员 -通过MCP工具处理支持票和客户服务请求

先决条件

  • Python 3.11+
  • 虚拟环境(推荐)
  • 启用Vertex AI的谷歌云项目(适用于Gemini型号)
  • MCP服务器在端口8000上运行

安装

  1. 创建并激活虚拟环境:

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  2. 安装依赖项:

    pip install -r requirements.txt
    
  3. 设置Google API凭据 (选择一个选项):

    选项A:Google AI API(推荐用于本地开发)

    • 从获取API密钥 谷歌人工智能工作室
    • 创建一个 .env HW文件夹中的文件:
      GOOGLE_API_KEY=your_api_key_here
      
    • 或者设置环境变量:
      export GOOGLE_API_KEY=your_api_key_here  # Linux/Mac
      set GOOGLE_API_KEY=your_api_key_here     # Windows CMD
      $env:GOOGLE_API_KEY="your_api_key_here"  # Windows PowerShell
      

    选项B:顶点AI(用于生产/云)

    • 设置环境变量:
      export GOOGLE_CLOUD_PROJECT=your-project-id
      export GOOGLE_CLOUD_LOCATION=us-central1
      
    • 通过以下方式进行身份验证: gcloud auth application-default login

运行系统

步骤1:启动MCP服务器

启动代理之前,MCP服务器必须正在运行。在单独的终端中启动它:

python mcp_server_standalone.py

MCP服务器将在 http://127.0.0.1:8000

步骤2:运行完整系统

运行主实现文件:

python assignment5_fixed_complete.py

这将:

  • 创建数据库并为其添加测试数据种子
  • 启动所有三个代理服务器:
    • 客户数据代理: http://127.0.0.1:9300
    • 支持代理: http://127.0.0.1:9301
    • 路由器代理: http://127.0.0.1:9400
  • 自动运行所有测试场景

替代方案:从Jupyter笔记本运行

  1. 打开 HW.ipynb 在Jupyter中
  2. 从以下位置复制代码 assignment5_fixed_complete.py 进入笔记本电脑单元
  3. 按顺序运行单元格

测试场景

该系统包括5个测试场景:

  1. 简单查询 -获取ID 1的客户信息
  2. 协同查询 -客户ID 2的帐户升级请求
  3. 复杂查询 -显示所有持有未结门票的活跃客户
  4. 升级 -客户ID 1的退款请求
  5. 多意图 -更新客户ID 5的电子邮件并显示票务历史记录

项目结构

HW/
├── assignment5_fixed_complete.py  # Main implementation (complete system)
├── mcp_tools.py                   # MCP tool wrappers for ADK agents
├── a2a_agents_fixed.py           # Agent definitions
├── HW.ipynb                       # Jupyter notebook (optional)
├── README.md                      # This file
├── requirements.txt               # Python dependencies
└── mcp.db                         # SQLite database (auto-created)

主要特点

  • MCP集成:所有数据库操作都通过MCP服务器工具进行
  • A2A协调:路由器代理使用A2A协议与专业代理通信
  • 基于LLM的工具选择:代理使用LLM推理来选择合适的MCP工具
  • 三种协调方案:任务分配、协商和多步骤协调

故障排除

MCP服务器无法访问

  • 确保MCP服务器在端口8000上运行
  • 检查防火墙设置
  • 验证代码中的MCP服务器URL是否与服务器URL匹配

代理未响应

  • 检查所有A2A服务器是否已成功启动
  • 验证端口9300、9301、9400是否未使用
  • 检查日志中的错误消息

数据库问题

  • 数据库在首次运行时自动创建
  • 如果出现问题,请删除 mcp.db 并重新运行脚本

备注

  • 启动代理之前,MCP服务器必须正在运行
  • 所有代理都使用MCP工具进行数据库操作(无直接数据库访问)
  • 测试数据中的客户ID:1、2、3、4、5、12345