多代理客户服务系统

一个遵循Model Context Protocol (MCP)和Google的Agent-to-Agent (A2A)规范的客户支持系统,包含路由代理、客户数据代理和支持代理,用于处理客户查询、数据管理和支持工作流。

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

使用说明

多代理客户服务(A2A+MCP)

该项目实现了一个严格遵循模型上下文协议(MCP)和谷歌代理到代理(A2A)规范的客户支持系统。三个独立的代理(路由器、客户数据、支持)作为单独的A2A服务运行,通过A2A协议相互通信,并使用MCP服务器查询/更新SQLite数据库。

架构概述

  • 路由器代理(编排器) –接收用户查询,分析意图,委托给专家,并撰写最终回复。
  • 客户数据代理 –与MCP服务器对话,读取/更新客户记录和工单历史记录。
  • 客服专员 –处理支持工作流程、工单创建和升级;在需要时从数据代理请求上下文。
  • FastMCP服务器 –通过MCP协议公开所需的工具(获取/列出/更新客户、创建工单、获取历史记录以及助手查询),由 multi_agent_service.db.

每个代理在以下位置发布一张代理卡 /.well-known/agent-card.json,支持JSON-RPC传输,可以独立执行(例如,通过MCP Inspector或任何A2A客户端)。

先决条件

  • Python 3.11+
  • uv 用于依赖关系管理
  • Google API密钥(Gemini模型)存储在 .env

快速开始

# 1. Create & activate venv
uv venv .venv
source .venv/bin/activate

# 2. Install project deps
uv pip install -r requirements.txt

# 3. Configure environment
cp .env.example .env   # or create manually
echo "GOOGLE_API_KEY=your_key" >> .env

# 4. Initialize database (creates multi_agent_service.db with seed data)
python db_initialize.py

# 5. (Optional) verify MCP tools
python test_mcp.py

运行A2A系统

打开两个终端(均在虚拟环境中):

  1. 启动所有A2A代理:

    python agents_server.py
    
    • 路由器: http://127.0.0.1:10020
    • 客户数据: http://127.0.0.1:10021
    • 技术支持: http://127.0.0.1:10022
  2. 通过路由器运行演示场景:

    python demo_scenarios.py
    

    此脚本使用简单的A2A客户端(agent_client.py)发送五个代表性查询(简单查找、升级帮助、打开工单报告、升级、多意图更新/历史)。

提示:您还可以使用以下方式呼叫单个代理 call_agent() 从 agent_client.py 或任何符合A2A标准的客户端。

项目结构

  • agents_definitions.py –路由器、客户数据和支持代理+代理卡的定义。
  • agents_server.py –将每个代理作为独立的A2A HTTP服务器进行启动。
  • agent_client.py –通过A2A协议调用代理的助手,支持对话。
  • demo_scenarios.py –演示驱动程序,在多转弯支持下练习所有必需的场景。
  • mcp_service.py –FastMCP服务器实现公开了由SQLite支持的数据库工具。
  • mcp_tools_wrapper.py –包装器将MCP函数作为可调用的ADK工具公开。
  • db_initialize.py –创建/初始化 multi_agent_service.db 种子数据。
  • multi_agent_service.db –SQLite数据库(通常在git中忽略;通过安装脚本重新生成)。
  • README_A2A.md, REQUIREMENTS_ALIGNMENT.md等等。–开发说明(可选择保留)。

遗留LangGraph原型(agents.py,原件 main.py实验室)不再使用;如果你只想要最终的A2A解决方案,你可以删除它们。

演示运行器(Jupyter笔记本)

打开 demo_runner.ipynb 在Jupyter中运行一个交互式演示,该演示将:

  1. 在后台启动所有A2A代理。
  2. 执行 demo_scenarios.py (所有任务场景)。
  3. 捕获stdout/stderr以及服务器日志 demo_output.md.
  4. 自动关闭代理。

提交生成的 demo_output.md (或在提交前重新生成)作为端到端运行的证明。

测试/验证

  1. python test_mcp.py 确认MCP工具调用成功。
  2. python demo_scenarios.py (服务器正在运行)演示:
    • 简单的信息查找
    • 协调“升级我的帐户”流程
    • 复杂 active customers with open tickets 怎么翻译
    • 升级/退款请求
    • 多意图更新+票务历史

由于代理是独立的A2A服务,您还可以运行MCP Inspector或任何A2A客户端 http://127.0.0.1:1002x 验证卡片和任务执行情况。