财务风险与合规经理-综合文档
🎥 视频演示
请查看 视频演示
专有软件通知
该软件是专有和机密的。严禁未经授权通过任何媒介复制、分发或使用本软件。
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协议:
- 直接HTTP通信
- 代理使用RESTful HTTP端点直接相互通信 - 每个代理都公开特定的端点以接收和发送数据 - 通信遵循标准化的JSON消息格式
- 代理通信流程
- 配置文件检查器→ 风险报告员:发送客户端配置文件分析结果 - 风险报告员→ 合规查询员:传输风险评估数据 - 合规查询员→ 风险报告员:返回合规性分析结果
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协议进行通信的专用代理:
- 配置文件检查器(agent1_Profile_Checker.py)
- 端口:5001 - 角色:分析JSON文件中的客户端配置文件 - 地点: client/ 目录 - 目的:验证和处理客户信息
- 风险报告员(agent2_Risk_Reporter.py)
- 端口:5002 - 角色:协调合规性分析工作流程 - 与其他代理进行沟通 - 生成风险评估报告
- 合规性查询器(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.工作流程
- 查询提交
- 用户通过Streamlit UI提交合规性查询 - 查询通过MCP服务器发送到Risk Reporter代理
- 配置文件分析
- Risk Reporter向配置文件检查器请求客户配置文件 - 配置文件检查器分析客户端JSON数据 - 结果返回给风险报告员
- 监管背景
- Risk Reporter向MCP服务器查询相关法规上下文 - MCP服务器使用RAG从PDF中查找相关部分 - 上下文返回给风险报告员
- 合规性分析
- 风险报告员将数据发送给合规查询员 - 合规性查询器执行详细的合规性检查 - 生成最终报告并返回UI
______________________________________________________________________
5.技术实施
5.1 A2A协议
- 代理使用HTTP直接相互通信
- 每个代理在不同的端口(5001-5003)上运行
- 通信是标准化的,遵循特定的协议
5.2 RAG实施
- 使用LangChain进行文档处理
- FAISS用于向量存储和相似性搜索
- PDF被分块和索引,以实现高效检索
5.3配置
- API键的环境变量
- 可配置的RAG设置(块大小、重叠)
- 模块化设计,易于扩展
______________________________________________________________________
6.设置和使用
6.1安装
- 克隆存储库:
git clone https://github.com/sachin0034/Financial-Risk-and-Compliance-Manager---A2A.git
cd Financial-Risk-and-Compliance-Manager---A2A- 安装依赖项:
pip install -r requirements.txt或者,如果使用诗歌或pip工具,请使用 pyproject.toml.
6.2启动服务
- 准备法规文件:
- 将您的法规PDF放在 data/ 目录。
- 准备客户资料:
- 将您的客户端JSON文件放在 client/ 目录。
- 设置环境变量(如果需要):
- 例如,对于OpenAI:
export OPENAI_API_KEY=your-openai-api-key- 您还可以使用 .env 文件。
- 启动MCP服务器:
python mcp_server.py- 启动代理(在单独的终端中或作为后台进程):
python agents/agent1_server.py
python agents/agent2_server.py
python agents/agent3_server.py- 运行Streamlit UI:
streamlit run app.py- 访问应用程序:
- 打开浏览器并转到: http://localhost:8501
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侧栏中配置块大小、重叠和向量数据库
- 环境变量: 使用
.envAPI密钥的文件(例如,OpenAI、Google Cloud)
7.2环境变量
创建一个 .env 包含以下变量的文件:
OPENAI_API_KEY=your-openai-api-key