多代理CRM系统

一个基于MCP、A2A和LangGraph的多代理系统,用于客户支持CRM任务分配、协商和多步骤工作流。

  • by LisaLin-LSY
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 LisaLin-LSY/multiagent-a5

使用说明

作业5——具有MCP、A2A和LangGraph的多智能体系统

此存储库包含作业5的完整实现。该项目包括:

  • 为客户支持CRM公开数据库工具的MCP服务器。
  • 根据A2A规范设计的三个代理:路由器代理、客户数据代理和支持代理。
  • 基于LangGraph的多代理协调系统,支持任务分配、协商和多步骤工作流。
  • A2A HTTP服务器通过AgentCard和Tasks公开每个代理。
  • 验证正确行为的端到端测试场景。
  • 完全符合任务5 PDF和TA的更严格要求,即代理必须使用MCP进行数据库操作,并且必须公开A2A接口。

存储库结构

多药剂a5/
└── src/分配5/
├── 数据库安装py
├── mcp_server.py
├── 代理人.py
└── a2a_http_server.py
脚本/
├── run_mcp_server.sh
└── run_a2a_server.sh
需求.txt
README.md

系统概述

MCP服务器

MCP服务器封装SQLite数据库(support.db),并公开以下MCP工具:

  • 列表_客户
  • get_客户
  • get_customer_历史
  • 更新_客户
  • 创建_票

该服务器使用FastMCP实现,并提供STDIO和SSE/HTTP传输。它完全支持工具/列表和工具/调用,并可通过MCP Inspector进行测试。

这满足了必须“通过MCP”访问客户和票务数据的要求。


多智能体系统(LangGraph+A2A)

实施了三个符合A2A标准的代理:

  1. 路由器代理
    执行意图分析并将请求路由到客户数据或支持代理。

  2. 客户数据代理
    使用MCP工具检索客户信息。不使用原始SQL。

  3. 支援谍员
    创建工单,通过协商提取缺失的细节,并与MCP工具交互。

每个代理定义:

  • 代理卡
  • 能力和技能
  • A. /tasks 端点
  • 符合A2A标准的独立操作

这符合TA的要求,即“每个代理都必须有一个A2A接口”。


A2A HTTP服务器

基于FastAPI的服务器为每个代理公开A2A端点:

  • /路由器/.知名/agent-card.json
  • /路由器/任务
  • /客户/.知名/agent-card.json
  • /客户/任务
  • /support/.knowledge/agent-card.json
  • /支持/任务

这些端点可以使用curl或笔记本电脑中的内置测试客户端进行测试。


安装和设置

创建虚拟环境:

python -m venv .venv
source .venv/bin/activate

安装依赖项

pip安装-r要求.txt

数据库初始化

运行数据库安装脚本:

  • python-msrc.assignment5.database_setup

这将创建包含表和种子数据的SQLite数据库。

运行MCP服务器

STDIO模式(兼容MCP检查器):

  • ./scripts/run_mcp_server.sh
  • python-m src.assignment5.mcp服务器

MCP检查器配置:

  • 运输:STDIO
  • 命令:python
  • 参数:[“-m”,“src.assignment5.mcp_server”]

运行A2A HTTP服务器

启动A2A服务器:

  • ./scripts/run_a2a_server.sh
  • python-m src.a2a_http_server

测试代理卡端点:

  • 卷曲http://localhost:8000/router/.well-已知/代理卡.json

已实施的任务场景

任务分配

路由器根据用户意图选择合适的代理。

谈判

支持代理请求缺少字段(优先级、问题详细信息、客户ID)。

多步骤工作流

路由器→ 客户数据→ 支持协调以完成多部分任务。

所需的五个测试查询

所有五个测试用例(简单、协调、复杂、升级、多意图)都得到了实施和演示。

设计说明:MCP与直接SQL

为了满足TA要求,所有代理都通过MCP工具调用与数据库交互。没有代理直接使用SQL。MCP服务器封装数据库,并提供MCP检查员和外部客户端所需的标准化API。

这可以保持正确性,避免重复逻辑,并确保完全符合MCP。

结论

此存储库为任务5提供了一个完整的、符合标准的解决方案:

  • 功能齐全的MCP服务器公开数据库操作。
  • 使用LangGraph构建的三个A2A代理,可通过独立的HTTP端点访问。
  • 实现任务分配、协商和多步骤工作流的多代理编排。
  • 可用于分级的端到端测试场景。
  • 完全符合作业5的要求和TA的最新期望。

此实现演示了如何将MCP、A2A接口和LangGraph结合起来,为CRM风格的工作流构建可靠的多代理系统。