金融合规分析系统

一个基于A2A协议和MCP服务器架构的模块化多代理系统,用于自动化金融机构的合规分析,通过检索增强生成(RAG)和大语言模型(LLMs)生成详细的合规报告。

  • by sachin0034
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sachin0034/financial-risk-and-compliance-manager---a2a

使用说明

财务风险与合规经理-综合文档

🎥 视频演示

请查看 视频演示

专有软件通知

该软件是专有和机密的。严禁未经授权通过任何媒介复制、分发或使用本软件。

1.工程概况

具有A2A协议和MCP服务器架构的金融风险与合规管理器是一个模块化的多代理系统,旨在自动化金融机构的合规分析。它利用代理到代理(A2A)协议进行代理间通信,利用模型上下文协议(MCP)服务器对生成式人工智能工具进行标准化访问,如检索增强生成(RAG)和大型语言模型(LLM)。该系统对监管文件进行索引,检索相关上下文,并通过涉及多个代理的协作工作流生成详细的合规报告。与传统的合规系统相比,这种方法提供了更高的准确性、效率和可扩展性。


🧩 建筑

系统架构由以下组件组成:

  • 流线型前端: 一个用户友好的界面,用于提交合规查询和查看结果。
  • MCP服务器: 一个集中式服务器,提供对生成式人工智能工具的访问,例如使用LangChain和FAISS的检索增强生成(RAG),以及使用模型上下文协议(MCP)的大型语言模型(LLM)。
  • 代理人: 一组专门的代理,包括配置文件检查器、风险报告器和合规性查询器,它们使用代理到代理(A2A)协议进行协作,以执行合规性分析。
  • 法规PDF: 一组监管文件,作为合规检查的知识库,由MCP服务器的RAG功能索引。

🔄 系统架构图

sequenceDiagram
    participant UI as Streamlit Frontend
    participant MCP as MCP Server (Flask)
    participant Agent2 as Risk Reporter
    participant Agent1 as Profile Checker
    participant Agent3 as Compliance Querier

    UI->>Agent2: 1. Sends query (via MCP)
    Agent2->>Agent1: 2. Requests client profile (A2A)
    Agent1-->>Agent2: 3. Returns profile data (A2A)
    Agent2->>MCP: 4. Queries regulation context
    MCP-->>Agent2: 5. Returns context
    Agent2->>Agent3: 6. Sends risk report (A2A)
    Agent3->>MCP: 7. Queries compliance details
    MCP-->>Agent3: 8. Returns compliance response
    Agent3-->>Agent2: 9. Sends final report (A2A)
    Agent2-->>UI: 10. Returns result (via MCP)

图表注释:

  • A2A通信:使用A2A协议显示了直接代理到代理的交互(例如,代理2到代理1,代理2和代理3)。
  • MCP服务器角色MCP服务器充当一个集中式中心,提供对RAG服务(使用LangChain和FAISS)和LLM的访问。代理与MCP服务器交互以检索法规上下文和合规性详细信息。
  • 综合RAG服务:RAG功能嵌入在MCP服务器中,该服务器对监管文件进行索引并处理来自代理的检索请求。

2.A2A通信协议

2.1什么是A2A协议?

代理到代理(A2A)协议是一个标准化的通信框架,使自主代理能够相互交互和协作。在这个项目中,我们实现了A2A协议,以促进专业代理之间的无缝通信,每个代理负责合规性分析的不同方面。

2.2 A2A在本项目中的实施

我们的系统通过以下方式实现A2A协议:

  1. 直接HTTP通信

    • 代理使用RESTful HTTP端点直接相互通信
    • 每个代理都公开特定的端点以接收和发送数据
    • 通信遵循标准化的JSON消息格式
  2. 代理通信流程

    • 配置文件检查器→ 风险报告员:发送客户端配置文件分析结果
    • 风险报告员→ 合规查询员:传输风险评估数据
    • 合规查询员→ 风险报告员:返回合规性分析结果

2.3代理通信矩阵

从代理 到代理 通信类型 目的
风险报告员 档案检查器 请求 获取客户档案分析
档案检查器 风险报告员 响应 发送档案分析结果
风险报告员 合规查询员 请求 发送风险评估以进行合规检查
合规查询员 风险报告员 响应 返回合规分析结果

2.4 A2A协议的优点

  • 解耦架构:代理可以独立开发和维护
  • 可扩展性:可以添加新代理,而无需修改现有代理
  • 容错:单个代理故障不会影响整个系统
  • 标准化沟通:所有代理的消息格式一致
  • 可追溯性:每次通信都会记录时间戳和元数据

3.核心部件

3.1前端(app.py)

  • 使用Streamlit构建
  • 提供用户友好的界面,用于提交合规性查询
  • 以现代的基于卡片的UI显示结果
  • 允许配置RAG设置和其他参数

