⚖️ 英国离婚律师助理(CrewAI+MCP+Streamlit+AAzure OpenAI)
⚖️ UK Divorce Attorney AI Assistant/h1>
人工智能驱动的英国离婚法律助理 建造于 船员AI, 模型上下文协议(MCP),以及 溪流 --能够检索法律条款、分析先例、起草法律策略和生成专业离婚申请,所有这些都是通过智能多智能体协作精心策划的。
______________________________________________________________________
📖 概述
这个项目是一个成熟的 法律人工智能工作流系统 旨在模仿 英国家庭法律师的数字助理.
它利用了:
- 船员AI → 用于多代理编排(子句检索、案例研究、策略分析、请愿书起草)
- MCP(模型上下文协议) → Anthropic,用于将外部工具和服务器连接到LLM
- LLM(Azure OpenAI GPT-4o) → 用于推理、写作和决策路径
- 混合检索管道 → 密集+词汇+元数据搜索架构,具有重新排序和查询重写功能。
- FAISS → 法律文本语义向量搜索
- 派丹蒂克 → 用于工具交互中的模式验证和安全数据传输
- 溪流 → 用于交互式网络界面
- 紫外线 → 用于依赖关系管理和虚拟环境设置(代替pip/conda)
这些组件共同实现了与处理离婚案件不同阶段的多个自主法律代理人的自然语言交互。
______________________________________________________________________
🧩 核心能力
| 代理 | 角色 | 描述 |
|---|---|---|
| 条款检索专员 | 法律研究员 | 使用混合(语义+词汇+元数据)检索从1973年《婚姻诉讼法》中查找相关法定条款 |
| 案例研究员 | 先例查找器 | 从案例库中搜索并总结3-5个类似的英国家庭法判决 |
| 案例策略分析师 | 法律战略家 | 起草专业的法律论据、反驳论据和诉讼策略 |
| 请愿书撰写人 | 文件起草人 | 根据英国家庭法院的官方结构生成法院准备的离婚申请 |
| 普通信息 | 会话助理 | 处理有关离婚法的一般询问或元级别讨论 |
______________________________________________________________________
⚙️ 技术栈
| 组件 | 技术 |
|---|---|
| 代理框架 | 船员AI |
| 工具界面 | 模型上下文协议(MCP) |
| 矢量数据库 | 失败 |
| 嵌入 | 句子变换器 – BAAI/bge-base-en-v1.5 |
| 大型语言模型 | Azure OpenAI–GPT-4o |
| UI | 溪流 |
| 数据清理 | 非结构化 |
| 依赖与环境管理 | 紫外线 |
| 语言 | Python 3.13 |
| 数据集 | 1973年英国婚姻诉讼法(注释和嵌入) |
______________________________________________________________________
🧠 法律数据来源
该项目的 法律条款检索 由矢量化版本的\ 📜 1973年《婚姻诉讼法》(英国).
数据准备管道
- 清理和结构化–使用非结构化库删除页眉、页脚和OCR噪声。
- 元数据提取–捕获节号、标题、摘要、类别和法律概念。
- 语义分块——根据逻辑边界和相似性阈值对文本进行划分。
- 矢量化——使用BAAI/bge-base-en-v1.5将块嵌入FAISS。
- 存储–创建具有混合检索功能的可搜索本地矢量存储。
这允许基于上下文的法律检索,例如,理解“不可挽回的崩溃”是指该法案第1(2)条规定的五个法定事实。
🔍 检索管道架构
该系统使用混合检索方法,结合多种信号类型,进行精确和上下文丰富的法律搜索。
###检索步骤
1-查询重写(基于LLM) 使用GPT-4o将用户的查询重写为法律上详细和特定的版本。
2-混合搜索(密集+词汇+元数据)
密集:在句子嵌入上缺乏相似性。
词汇:BM25基于关键字的相关性评分。
元数据增强:类别和子句编号匹配提高了准确性。
3-重新排序(交叉编码器) BAAI/bge重排序器基础模型对顶级候选者进行重新排序,以最大限度地提高上下文精度。
4-总结(LLM) 检索到的块被总结成简洁、法律上准确的解释。
矢量数据库(FAISS混合索引)
- 1973年《婚姻诉讼法》中的每一条款都被转换为表示其语义含义的高维向量嵌入。
- 这些嵌入被本地存储在FAISS(Facebook AI相似度搜索)索引中,用于快速、离线的相似度检索。
- find_relevant_clauses MCP服务器使用混合搜索方法查询此FAISS索引,该方法结合了密集的语义向量、词汇关键字评分和元数据匹配。
- 当子句检索服务器启动时,FAISS索引会自动加载并准备就绪,确保即时、低延迟的合法子句搜索。
例子:
Action: find_relevant_clauses
Action Input: {"query": "adultery and irretrievable breakdown of marriage"}项目结构
Attorney-RAG/
├── __pycache__
│ └── retrieval_pipeline.cpython-313.pyc
├── built_vector_db.py
├── client
│ ├── app.py
│ ├── divorce_attorney_client_v2.py
│ └── divorce_attorney_client.py
├── data
│ └── laws
│ ├── legal_document.pdf
│ ├── UK_Divorce_Act_chunks_metadata.json
│ └── UK_Divorce_Act_clean.json
├── main.py
├── output
│ └── peitition.txt
├── pyproject.toml
├── README.md
├── retrieval_pipeline.py
├── screenshots
│ ├── case_researcher.png
│ ├── case_strategy_analyst.png
│ └── clause_retrieval.png
├── servers
│ ├── __pycache__
│ │ └── clause_retrieval_server.cpython-313.pyc
│ ├── case_retrieval_server.py
│ ├── case_strategy_server.py
│ ├── clause_retrieval_server.py
│ ├── model.py
│ └── petition_template_server.py
├── title_img.png
├── uv.lock
└── vector_stores
├── faiss_divorce_act
├── index.faiss
└── index.pkl
---📸 屏幕截图和演示
以下是示例输出 英国离婚律师人工智能系统,展示了不同代理人(CrewAI+MCP)如何互动以处理真实的法律场景。
______________________________________________________________________
📘 条款检索代理
脚本:
在一方配偶通奸,另一方希望离婚的情况下,从 *1973年《婚姻诉讼法》* 该法案对通奸进行了定义,并确立了离婚的法律依据。
结果:\ 代理检索到 第1(2)节 的 *1973年《婚姻诉讼法》*,解释通奸作为离婚有效理由的法律依据。
______________________________________________________________________
⚖️ 案例研究代理
脚本:
查找并总结3起英国家庭法案件,这些案件涉及母亲被授予监护权的监护权纠纷。
结果:\ 代理人提供的摘要 判例,包括判决结果、推理和相关网址,为英国家庭法下的监护决定提供了清晰的见解。
______________________________________________________________________
🧠 案例策略分析代理
脚本:
根据以下详细信息,John Doe和Jane Doe结婚10年,有两个孩子(8岁和10岁)。制定一份法律策略,概述论点、反驳论点和下一步行动。
结果:\ 该代理生成了一个结构化的 法律战略文件,包括关键论点、建议方法和基于英国家庭法的潜在反驳。
______________________________________________________________________
每个代理通过以下方式自主操作 船员AI,利用 LLM推理, 基于向量的检索,以及 MCP微服务 获取准确、基于文件的法律情报。
它是如何工作的
用户查询(通过Streamlit)
律师输入一个自然的查询,如 “根据1973年法案起草Jane Doe诉John Doe的离婚请愿书。”
通过CrewAI LLM路由
GPT-4o模型分析查询,并通过以下方式将其路由到最合适的代理 route_query_to_agent_llm()。
代理任务执行 每个代理都有一个CrewAI Task对象,该对象定义了其描述、预期输出和分配的工具。
刀具调用(通过MCP) 代理调用MCP服务器(如find_relevant_causes、find_similar_cases、generate_legal_strategy、draft_petition)。
矢量检索和LLM推理 MCP服务器执行向量相似性搜索(针对子句)或生成响应(针对策略/请求)。
结果交付 处理后的结构化输出被流式传输回Streamlit界面,并格式化以提高可读性。
安装和设置
1.️⃣ 克隆仓库
git clone https://github.com/abdullahhunjra/agentic-divorce-attorney-ai-system-crewai-mcp-azure-foundry-openai-gpt4o-streamlit
cd agentic-divorce-attorney-ai-system-crewai-mcp-azure-foundry-openai-gpt4o-streamlit2.️⃣ 初始化环境
uv init3.️⃣ 安装依赖项
由于此项目使用pyproject.toml,只需运行:
uv sync这将安装在\[项目.依赖关系\]下定义的所有依赖关系。
4.️⃣ 配置Azure OpenAI
创建 .env 使用Azure OpenAI凭据在项目根目录中创建文件:
AZURE_OPENAI_API_KEY=
AZURE_OPENAI_ENDPOINT=
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4o
AZURE_OPENAI_API_VERSION=2024-02-15-preview
TAVILY_API_KEY=5.️⃣ 启动MCP服务器
在单独的终端中,运行:
uv run python servers/clause_retrieval_server.py
uv run python servers/case_retrieval_server.py
uv run python servers/case_strategy_server.py
uv run python servers/petition_template_server.py6.️⃣ 启动Streamlit界面
uv run streamlit run client/app.py现在打开浏览器: 👉
http://127.0.0.1:8501💬 查询示例 📘 条款检索
“从1973年《婚姻诉讼法》中,找到与不可挽回的破裂和通奸有关的条款。”
⚖️ 案例研究
“总结3起涉及母亲被授予监护权的英国监护权纠纷案件。”
🧠 策略生成器
根据以下案件摘要,提出论点、反驳论点和拟议的诉讼策略
📝 请愿书起草
“起草一份正式的离婚申请: 申请人:Jane Elizabeth Doe 被告:John Michael Doe 律师:Richard Allan先生,Allan&Co.家庭律师事务所,伦敦
## 🙋♂️ Author
**Abdullah Shahzad**
📧 [abdullahhunjra@gmail.com](mailto:abdullahshahzadhunjra@gmail.com)
🔗 [LinkedIn](https://www.linkedin.com/in/abdullahhunjra)
💻
---```