多代理客户服务系统

一个基于多代理架构的客户服务系统,包含路由代理、客户数据代理和支持代理,适用于客户服务场景。

  • by CaptainMaxine
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 CaptainMaxine/A2A-MCP

使用说明

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

该项目实现了 多代理客户服务系统 它使用:

  • 路由器代理 (编排)
  • 客户数据代理 (MCP支持的客户数据库专家)
  • 支持代理 (支持+升级专家)
  • 薄 MCP客户端 mcpserver.tools的包装器 数据库和示例数据由课程提供的Database_setup.py(此处重命名为mcp_server/Database_setup.py)创建。

1.设置

bash 克隆 cd多代理cs

python-m venv-venv 源venv/bin/activate#Windows:venv\Scripts\activate

pip install-r requirements.txt#目前仅支持stdlib,但保留文件以保持一致性

2.初始化数据库

bash python-m mcpserver.server

这将:

  • 如果缺少,则创建support.db
  • 创建表和触发器
  • 插入样本客户和门票

3.运行端到端演示(Python脚本)

bash python-m代理协调器

您将看到:

  • A2A记录每个步骤(路由器→ 数据代理→ 路由器→ 支持代理…)
  • 每个场景的最终响应

4.笔记本演示

打开notebook/multi_agent_demo.py,将内容作为单独的单元格复制到Jupyter/Colab笔记本中(或通过jupytext转换)。运行所有单元格以:

  • 初始化数据库
  • 构建代理+协调员
  • 执行所有必需的测试场景(简单查询、协调查询、复杂查询、升级、多意图,以及三个显式场景)。

打印的日志满足分配要求: “添加显式日志记录以显示代理之间的通信”


5.MCP集成

在此参考实现中,agents/mcp_client.py调用 mcpserver.tools正在处理中。

在您的课程环境中,将MCPClient方法替换为真正的MCP调用:

MCPClient类: def get_customer(self,customer_id:int): #TODO:调用MCP服务器工具get_customer ...

无需更改其他文件。


6.结论模板(您可以调整)

在本次作业中,我学习了如何在路由器之间分离关注点 代理、数据专家和支持专家,以及如何使用 MCP风格的工具层,将数据库逻辑与代理推理隔离开来。 设计A2A协调迫使我对以下场景进行建模 明确的任务分配、协商和多步分解 在代理之间传递的共享状态下。

主要的挑战是调试多代理循环并确保 信息在传输之间没有丢失。我通过添加以下内容来解决这个问题 一个结构化的A2AMessage对象,集中登录 协调器和简单场景标签处于共享状态,以便每个 代理可以确定性地做出决策。