多代理客户服务系统

一个基于模型上下文协议(MCP)和Google ADK A2A的多代理客户服务系统,用于任务分配、协商升级和多步骤协调。

  • by 333sherry
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 333sherry/Applied-GenAI-MCP-A2A

使用说明

应用GenAI-MCP-A2A

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

该存储库包含任务5-Applied GenAI的实现,我在其中使用以下方法构建了一个功能齐全的多代理客户服务系统:

  • 模型上下文协议(MCP) 用于数据库访问
  • 谷歌ADK A2A(代理对代理) 用于多智能体协调
  • LLM动力代理 用于路由、支持和数据检索
  • 数据库 持久客户和票务数据数据库

整个系统在单个笔记本电脑内端到端运行。


存储库结构

Assignment_5_applied_genai.ipynb     ← Main notebook (MCP server + agents + tests)
database_setup.py                    ← Builds the SQLite DB with schema + triggers
support.db                           ← SQLite database used by MCP server
README.md                            ← Project documentation
requirements.txt                     ← Required Python packages

项目概述

该项目实施了一个三代理系统:

路由器代理(编排器)

  • 接收客户查询
  • 执行意图检测
  • 将任务委托给专业代理
  • 处理多意图和多步骤工作流
  • 将输出合并为最终响应

客户数据代理(MCP支持的专家)

  • 调用MCP工具与SQLite数据库交互
  • 获取客户数据
  • 更新记录
  • 创建票证
  • 检索客户历史记录

支持代理(客户服务专员)

  • 处理故障排除和支持请求
  • 从数据代理请求客户上下文
  • 通过工单创建执行升级
  • 生成自然语言响应

所有代理都使用A2A协议进行通信,并在轻量级本地服务器上运行。


MCP服务器

MCP服务器公开分配中定义的所有必需工具:

已实施所需工具

工具 说明
get_customer(customer_id) 获取单个客户
list_customers(status, limit) 筛选并列出客户
update_customer(customer_id, data) 修改客户字段
create_ticket(customer_id, issue, priority) 打开支持票
get_customer_history(customer_id) 检索客户的所有门票

服务器使用JSON-RPC+服务器发送事件进行通信。

database_setup.py 创建:

  • customers 桌子
  • tickets 桌子
  • 触发自动更新时间戳
  • 样品记录

support.db 是代理使用的数据库。


运行项目(Colab)

整个项目在内部运行:

Assignment_5_applied_genai.ipynb

要运行:

  1. 在Google Colab中打开笔记本

  2. 按顺序运行每个部分:

    • 初始化数据库
    • 启动MCP服务器
    • 启动A2A代理服务器
    • 执行路由器代理测试
  3. 观察日志中的代理间通信

  4. 审查MCP工具输出和多步协调

无需在Colab之外进行额外设置。


已实施的测试场景

所有必需的场景都包含在笔记本中并执行。

场景1——任务分配

“我需要帮助处理我的帐户,客户ID 12345”

情景2——谈判/升级

“我想取消订阅,但我遇到了账单问题”

场景3——多步协调

“高级客户的所有高优先级机票的状态如何?”

必需的测试查询

✔ 协同查询: I'm customer 12345 and need help upgrading my account

✔ 复杂查询: Show me all active customers who have open tickets

✔ 升级: I've been charged twice, please refund immediately!

所有场景输出都记录在笔记本中。


环境和依赖关系

如果在本地运行,请安装:

pip install flask flask-cors pyngrok requests nest_asyncio uvicorn httpx google-genai google-colab google-adk

(在Colab中运行时,依赖项直接安装在笔记本电脑中,因此不需要手动设置。)


结论

这个项目加强了我对多代理编排、基于MCP的工具集成和数据库支持的LLM系统的理解。主要挑战包括调试异步A2A交互、协调多个代理服务器以及确保通过Router agent进行正确的工具路由。构建MCP服务器加深了我对LLM如何可靠地与结构化数据交互而不会产生幻觉的理解。总体而言,这一实践实施展示了多代理系统如何为客户服务提供可扩展的智能自动化。