多代理客服系统

一个使用Google Agent Development Kit (ADK) 和 Agent-to-Agent (A2A) 通信协议实现的多代理客服系统,具备客户信息管理、服务请求处理和协调工作流等功能。

  • by ashhhwin
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 ashhhwin/Multi-Agent-Customer-Service-System-with-A2A-and-MCP---Google-ADK

使用说明

多代理客户服务系统-A2A ADK MCP实现

概述

该项目使用谷歌的代理开发工具包(ADK)实现了一个多代理客户服务系统,该工具包具有代理到代理(A2A)通信协议和模型上下文协议(MCP)用于数据库访问。

系统架构

组件

  1. MCP服务器 (端口8000)

    • 在SQLite数据库上提供HTTP API层
    • 处理客户帐户和支持票的CRUD操作
  2. 客户信息代理 (端口9300)

    • 专注于数据检索和客户记录管理
    • 执行查找、更新和复杂查询
  3. 支持专家代理 (9301端口)

    • 处理客户服务咨询
    • 创建和管理具有优先级的支持票
  4. 编排代理 (端口9400)

    • 用户请求的主要入口点
    • 将查询发送给适当的专业代理
    • 协调多代理工作流

文件结构

project/
├── a2a_patch.py              # Compatibility patch for A2A client
├── agent_definitions.py      # Agent configurations and capabilities
├── client_runner.py          # Test client and integration test suite
├── database_utility.py       # SQLite connection utilities
├── mcp_server.py            # MCP HTTP server implementation
├── server_launcher.py       # Multi-server orchestration
├── service_tools.py         # MCP tool wrappers for agents
├── main.py                  # Main entry point
├── .env                     # Environment variables (GEMINI_API_KEY)
└── service_db.sqlite        # SQLite database (auto-created)

先决条件

必需的Python包

pip install google-adk
pip install a2a
pip install httpx
pip install uvicorn
pip install starlette
pip install python-dotenv
pip install nest-asyncio
pip install pandas  # Optional, for database inspection

环境变量

创建一个 .env 项目根目录中的文件:

GEMINI_API_KEY=your_gemini_api_key_here

安装

  1. 将所有项目文件克隆或下载到一个目录
  2. 安装所需的软件包(请参阅先决条件)
  3. 创建 .env 使用GEMINI_API_KEY文件
  4. 确保所有Python文件都在同一目录中

运行系统

选项1:命令行

python main.py

这将:

  • 使用种子数据初始化SQLite数据库
  • 启动所有四台服务器(MCP+3个A2A代理)
  • 自动运行集成测试套件
  • 保持服务器运行直到中断(Ctrl+C)

选项2:Jupyter笔记本

在提供的笔记本中按顺序运行单元格,以便逐步执行和更好的输出可视化。

测试场景

该系统包括5个集成测试用例:

  1. 简单数据检索

    • 按ID获取完整的客户记录
    • 测试基本代理路由和工具使用情况
  2. 协调服务请求

    • 客户要求服务升级
    • 测试多代理协调和工单创建
  3. 复杂过滤查询

    • 列出有未结票证的活动帐户
    • 测试需要多个工具调用的多步骤查询
  4. 高优先级票证记录

    • 带有退款请求的紧急账单问题
    • 测试优先级检测和高紧急票创建
  5. 多步记录更新

    • 更新客户电子邮件并检索票务历史记录
    • 测试顺序操作和错误处理

数据库模式

客户_帐户

  • 标识符(主键)
  • full_name
  • contact_电子邮件
  • 联系电话
  • account_status
  • creation_timestamp
  • 最后修改时间戳

支持票

  • ticket_id(主键)
  • account_id(外键)
  • 描述
  • 状态
  • 优先级(低/中/高)
  • 提交时间戳

API终点

MCP服务器(http://127.0.0.1:8000)

  • GET/tools-列出可用操作
  • POST/call-执行数据库操作

代理服务器

  • GET/.knowledge/agent-card.json-代理能力卡
  • POST/-向代理发送消息(A2A协议)

可用的MCP工具

  1. fetch_customer_data(customer_id:int)

    • 按ID检索客户帐户
  2. search_customer_accounts(account_status:str,result_limit:int)

    • 按状态搜索帐户(活动/禁用)
  3. modify_customer_record(customer_id:int,update_payload:str)

    • 更新客户字段(需要JSON字符串)
  4. register_support_issue(客户id:int,查询描述:str,紧急级别:str)

    • 创建新的支持票
  5. retrieve_customer_history(customer_id:int)

    • 为客户获取所有门票