3.2 MCP服务器(MCP_Server.py)

  • 充当人工智能服务的中心枢纽
  • 使用LangChain和FAISS实现检索增强生成(RAG)
  • 管理对大型语言模型(LLM)的访问
  • 处理文档索引和检索

3.3代理系统(A2A协议)

该系统使用三个使用A2A协议进行通信的专用代理:

  1. 配置文件检查器(agent1_Profile_Checker.py)

    • 端口:5001
    • 角色:分析JSON文件中的客户端配置文件
    • 地点: client/ 目录
    • 目的:验证和处理客户信息
  2. 风险报告员(agent2_Risk_Reporter.py)

    • 端口:5002
    • 角色:协调合规性分析工作流程
    • 与其他代理进行沟通
    • 生成风险评估报告
  3. 合规性查询器(agent3_Compliance_Querier.py)

    • 端口:5003
    • 角色:执行详细的合规性检查
    • 查询监管文件
    • 生成合规报告

3.4数据组件

PDF文件(在数据/目录中)

该系统使用几个监管文件:

  • aml_bsa_manual.pdfFFIEC BSA/AML 考试手册
  • aml_31cfr.pdf:31 CFR第十章-BSA法规
  • sec_iaa40.pdf1940年《投资顾问法》
  • sec_rule_206_4_1.pdf:美国证券交易委员会规则206(4)-1

这些PDF作为合规性检查的知识库,并由MCP服务器的RAG功能进行索引。

JSON文件(位于客户端/目录中)

  • 包含客户端配置文件数据
  • 由配置文件检查器代理使用
  • 用于合规性分析的结构化数据

4.工作流程

  1. 查询提交

    • 用户通过Streamlit UI提交合规性查询
    • 查询通过MCP服务器发送到Risk Reporter代理
  2. 配置文件分析

    • Risk Reporter向配置文件检查器请求客户配置文件
    • 配置文件检查器分析客户端JSON数据
    • 结果返回给风险报告员
  3. 监管背景

    • Risk Reporter向MCP服务器查询相关法规上下文
    • MCP服务器使用RAG从PDF中查找相关部分
    • 上下文返回给风险报告员
  4. 合规性分析

    • 风险报告员将数据发送给合规查询员
    • 合规性查询器执行详细的合规性检查
    • 生成最终报告并返回UI

5.技术实施

5.1 A2A协议

  • 代理使用HTTP直接相互通信
  • 每个代理在不同的端口(5001-5003)上运行
  • 通信是标准化的,遵循特定的协议

5.2 RAG实施

  • 使用LangChain进行文档处理
  • FAISS用于向量存储和相似性搜索
  • PDF被分块和索引,以实现高效检索

5.3配置

  • API键的环境变量
  • 可配置的RAG设置(块大小、重叠)
  • 模块化设计,易于扩展

6.设置和使用

6.1安装

  1. 克隆存储库:

    git clone https://github.com/sachin0034/Financial-Risk-and-Compliance-Manager---A2A.git
    cd Financial-Risk-and-Compliance-Manager---A2A
    
  2. 安装依赖项:

    pip install -r requirements.txt
    

    或者,如果使用诗歌或pip工具,请使用 pyproject.toml.

6.2启动服务

  1. 准备法规文件:

    • 将您的法规PDF放在 data/ 目录。
  2. 准备客户资料:

    • 将您的客户端JSON文件放在 client/ 目录。
  3. 设置环境变量(如果需要):

    • 例如,对于OpenAI:
      export OPENAI_API_KEY=your-openai-api-key
      
    • 您还可以使用 .env 文件。
  4. 启动MCP服务器:

    python mcp_server.py
    
  5. 启动代理(在单独的终端中或作为后台进程):

    python agents/agent1_server.py
    python agents/agent2_server.py
    python agents/agent3_server.py
    
  6. 运行Streamlit UI:

    streamlit run app.py
    
  7. 访问应用程序:

6.3服务端口

组件 命令 默认端口
MCP服务器 python mcp_server.py 5000
代理人1(个人资料) python agents/agent1_server.py 5001
代理人2(风险) python agents/agent2_server.py 5002
代理人3(合规) python agents/agent3_server.py 5003
流线型UI streamlit run app.py 8501

7.配置

7.1文件结构

  • 客户简介: 将JSON文件放入 client/ 目录
  • 法规数据: 发生在 data/ 目录
  • RAG设置: 在UI侧栏中配置块大小、重叠和向量数据库
  • 环境变量: 使用 .env API密钥的文件(例如,OpenAI、Google Cloud)

7.2环境变量

创建一个 .env 包含以下变量的文件:

OPENAI_API_KEY=your-openai-api-key