使用说明
使用MCP和A2A(谷歌ADK)的多代理客户服务系统
该项目使用以下工具实现了一个功能齐全的多智能体系统:
- 数据库工具执行的模型上下文协议(MCP)
- 用于多智能体推理的Google ADK
- A2A代理间通信协议
- Google Colab内部运行的异步微服务
该系统包括三个协作代理:
- 客户数据代理
- 客服专员
- 路由器代理
它们共同模拟了一个现实的客户服务后端,能够检索客户数据、更新配置文件、创建工单,并通过协调的LLM代理解决支持问题。
特性
MCP服务器
实现五个数据库工具:
get_customerlist_customersupdate_customercreate_ticketget_customer_history
客户数据代理
- 直接执行MCP工具
- 处理结构化数据查询和更新
客服专员
- 回答客户服务问题
- 将数据操作委托给客户数据代理
- 创建工单并处理升级
路由器代理
- 执行意图检测和路由
- 决定由哪个代理处理请求
- 支持多意图和多步骤工作流
建筑
User → 路由器代理→ 客服专员 ↘ 客户数据代理→ MCP工具→ SQLite数据库
路由器代理协调所有通信。
客户数据代理是唯一被允许调用MCP工具的代理。
Support Agent处理对话和升级。
安装
克隆存储库:
git clone https://github.com/roseanne396/Multi-Agent-Customer-Service-System-with-A2A-and-MCP.git
cd https://github.com/roseanne396/Multi-Agent-Customer-Service-System-with-A2A-and-MCP.git
安装依赖项:
pip install -r requirements.txt
运行MCP服务器
Colab笔记本内部:
start_server()
这将启动:
MCP服务器(端口5000)
客户数据代理(端口9101)
支持代理(端口9102)
路由器代理(端口9200)
通过A2A运行代理
使用A2A客户端发送任务:
response = await a2a_client.create_task(
"http://localhost:9200",
"Get customer information for ID 5"
)
print(response)
测试场景
-
简单查询 获取ID 5的客户信息
-
协同查询 我是客户12345,需要帮助升级我的帐户
-
复杂查询 显示所有有未结门票的活跃客户
-
升级 我已经被收费两次了,请立即退款
-
多意图工作流 更新我的电子邮件至user@example.com并显示我的门票历史记录
学习总结
该项目演示了MCP如何实现跨代理的标准化工具执行,而A2A为多代理推理提供了结构化的通信协议。实现该系统突出了关键的架构考虑因素,如路由逻辑、代理分离和Colab内部的异步微服务编排。主要挑战包括在一个运行时配置多个服务器、调试A2A传输错误、确保在工具调用期间严格遵守JSON,以及将MCP工具执行集成到客户数据代理中。