# AILAWER **Repository Path**: lavend/ailawer ## Basic Information - **Project Name**: AILAWER - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-06 - **Last Updated**: 2026-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LegalBERT FastAPI 服务 基于 FastAPI 的 LegalBERT AI 服务,提供文本分类、文本相似度和命名实体识别(NER)功能。 ## 功能特性 - **文本分类**:对法律文本进行分类 - **文本相似度**:计算两个法律文本之间的相似度 - **命名实体识别**:识别法律领域的命名实体(法条、案例、机构等) - **联网搜索真题**:自动搜索全国5年法考真题并保存到数据库 - **智能解析**:使用 LegalBERT 自动解析和结构化真题内容 - **定时更新**:后台任务定期自动更新真题库 ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置环境变量 复制 `.env.example` 为 `.env` 并根据需要修改配置: ```bash cp .env.example .env ``` ### 3. 启动服务 ```bash uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload ``` ### 4. 访问 API 文档 启动服务后,访问以下地址查看 API 文档: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ## API 端点 ### 健康检查 ``` GET /health ``` ### 文本分类 ``` POST /api/v1/classify ``` 请求体: ```json { "text": "法律文本内容" } ``` ### 文本相似度 ``` POST /api/v1/similarity ``` 请求体: ```json { "text1": "第一个法律文本", "text2": "第二个法律文本" } ``` ### 命名实体识别 ``` POST /api/v1/ner ``` 请求体: ```json { "text": "需要识别实体的法律文本" } ``` ### 搜索法考真题 ``` POST /api/v1/search/questions ``` 请求体: ```json { "years": [2019, 2020, 2021, 2022, 2023, 2024], "subjects": ["民法", "刑法", "民诉"], "max_results": 100 } ``` ### 查询题目列表 ``` GET /api/v1/questions?year=2023&subject=民法&limit=100 ``` ### 查询题目详情 ``` GET /api/v1/questions/{question_id} ``` ## 项目结构 ``` AILAWER/ ├── app/ │ ├── __init__.py │ ├── main.py # FastAPI 应用入口 │ ├── models/ # 模型相关代码 │ │ ├── __init__.py │ │ ├── legalbert.py # LegalBERT 模型加载和初始化 │ │ └── model_manager.py # 模型管理器 │ ├── services/ # 业务逻辑服务 │ │ ├── __init__.py │ │ ├── classification.py # 文本分类服务 │ │ ├── similarity.py # 文本相似度服务 │ │ ├── ner.py # NER 服务 │ │ └── search/ # 搜索相关服务 │ │ ├── __init__.py │ │ ├── web_search.py # 联网搜索服务 │ │ ├── question_parser.py # 题目解析服务(使用LegalBERT) │ │ ├── storage_service.py # 数据存储服务 │ │ ├── search_orchestrator.py # 搜索编排服务 │ │ └── background_task.py # 后台定时任务 │ ├── database/ # 数据库相关 │ │ ├── __init__.py │ │ ├── connection.py # PostgreSQL 连接管理 │ │ └── models.py # 数据库模型定义 │ ├── schemas/ # Pydantic 数据模型 │ │ ├── __init__.py │ │ └── requests.py # 请求/响应模型 │ └── config.py # 配置文件 ├── requirements.txt # Python 依赖 ├── .env.example # 环境变量示例 └── README.md # 项目说明文档 ``` ## 数据库配置 服务使用 PostgreSQL 存储真题数据。请确保: 1. PostgreSQL 已安装并运行 2. 创建数据库:`CREATE DATABASE ailawer;` 3. 在 `.env` 文件中配置数据库连接信息: ``` POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_DB=ailawer POSTGRES_USER=ailawer POSTGRES_PASSWORD=password ``` ## 后台任务 服务启动后会自动启动后台定时任务,每天凌晨2点自动搜索和更新法考真题。任务配置可在 `app/services/search/background_task.py` 中修改。 ## 注意事项 1. 首次运行时会自动下载 LegalBERT 模型,需要网络连接 2. 模型加载需要一定时间,建议在生产环境中使用 GPU 加速 3. 文本长度限制为 512 tokens,超出部分会被截断 4. 搜索功能需要网络连接,首次搜索可能需要较长时间 5. 建议在生产环境中配置搜索引擎 API 密钥以提高搜索效果 ## 开发说明 本项目使用 Python 3.8+,建议使用虚拟环境: ```bash python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows ```