422 lines
8.8 KiB
Markdown
422 lines
8.8 KiB
Markdown
|
|
# AI+合规智能中枢 - 快速部署指南
|
|||
|
|
|
|||
|
|
## 系统要求
|
|||
|
|
|
|||
|
|
- Python 3.10+
|
|||
|
|
- Docker & Docker Compose
|
|||
|
|
- 8GB+ 内存(推荐16GB)
|
|||
|
|
- 20GB+ 磁盘空间
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一、环境准备
|
|||
|
|
|
|||
|
|
### 1. 克隆项目
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git clone <project_url>
|
|||
|
|
cd Demo-glm
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 配置环境变量
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 复制配置模板
|
|||
|
|
cp .env.example .env
|
|||
|
|
|
|||
|
|
# 编辑配置文件,填入API密钥
|
|||
|
|
vim .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**必填配置项**:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# LLM配置(使用统一API代理)
|
|||
|
|
LLM_PROVIDER=qwen
|
|||
|
|
LLM_MODEL=qwen3.5-plus
|
|||
|
|
|
|||
|
|
# API密钥(通过 new-api.fletcher0516.online 代理)
|
|||
|
|
QWEN_API_KEY=your_api_key_here
|
|||
|
|
DEEPSEEK_API_KEY=your_api_key_here
|
|||
|
|
QWEN_BASE_URL=https://new-api.fletcher0516.online/v1
|
|||
|
|
DEEPSEEK_BASE_URL=https://new-api.fletcher0516.online/v1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 二、启动基础设施
|
|||
|
|
|
|||
|
|
### 1. 启动Docker服务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd docker
|
|||
|
|
docker-compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
等待服务启动完成(约30秒)。
|
|||
|
|
|
|||
|
|
### 2. 验证服务状态
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker ps
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
确认以下容器运行正常:
|
|||
|
|
- `milvus` - 向量数据库
|
|||
|
|
- `minio` - 对象存储
|
|||
|
|
- `redis` - 缓存服务
|
|||
|
|
- `postgres` - 关系数据库
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三、安装Python依赖
|
|||
|
|
|
|||
|
|
### 方式A:使用快速启动脚本(推荐)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
chmod +x quick_start.sh
|
|||
|
|
./quick_start.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
脚本自动完成:
|
|||
|
|
- 创建虚拟环境
|
|||
|
|
- 安装依赖(使用阿里云镜像)
|
|||
|
|
- 检查各服务连接状态
|
|||
|
|
|
|||
|
|
### 方式B:手动安装
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 创建虚拟环境
|
|||
|
|
python3 -m venv .venv
|
|||
|
|
source .venv/bin/activate
|
|||
|
|
|
|||
|
|
# 安装依赖
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 四、下载嵌入模型
|
|||
|
|
|
|||
|
|
BGE-M3模型约2GB,首次使用需下载。
|
|||
|
|
|
|||
|
|
### 方式A:自动下载(联网环境)
|
|||
|
|
|
|||
|
|
首次启动API时自动下载到 `~/.cache/huggingface/`
|
|||
|
|
|
|||
|
|
### 方式B:手动下载(离线环境)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 从ModelScope下载
|
|||
|
|
python -c "from modelscope import snapshot_download; snapshot_download('Xorbits/bge-m3', cache_dir='~/.cache/modelscope')"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 五、启动服务
|
|||
|
|
|
|||
|
|
### 整合启动脚本(推荐)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 赋予脚本执行权限
|
|||
|
|
chmod +x start_all.sh stop_all.sh restart_all.sh status.sh
|
|||
|
|
|
|||
|
|
# 启动所有服务(API + 前端)
|
|||
|
|
./start_all.sh
|
|||
|
|
|
|||
|
|
# 查看服务状态
|
|||
|
|
./status.sh
|
|||
|
|
|
|||
|
|
# 重启所有服务
|
|||
|
|
./restart_all.sh
|
|||
|
|
|
|||
|
|
# 停止所有服务
|
|||
|
|
./stop_all.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 单独启动(可选)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 仅启动API服务(前台运行,可调试)
|
|||
|
|
./start_api.sh
|
|||
|
|
|
|||
|
|
# 仅启动API服务(后台运行)
|
|||
|
|
./start_api_background.sh
|
|||
|
|
|
|||
|
|
# 仅停止API服务
|
|||
|
|
./stop_api.sh
|
|||
|
|
|
|||
|
|
# 仅启动前端服务
|
|||
|
|
./start_frontend.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 六、服务访问地址
|
|||
|
|
|
|||
|
|
启动成功后访问:
|
|||
|
|
|
|||
|
|
| 服务 | 地址 |
|
|||
|
|
|------|------|
|
|||
|
|
| **API服务** | http://localhost:8000 |
|
|||
|
|
| **API文档** | http://localhost:8000/docs |
|
|||
|
|
| **健康检查** | http://localhost:8000/health |
|
|||
|
|
| **前端测试页面** | http://localhost:3000 |
|
|||
|
|
|
|||
|
|
> 注意:前端测试页面通过 `http://localhost:3000` 访问,自动连接到API服务。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 七、功能测试
|
|||
|
|
|
|||
|
|
### 1. 上传文档测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8000/api/v1/documents/upload \
|
|||
|
|
-F "file=@test.pdf" \
|
|||
|
|
-F "doc_name=测试文档"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
文档上传后会自动存储到MinIO对象存储(bucket: upload-files)。
|
|||
|
|
|
|||
|
|
### 2. 下载文档测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 下载已上传的文档
|
|||
|
|
curl -O http://localhost:8000/api/v1/documents/download/{doc_id}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 检索测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8000/api/v1/knowledge/search \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"query": "机动车安全", "top_k": 10}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 智能问答测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8000/api/v1/agent/ask \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"query": "机动车安全技术检验有哪些要求?"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 多轮对话测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8000/api/v1/agent/chat \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"query": "什么是机动车安全技术检验?"}'
|
|||
|
|
|
|||
|
|
# 返回 session_id,继续对话
|
|||
|
|
curl -X POST http://localhost:8000/api/v1/agent/chat \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"query": "检验周期是多久?", "session_id": "<session_id>"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 八、脚本命令速查表
|
|||
|
|
|
|||
|
|
| 操作 | 命令 |
|
|||
|
|
|------|------|
|
|||
|
|
| **启动所有服务** | `./start_all.sh` |
|
|||
|
|
| **停止所有服务** | `./stop_all.sh` |
|
|||
|
|
| **重启所有服务** | `./restart_all.sh` |
|
|||
|
|
| **查看服务状态** | `./status.sh` |
|
|||
|
|
| 查看API日志 | `tail -f logs/api.log` |
|
|||
|
|
| 查看前端日志 | `tail -f logs/frontend.log` |
|
|||
|
|
| 环境初始化 | `./quick_start.sh` |
|
|||
|
|
| 重启Docker | `cd docker && docker-compose restart` |
|
|||
|
|
| 下载嵌入模型 | `./download_model.sh` |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 九、服务状态检查
|
|||
|
|
|
|||
|
|
运行状态检查脚本:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
./status.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
输出示例:
|
|||
|
|
```
|
|||
|
|
========================================
|
|||
|
|
AI+合规智能中枢 - 服务状态
|
|||
|
|
========================================
|
|||
|
|
|
|||
|
|
API服务:
|
|||
|
|
状态: 运行中 ✓
|
|||
|
|
PID: 12345
|
|||
|
|
健康检查: 正常 ✓
|
|||
|
|
地址: http://localhost:8000
|
|||
|
|
|
|||
|
|
前端服务:
|
|||
|
|
状态: 运行中 ✓
|
|||
|
|
PID: 12346
|
|||
|
|
地址: http://localhost:3000
|
|||
|
|
|
|||
|
|
Docker服务:
|
|||
|
|
milvus: 运行中 ✓
|
|||
|
|
minio: 运行中 ✓
|
|||
|
|
redis: 运行中 ✓
|
|||
|
|
postgres: 运行中 ✓
|
|||
|
|
|
|||
|
|
========================================
|
|||
|
|
所有服务正常运行 ✓
|
|||
|
|
========================================
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十、常见问题
|
|||
|
|
|
|||
|
|
### Q1: Milvus连接失败
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查Milvus状态
|
|||
|
|
docker logs milvus
|
|||
|
|
|
|||
|
|
# 重启Milvus
|
|||
|
|
docker restart milvus
|
|||
|
|
|
|||
|
|
# 等待30秒后再启动服务
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Q2: 模型下载慢/失败
|
|||
|
|
|
|||
|
|
使用ModelScope镜像:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
export HF_ENDPOINT=https://hf-mirror.com
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
或手动下载:
|
|||
|
|
```bash
|
|||
|
|
python -c "from modelscope import snapshot_download; snapshot_download('Xorbits/bge-m3')"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Q3: LLM调用失败
|
|||
|
|
|
|||
|
|
检查 `.env` 中API密钥配置:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 验证配置
|
|||
|
|
cat .env | grep API_KEY
|
|||
|
|
|
|||
|
|
# 确保base_url正确
|
|||
|
|
cat .env | grep BASE_URL
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Q4: 端口被占用
|
|||
|
|
|
|||
|
|
修改 `.env` 中的端口配置:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
API_PORT=8001
|
|||
|
|
FRONTEND_PORT=3001
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Q5: 服务无法停止
|
|||
|
|
|
|||
|
|
强制清理:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查找并停止所有相关进程
|
|||
|
|
pkill -f uvicorn
|
|||
|
|
pkill -f http.server
|
|||
|
|
|
|||
|
|
# 清理PID文件
|
|||
|
|
rm -f logs/*.pid
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十一、目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Demo-glm/
|
|||
|
|
├── src/
|
|||
|
|
│ ├── api/ # FastAPI接口
|
|||
|
|
│ │ ├── main.py # API入口
|
|||
|
|
│ │ └── routes/
|
|||
|
|
│ │ ├── documents.py # 文档上传
|
|||
|
|
│ │ ├── knowledge.py # 知识检索
|
|||
|
|
│ │ └── agent.py # 智能问答
|
|||
|
|
│ ├── services/ # 核心服务
|
|||
|
|
│ │ ├── llm/ # LLM调用(Qwen/DeepSeek)
|
|||
|
|
│ │ ├── rag/ # RAG检索
|
|||
|
|
│ │ ├── agent/ # 问答Agent
|
|||
|
|
│ │ ├── parser/ # 文档解析
|
|||
|
|
│ │ ├── embedding/ # 向量嵌入(BGE-M3)
|
|||
|
|
│ │ └── storage/ # Milvus存储
|
|||
|
|
│ └── config/ # 配置管理
|
|||
|
|
├── frontend/ # 前端测试页面
|
|||
|
|
│ └── index.html # 测试界面
|
|||
|
|
├── docker/ # Docker配置
|
|||
|
|
│ └── docker-compose.yml
|
|||
|
|
├── logs/ # 运行日志
|
|||
|
|
│ ├── api.log
|
|||
|
|
│ └── frontend.log
|
|||
|
|
├── tests/ # 测试脚本
|
|||
|
|
├── .env # 环境配置
|
|||
|
|
├── .env.example # 配置模板
|
|||
|
|
├── requirements.txt # Python依赖
|
|||
|
|
├── quick_start.sh # 环境初始化脚本
|
|||
|
|
├── start_all.sh # 整合启动脚本
|
|||
|
|
├── stop_all.sh # 整合停止脚本
|
|||
|
|
├── restart_all.sh # 重启脚本
|
|||
|
|
├── status.sh # 状态检查脚本
|
|||
|
|
├── start_api.sh # 单独启动API
|
|||
|
|
├── start_frontend.sh # 单独启动前端
|
|||
|
|
└── QUICK_DEPLOY.md # 本文档
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十二、API接口清单
|
|||
|
|
|
|||
|
|
| 接口 | 路径 | 方法 | 功能 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| 上传文档 | `/api/v1/documents/upload` | POST | 上传PDF/DOCX |
|
|||
|
|
| 下载文档 | `/api/v1/documents/download/{doc_id}` | GET | 下载原文PDF/DOCX |
|
|||
|
|
| 文档列表 | `/api/v1/documents/list` | GET | 列出已上传文档 |
|
|||
|
|
| 检索知识 | `/api/v1/knowledge/search` | POST | 向量检索 |
|
|||
|
|
| 单次问答 | `/api/v1/agent/ask` | POST | 智能问答 |
|
|||
|
|
| 多轮对话 | `/api/v1/agent/chat` | POST | 会话对话 |
|
|||
|
|
| 会话信息 | `/api/v1/agent/session/{id}` | GET | 获取会话 |
|
|||
|
|
| 删除会话 | `/api/v1/agent/session/{id}` | DELETE | 删除会话 |
|
|||
|
|
| Prompt模板 | `/api/v1/agent/templates` | GET | 模板列表 |
|
|||
|
|
| 可用模型 | `/api/v1/agent/models` | GET | LLM模型列表 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 十三、支持的LLM模型
|
|||
|
|
|
|||
|
|
通过统一API代理 `https://new-api.fletcher0516.online/v1` 支持:
|
|||
|
|
|
|||
|
|
**Qwen系列**:
|
|||
|
|
- `qwen3.5-plus` (推荐)
|
|||
|
|
- `qwen3-plus`
|
|||
|
|
- `qwen-max`
|
|||
|
|
- `qwen-turbo`
|
|||
|
|
- `qwen-long`
|
|||
|
|
|
|||
|
|
**Qwen VL系列**(多模态):
|
|||
|
|
- `qwen3-vl-plus`
|
|||
|
|
- `qwen-vl-max`
|
|||
|
|
|
|||
|
|
**DeepSeek系列**:
|
|||
|
|
- `deepseek-v3.2` (推荐)
|
|||
|
|
- `deepseek-v3`
|
|||
|
|
- `deepseek-chat`
|
|||
|
|
- `deepseek-coder`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 技术支持
|
|||
|
|
|
|||
|
|
- API文档:http://localhost:8000/docs
|
|||
|
|
- 问题反馈:提交Issue到项目仓库
|