使用说明
多代理客户服务系统(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对象,集中登录 协调器和简单场景标签处于共享状态,以便每个 代理可以确定性地做出决策。