# SmartContractGuard **Repository Path**: hanzhi-code/smart-contract-sentinel ## Basic Information - **Project Name**: SmartContractGuard - **Description**: 一个专注于智能合同审查与风险控制的开源系统,提供自动化审查、风险评估与合规检测功能,助力企业高效管理合同风险。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-03-26 - **Last Updated**: 2026-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能法律助手系统
基于大语言模型和法律知识库的智能合同审查与法律咨询平台 [![Vue](https://img.shields.io/badge/Vue-3.5.x-brightgreen.svg)](https://vuejs.org/) [![Django](https://img.shields.io/badge/Django-5.2.x-green.svg)](https://www.djangoproject.com/) [![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://www.python.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.9.x-blue.svg)](https://www.typescriptlang.org/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
--- ## 📖 目录 - [项目简介](#项目简介) - [核心功能](#核心功能) - [技术架构](#技术架构) - [技术栈](#技术栈) - [快速开始](#快速开始) - [项目结构](#项目结构) - [核心模块](#核心模块) - [API文档](#api文档) - [配置说明](#配置说明) - [部署指南](#部署指南) - [开发指南](#开发指南) - [常见问题](#常见问题) - [贡献指南](#贡献指南) - [许可证](#许可证) - [联系方式](#联系方式) --- ## 项目简介 智能法律助手系统是一款面向企业法务部门的智能化法律服务平台,利用大语言模型(LLM)和法律知识库技术,提供合同审查、法律咨询、知识管理等一站式解决方案。 ### 背景与痛点 传统法务工作面临以下挑战: - **效率低下**:人工审查一份合同需要数小时甚至数天 - **风险遗漏**:人工审查容易疏忽细节,导致法律风险 - **知识更新滞后**:法律法规频繁更新,难以实时掌握 - **成本高昂**:聘请专业法务团队成本巨大 - **标准不统一**:不同审查人员标准不一,质量参差不齐 ### 解决方案 本项目通过AI技术赋能法律行业,实现: - **智能化审查**:AI自动识别合同风险点,审查时间缩短至数分钟 - **精准化咨询**:基于法律知识库提供专业法律建议,确保有法可依 - **高效化流程**:自动化程度超过80%,大幅提升工作效率 - **标准化输出**:生成结构化审查报告,便于决策参考 - **知识化管理**:构建企业专属法律知识库,形成知识资产 --- ## 核心功能 ### 1. 👤 用户管理系统 - 用户注册/登录(邮箱验证码、账号密码) - JWT Token认证 - 角色权限管理(管理员、法务总监、法务专员、业务人员、法律顾问) - 登录日志记录 - 用户批量导入/导出 ### 2. 📄 合同智能审查(核心) - 支持PDF、Word、TXT等多种格式 - OCR文字识别(扫描件处理) - **LangGraph工作流引擎**: - 文本标准化 → 条款分片 → 并行审查 → 风险评估 → 结果聚合 → 报告生成 - 多维度风险评估(高/中/低风险) - 风险点定位(页码、段落) - 法律依据引用(RAG检索) - 审查报告导出(PDF/JSON) - 审查进度实时跟踪 ### 3. 💬 AI法律对话 - 智能法律咨询 - 流式响应输出 - 引用法规功能 - 多轮对话支持 - 对话历史管理 - 文件上传分析 - 常用指令快捷操作 ### 4. 📚 法律知识库 - 法律法规上传与管理 - 法规分类(合同、劳动、公司、知识产权、金融) - **向量化存储**(Milvus向量数据库) - 法规版本管理 - 条文级检索 - 智能语义搜索 ### 5. 🔄 合同对比 - 两份合同差异对比 - 智能识别新增、删除、修改条款 - 差异可视化展示 - 相似度分析 ### 6. 📋 合同模板库 - 标准合同模板库 - 模板分类管理 - 模板预览/下载 - 自定义模板创建 ### 7. 📁 我的合同 - 合同版本管理 - 合同状态跟踪 - 历史审查记录 - 合同归档管理 ### 8. ⚙️ 管理后台 - 用户管理 - 角色权限配置 - 系统设置 - 数据统计 --- ## 技术架构 ### 整体架构图 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 表现层 (Presentation Layer) │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Web前端 │ │ 移动端H5 │ │ 管理后台 │ │ │ │ (Vue 3) │ │ (Vue 3) │ │ (Vue 3) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └────────────────────────────┬────────────────────────────────────┘ │ HTTP/WebSocket ┌────────────────────────────┴────────────────────────────────────┐ │ 应用层 (Application Layer) │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Django REST Framework API │ │ │ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ │ │ User │ │Contract│ │Analytics│ │Chat │ │Knowledge│ │ │ │ │ │ Module │ │ Module │ │ Module │ │ Module │ │ Module │ │ │ │ │ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ │ │ │ └──────────────────────────────────────────────────────────┘ │ └────────────────────────────┬────────────────────────────────────┘ │ ┌────────────────────────────┴────────────────────────────────────┐ │ 业务逻辑层 (Business Layer) │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ LangGraph + LangChain 工作流引擎 │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ │ │ 合同审查 │ │ 智能对话 │ │ 风险分析 │ │ │ │ │ │ 工作流 │ │ Agent │ │ 引擎 │ │ │ │ │ └────────────┘ └────────────┘ └────────────┘ │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ │ │ RAG检索 │ │ 文档解析 │ │ 报告生成 │ │ │ │ │ │ 工具 │ │ 引擎 │ │ 引擎 │ │ │ │ │ └────────────┘ └────────────┘ └────────────┘ │ │ │ └──────────────────────────────────────────────────────────┘ │ └────────────────────────────┬────────────────────────────────────┘ │ ┌────────────────────────────┴────────────────────────────────────┐ │ 数据层 (Data Layer) │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ MySQL │ │ Milvus │ │ 阿里云OSS │ │ │ │ 业务数据 │ │ 向量存储 │ │ 文件存储 │ │ │ └────────────┘ └────────────┘ └────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ### 核心技术亮点 #### 1. LangGraph工作流引擎 合同审查采用LangGraph工作流编排,实现复杂流程的可视化管理: ``` 文本标准化 → 条款分片 → 并行审查 → 风险评估 → 结果聚合 → 报告生成 ``` #### 2. RAG检索增强生成 结合向量检索和大语言模型,确保AI回答有法可依: ``` 用户提问 → 向量检索 → 获取法律条文 → LLM生成回答 → 引用法律依据 ``` #### 3. 多维度风险评估 从多个维度全面分析合同风险: - 风险等级:高/中/低 - 风险位置:页码、段落 - 法律依据:相关法律条文 - 修改建议:针对性的修改建议 --- ## 技术栈 ### 前端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | [Vue 3](https://vuejs.org/) | 3.5.x | 渐进式JavaScript框架 | | [TypeScript](https://www.typescriptlang.org/) | 5.9.x | JavaScript超集 | | [Element Plus](https://element-plus.org/) | 2.13.x | Vue 3组件库 | | [Pinia](https://pinia.vuejs.org/) | 3.0.x | 状态管理 | | [Vue Router](https://router.vuejs.org/) | 4.6.x | 路由管理 | | [Vite](https://vitejs.dev/) | 7.3.x | 构建工具 | | [Axios](https://axios-http.com/) | 1.13.x | HTTP客户端 | | [PDF.js](https://mozilla.github.io/pdf.js/) | 5.4.x | PDF渲染 | | [Markdown-it](https://github.com/markdown-it/markdown-it) | 14.1.x | Markdown解析 | ### 后端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | [Django](https://www.djangoproject.com/) | 5.2.x | Python Web框架 | | [Django REST Framework](https://www.django-rest-framework.org/) | 3.16.x | RESTful API框架 | | [LangChain](https://python.langchain.com/) | 1.2.x | LLM应用框架 | | [LangGraph](https://langchain-ai.github.io/langgraph/) | 1.0.x | 工作流编排引擎 | | [MySQL](https://www.mysql.com/) | 8.0+ | 关系型数据库 | | [Milvus](https://milvus.io/) | 2.3+ | 向量数据库 | | [OpenAI/DeepSeek](https://www.deepseek.com/) | - | 大语言模型 | | [Redis](https://redis.io/) | - | 缓存/消息队列 | ### AI/ML技术 | 技术 | 说明 | |------|------| | RAG (检索增强生成) | 结合检索和生成,确保回答准确 | | Embeddings | 文本向量化,语义相似度计算 | | Agent | 智能代理,工具调用与任务规划 | | OCR | 光学字符识别,扫描件处理 | --- ## 快速开始 ### 环境要求 - **Node.js**: >= 20.19.0 或 >= 22.12.0 - **Python**: >= 3.10 - **MySQL**: >= 8.0 - **Milvus**: >= 2.3 - **Redis**: >= 6.0(可选) ### 后端安装 1. **克隆项目** ```bash git clone https://github.com/your-username/AgentProject.git cd AgentProject ``` 2. **创建虚拟环境** ```bash cd backend python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows ``` 3. **安装依赖** ```bash pip install -r requirements.txt ``` 4. **配置环境变量** 创建 `.env` 文件: ```env # Django配置 SECRET_KEY=your-secret-key DEBUG=True # 数据库配置 MYSQL_DATABASE=MyAgentDB MYSQL_USER=root MYSQL_PASSWORD=your-password # AI配置 DEEPSEEK_API_KEY=your-deepseek-api-key OPENAI_API_KEY=your-openai-api-key LLM_BASE_URL=https://api.deepseek.com # OSS配置(可选) OSS_ACCESS_KEY_ID=your-access-key-id OSS_ACCESS_KEY_SECRET=your-access-key-secret OSS_BUCKET_NAME=your-bucket-name OSS_ENDPOINT=your-endpoint # 邮箱配置(可选) EMAIL_HOST=smtp.qq.com EMAIL_PORT=587 EMAIL_HOST_USER=your-email@qq.com EMAIL_HOST_PASSWORD=your-email-password ``` 5. **数据库迁移** ```bash python manage.py makemigrations python manage.py migrate ``` 6. **创建超级用户** ```bash python manage.py createsuperuser ``` 7. **启动后端服务** ```bash python manage.py runserver 0.0.0.0:8000 ``` ### 前端安装 1. **进入前端目录** ```bash cd frontend ``` 2. **安装依赖** ```bash npm install ``` 3. **启动开发服务器** ```bash npm run dev ``` 4. **访问应用** 打开浏览器访问:http://localhost:5173 ### 生产环境构建 ```bash npm run build ``` 构建产物位于 `dist` 目录。 --- ## 项目结构 ``` AgentProject/ ├── backend/ # 后端项目 │ ├── agent/ # Agent模块 │ ├── analytics/ # 分析模块(合同审查) │ │ ├── models.py # 审查模型 │ │ ├── review_graph.py # LangGraph工作流 │ │ ├── views.py # 视图 │ │ └── urls.py # 路由 │ ├── backend/ # Django配置 │ │ ├── settings.py # 配置文件 │ │ ├── urls.py # 主路由 │ │ └── wsgi.py # WSGI配置 │ ├── chat/ # 对话模块 │ │ ├── chat_graph.py # 对话Agent │ │ ├── models.py # 对话模型 │ │ └── views.py # 视图 │ ├── contract/ # 合同模块 │ │ ├── models.py # 合同模型 │ │ ├── views.py # 视图 │ │ └── permissions.py # 权限 │ ├── knowledge/ # 知识库模块 │ │ ├── models.py # 法规模型 │ │ └── views.py # 视图 │ ├── user/ # 用户模块 │ │ ├── models.py # 用户模型 │ │ ├── views.py # 视图 │ │ └── permissions.py # 权限 │ ├── tools/ # 工具 │ │ └── rag_tools.py # RAG检索工具 │ ├── utils/ # 工具类 │ │ ├── ragSetting/ # RAG配置 │ │ │ ├── embeddings.py # 向量化 │ │ │ └── vector_store.py # 向量存储 │ │ ├── OCR.py # OCR工具 │ │ └── pdf_processor.py # PDF处理 │ ├── manage.py # Django管理脚本 │ └── requirements.txt # Python依赖 │ ├── frontend/ # 前端项目 │ ├── public/ # 静态资源 │ ├── src/ │ │ ├── assets/ # 资源文件 │ │ ├── components/ # 组件 │ │ ├── layout/ # 布局组件 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # 状态管理 │ │ ├── utils/ # 工具函数 │ │ ├── views/ # 页面组件 │ │ │ ├── admin/ # 管理后台 │ │ │ ├── chat/ # AI对话 │ │ │ ├── contract/ # 合同审查 │ │ │ ├── contract-compare/ # 合同对比 │ │ │ ├── contract-template/ # 合同模板 │ │ │ ├── knowledge/ # 知识库 │ │ │ └── profile/ # 用户中心 │ │ ├── App.vue # 根组件 │ │ └── main.ts # 入口文件 │ ├── index.html # HTML模板 │ ├── package.json # Node依赖 │ ├── vite.config.ts # Vite配置 │ └── tsconfig.json # TypeScript配置 │ └── README.md # 项目说明文档 ``` --- ## 核心模块 ### 1. 合同审查模块 **文件位置**: `backend/analytics/` **核心文件**: - `review_graph.py`: LangGraph工作流定义 - `models.py`: Review模型 - `views.py`: 审查API接口 **工作流程**: ```python # 文本标准化 def normalize_text_node(state: ReviewState) -> dict: # 标准化合同文本 pass # 条款分片 def chunk_node(state: ReviewState) -> dict: # 按条款分片 pass # 并行审查 def review_node(state: ReviewState) -> dict: # 并发审查各个条款 pass # 结果聚合 def aggregate_node(state: ReviewState) -> dict: # 汇总审查结果 pass ``` ### 2. AI对话模块 **文件位置**: `backend/chat/` **核心文件**: - `chat_graph.py`: 对话Agent - `models.py`: Conversation、Message模型 - `views.py`: 对话API接口 **核心功能**: ```python # 流式对话 def stream_chat(state: dict): # 流式生成回答 for chunk in llm.stream(messages): yield content # RAG检索 @tool def rag_search(query: str, collection_name: str) -> str: # 向量检索法律条文 return result ``` ### 3. 知识库模块 **文件位置**: `backend/knowledge/` **核心文件**: - `models.py`: Law、LawVersion、LawArticle模型 - `views.py`: 法规API接口 **数据模型**: ```python class Law(models.Model): name = models.CharField(max_length=200) # 法规名称 category = models.CharField(max_length=50) # 分类 content = models.TextField() # 内容 collection_name = models.CharField(max_length=100) # 向量库名称 status = models.CharField(max_length=20) # 状态 class LawArticle(models.Model): law = models.ForeignKey(Law) article_no = models.CharField(max_length=50) # 条号 content = models.TextField() # 条文内容 is_vectorized = models.BooleanField() # 是否已向量化 ``` --- ## API文档 ### 用户认证 | 接口 | 方法 | 说明 | |------|------|------| | `/api/auth/register/` | POST | 用户注册 | | `/api/auth/login/` | POST | 用户登录 | | `/api/auth/logout/` | POST | 用户登出 | | `/api/auth/refresh/` | POST | 刷新Token | | `/api/send_code/` | POST | 发送验证码 | ### 合同管理 | 接口 | 方法 | 说明 | |------|------|------| | `/api/contracts/` | GET/POST | 合同列表/创建 | | `/api/contracts/{id}/` | GET/PUT/DELETE | 合同详情/更新/删除 | | `/api/contracts/{id}/versions/` | GET | 合同版本列表 | | `/api/contracts/{id}/review/` | POST | 发起审查 | ### 审查管理 | 接口 | 方法 | 说明 | |------|------|------| | `/api/analytics/reviews/` | GET | 审查记录列表 | | `/api/analytics/reviews/{id}/` | GET | 审查详情 | | `/api/analytics/reviews/{id}/progress/` | GET | 审查进度 | | `/api/analytics/reviews/{id}/report/` | GET | 审查报告 | ### 对话管理 | 接口 | 方法 | 说明 | |------|------|------| | `/api/chat/conversations/` | GET/POST | 对话列表/创建 | | `/api/chat/conversations/{id}/` | GET/DELETE | 对话详情/删除 | | `/api/chat/stream/` | POST | 流式对话 | | `/api/chat/messages/` | GET | 消息列表 | ### 知识库管理 | 接口 | 方法 | 说明 | |------|------|------| | `/api/knowledge/laws/` | GET/POST | 法规列表/上传 | | `/api/knowledge/laws/{id}/` | GET | 法规详情 | | `/api/knowledge/laws/{id}/articles/` | GET | 法规条文 | --- ## 配置说明 ### 后端配置 **数据库配置** (`backend/backend/settings.py`): ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': os.getenv("MYSQL_DATABASE"), 'USER': os.getenv("MYSQL_USER"), 'PASSWORD': os.getenv("MYSQL_PASSWORD"), 'HOST': '127.0.0.1', 'PORT': '3306', } } ``` **JWT配置**: ```python SIMPLE_JWT = { "ACCESS_TOKEN_LIFETIME": timedelta(days=7), "REFRESH_TOKEN_LIFETIME": timedelta(days=7), "AUTH_HEADER_TYPES": ("Bearer",), } ``` **跨域配置**: ```python CORS_ALLOW_ALL_ORIGINS = True # 开发环境 # 生产环境建议指定具体域名 CORS_ALLOWED_ORIGINS = [ "http://localhost:5173", "https://your-domain.com", ] ``` ### 前端配置 **API基础路径** (`frontend/src/utils/http-axios.ts`): ```typescript const request = axios.create({ baseURL: 'http://localhost:8000/api', timeout: 30000, }) ``` **路由配置** (`frontend/src/router/index.ts`): ```typescript const router = createRouter({ history: createWebHistory(), routes: [ // 路由配置 ] }) ``` --- ## 部署指南 ### Docker部署(推荐) 1. **构建镜像** ```bash # 后端 docker build -t legal-assistant-backend ./backend # 前端 docker build -t legal-assistant-frontend ./frontend ``` 2. **使用Docker Compose** ```yaml version: '3.8' services: mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: MyAgentDB volumes: - mysql_data:/var/lib/mysql milvus: image: milvusdb/milvus:latest ports: - "19530:19530" backend: image: legal-assistant-backend ports: - "8000:8000" depends_on: - mysql - milvus frontend: image: legal-assistant-frontend ports: - "80:80" depends_on: - backend volumes: mysql_data: ``` 3. **启动服务** ```bash docker-compose up -d ``` ### 传统部署 #### 后端部署 1. **安装依赖** ```bash pip install -r requirements.txt pip install gunicorn ``` 2. **收集静态文件** ```bash python manage.py collectstatic ``` 3. **使用Gunicorn启动** ```bash gunicorn backend.wsgi:application -w 4 -b 0.0.0.0:8000 ``` #### 前端部署 1. **构建生产版本** ```bash npm run build ``` 2. **使用Nginx托管** ```nginx server { listen 80; server_name your-domain.com; location / { root /path/to/dist; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` --- ## 开发指南 ### 代码规范 **Python代码规范**: - 遵循PEP 8规范 - 使用Black格式化代码 - 使用isort排序导入 **TypeScript代码规范**: - 使用ESLint检查代码 - 使用Prettier格式化代码 - 遵循Vue官方风格指南 ### Git提交规范 ``` feat: 新功能 fix: 修复bug docs: 文档更新 style: 代码格式调整 refactor: 代码重构 test: 测试相关 chore: 构建/工具相关 ``` ### 分支管理 ``` main: 主分支(生产环境) develop: 开发分支 feature/*: 功能分支 hotfix/*: 紧急修复分支 release/*: 发布分支 ``` --- ## 常见问题 ### 1. 数据库连接失败 **问题**: `Can't connect to MySQL server` **解决方案**: - 检查MySQL服务是否启动 - 检查数据库配置是否正确 - 检查数据库用户权限 ### 2. 向量数据库连接失败 **问题**: `Milvus connection failed` **解决方案**: - 确保Milvus服务已启动 - 检查Milvus连接配置 - 检查防火墙设置 ### 3. AI模型调用失败 **问题**: `API request failed` **解决方案**: - 检查API Key是否正确 - 检查API配额是否充足 - 检查网络连接 ### 4. 前端跨域问题 **问题**: `CORS policy error` **解决方案**: - 后端配置CORS允许的域名 - 开发环境使用代理 - 生产环境使用Nginx反向代理 ### 5. 文件上传失败 **问题**: `File upload failed` **解决方案**: - 检查文件大小限制 - 检查文件格式是否支持 - 检查OSS配置(如使用) --- ## 贡献指南 我们欢迎所有形式的贡献! ### 如何贡献 1. Fork本项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交Pull Request ### 贡献类型 - 🐛 Bug修复 - ✨ 新功能开发 - 📝 文档改进 - 🎨 UI/UX优化 - ⚡️ 性能优化 - 🔧 代码重构 --- ## 许可证 本项目采用 [MIT License](LICENSE) 许可证。 --- ## 联系方式 - **项目地址**: [GitHub](https://github.com/your-username/AgentProject) - **问题反馈**: [Issues](https://github.com/your-username/AgentProject/issues) - **邮箱**: your-email@example.com --- ## 致谢 感谢以下开源项目: - [Vue.js](https://vuejs.org/) - [Django](https://www.djangoproject.com/) - [LangChain](https://python.langchain.com/) - [LangGraph](https://langchain-ai.github.io/langgraph/) - [Element Plus](https://element-plus.org/) - [Milvus](https://milvus.io/) ---
**⭐ 如果这个项目对你有帮助,请给一个Star支持一下!⭐** Made with ❤️ by Your Team