2026-02-25 17:24:40 +00:00
|
|
|
|
# AI Robot Core
|
2026-02-24 04:05:29 +00:00
|
|
|
|
|
2026-02-25 17:24:40 +00:00
|
|
|
|
AI中台业务的能力支撑,提供智能客服、RAG知识库检索、LLM对话等核心能力。
|
|
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
ai-robot-core/
|
|
|
|
|
|
├── ai-service/ # Python 后端服务
|
|
|
|
|
|
│ ├── app/ # FastAPI 应用
|
|
|
|
|
|
│ ├── tests/ # 测试用例
|
|
|
|
|
|
│ ├── Dockerfile # 后端镜像
|
|
|
|
|
|
│ └── pyproject.toml # Python 依赖
|
|
|
|
|
|
├── ai-service-admin/ # Vue 前端管理界面
|
|
|
|
|
|
│ ├── src/ # Vue 源码
|
|
|
|
|
|
│ ├── Dockerfile # 前端镜像
|
|
|
|
|
|
│ ├── nginx.conf # Nginx 配置
|
|
|
|
|
|
│ └── package.json # Node 依赖
|
|
|
|
|
|
├── docker-compose.yaml # 容器编排
|
|
|
|
|
|
├── .env.example # 环境变量示例
|
|
|
|
|
|
└── README.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
|
|
- **多租户支持**: 通过 X-Tenant-Id 头实现租户隔离
|
|
|
|
|
|
- **RAG 知识库**: 基于 Qdrant 的向量检索增强生成
|
|
|
|
|
|
- **LLM 集成**: 支持 OpenAI、DeepSeek、Ollama 等多种 LLM 提供商
|
|
|
|
|
|
- **SSE 流式输出**: 支持 Server-Sent Events 实时响应
|
|
|
|
|
|
- **置信度评估**: 自动评估回复质量,低置信度时建议转人工
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 环境要求
|
|
|
|
|
|
|
|
|
|
|
|
- Docker 20.10+
|
|
|
|
|
|
- Docker Compose 2.0+
|
|
|
|
|
|
|
|
|
|
|
|
### 部署步骤
|
|
|
|
|
|
|
|
|
|
|
|
#### 1. 克隆代码
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git clone http://49.232.209.156:3005/MerCry/ai-robot-core.git
|
|
|
|
|
|
cd ai-robot-core
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 2. 配置环境变量
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cp .env.example .env
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
编辑 `.env` 文件,配置 LLM API:
|
|
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
|
# OpenAI 配置
|
|
|
|
|
|
AI_SERVICE_LLM_PROVIDER=openai
|
|
|
|
|
|
AI_SERVICE_LLM_API_KEY=your-openai-api-key
|
|
|
|
|
|
AI_SERVICE_LLM_BASE_URL=https://api.openai.com/v1
|
|
|
|
|
|
AI_SERVICE_LLM_MODEL=gpt-4o-mini
|
|
|
|
|
|
|
|
|
|
|
|
# 或使用 DeepSeek
|
2026-02-25 17:39:46 +00:00
|
|
|
|
# AI_SERVICE_LLM_PROVIDER=deepseek
|
2026-02-25 17:24:40 +00:00
|
|
|
|
# AI_SERVICE_LLM_API_KEY=your-deepseek-api-key
|
|
|
|
|
|
# AI_SERVICE_LLM_MODEL=deepseek-chat
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 3. 启动服务
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-02-25 17:39:46 +00:00
|
|
|
|
# Docker Compose V2 (推荐,Docker 内置)
|
|
|
|
|
|
docker compose up -d --build
|
|
|
|
|
|
|
|
|
|
|
|
# 或 Docker Compose V1 (旧版,需要单独安装)
|
2026-02-25 17:24:40 +00:00
|
|
|
|
docker-compose up -d --build
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-02-25 17:28:08 +00:00
|
|
|
|
#### 4. 拉取嵌入模型
|
|
|
|
|
|
|
|
|
|
|
|
服务启动后,需要在 Ollama 容器中拉取 nomic-embed-text 模型:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 进入 Ollama 容器拉取模型
|
|
|
|
|
|
docker exec -it ai-ollama ollama pull nomic-embed-text
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 5. 验证服务
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 检查服务状态
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose ps
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 查看后端日志
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose logs -f ai-service
|
2026-02-25 17:24:40 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-02-25 17:28:08 +00:00
|
|
|
|
#### 6. 访问服务
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
| 服务 | 地址 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
2026-02-25 17:42:43 +00:00
|
|
|
|
| 前端管理界面 | http://服务器IP:8181 | Vue 管理后台 |
|
2026-02-25 17:46:24 +00:00
|
|
|
|
| 后端 API | http://服务器IP:8182 | FastAPI 服务(Java渠道侧调用) |
|
|
|
|
|
|
| API 文档 | http://服务器IP:8182/docs | Swagger UI |
|
2026-02-25 17:24:40 +00:00
|
|
|
|
| Qdrant 控制台 | http://服务器IP:6333/dashboard | 向量数据库管理 |
|
2026-02-25 17:28:08 +00:00
|
|
|
|
| Ollama API | http://服务器IP:11434 | 嵌入模型服务 |
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
2026-02-25 17:46:24 +00:00
|
|
|
|
> **端口说明**:
|
|
|
|
|
|
> - `8181`: 前端管理界面,内部代理后端 API
|
|
|
|
|
|
> - `8182`: 后端 API,供 Java 渠道侧直接调用
|
2026-02-25 17:42:43 +00:00
|
|
|
|
|
2026-02-25 17:24:40 +00:00
|
|
|
|
## 服务架构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ 用户访问 │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────┘
|
|
|
|
|
|
│
|
|
|
|
|
|
▼
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────┐
|
2026-02-25 17:42:43 +00:00
|
|
|
|
│ ai-service-admin (端口8181) │
|
2026-02-25 17:24:40 +00:00
|
|
|
|
│ - Nginx 静态文件服务 │
|
|
|
|
|
|
│ - 反向代理 /api/* → ai-service:8080 │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────┘
|
|
|
|
|
|
│
|
|
|
|
|
|
▼
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ ai-service (端口8080) │
|
|
|
|
|
|
│ - FastAPI 后端服务 │
|
|
|
|
|
|
│ - RAG / LLM / 知识库管理 │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────┘
|
2026-02-25 17:28:08 +00:00
|
|
|
|
│ │ │
|
|
|
|
|
|
▼ ▼ ▼
|
|
|
|
|
|
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
|
|
|
|
|
|
│ PostgreSQL │ │ Qdrant │ │ Ollama │
|
|
|
|
|
|
│ (端口5432) │ │ (端口6333) │ │ (端口11434) │
|
|
|
|
|
|
│ - 会话存储 │ │ - 向量存储 │ │ - nomic-embed │
|
|
|
|
|
|
│ - 知识库元数据 │ │ - 文档索引 │ │ - 嵌入模型 │
|
|
|
|
|
|
└──────────────────┘ └──────────────────┘ └──────────────────┘
|
2026-02-25 17:24:40 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 常用命令
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 启动所有服务
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose up -d
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 重新构建并启动
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose up -d --build
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 查看服务状态
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose ps
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 查看日志
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose logs -f ai-service
|
|
|
|
|
|
docker compose logs -f ai-service-admin
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 重启服务
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose restart ai-service
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 停止所有服务
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose down
|
2026-02-25 17:24:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 停止并删除数据卷(清空数据)
|
2026-02-25 17:39:46 +00:00
|
|
|
|
docker compose down -v
|
2026-02-25 17:24:40 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-02-25 17:42:43 +00:00
|
|
|
|
## 宿主机 Nginx 配置(可选)
|
|
|
|
|
|
|
|
|
|
|
|
如果需要通过宿主机 Nginx 统一管理入口(配置域名、SSL证书),可参考 `deploy/nginx.conf.example`:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 复制配置文件
|
|
|
|
|
|
sudo cp deploy/nginx.conf.example /etc/nginx/conf.d/ai-service.conf
|
|
|
|
|
|
|
|
|
|
|
|
# 修改配置中的域名
|
|
|
|
|
|
sudo vim /etc/nginx/conf.d/ai-service.conf
|
|
|
|
|
|
|
|
|
|
|
|
# 测试配置
|
|
|
|
|
|
sudo nginx -t
|
|
|
|
|
|
|
|
|
|
|
|
# 重载 Nginx
|
|
|
|
|
|
sudo nginx -s reload
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-02-25 17:24:40 +00:00
|
|
|
|
## 本地开发
|
|
|
|
|
|
|
|
|
|
|
|
### 后端开发
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd ai-service
|
|
|
|
|
|
|
|
|
|
|
|
# 创建虚拟环境
|
|
|
|
|
|
python -m venv .venv
|
|
|
|
|
|
source .venv/bin/activate # Linux/Mac
|
|
|
|
|
|
# .venv\Scripts\activate # Windows
|
|
|
|
|
|
|
|
|
|
|
|
# 安装依赖
|
|
|
|
|
|
pip install -e ".[dev]"
|
|
|
|
|
|
|
|
|
|
|
|
# 启动开发服务器
|
|
|
|
|
|
uvicorn app.main:app --reload --port 8000
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 前端开发
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd ai-service-admin
|
|
|
|
|
|
|
|
|
|
|
|
# 安装依赖
|
|
|
|
|
|
npm install
|
|
|
|
|
|
|
|
|
|
|
|
# 启动开发服务器
|
|
|
|
|
|
npm run dev
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## API 接口
|
|
|
|
|
|
|
|
|
|
|
|
### 核心接口
|
|
|
|
|
|
|
|
|
|
|
|
| 接口 | 方法 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| `/ai/chat` | POST | AI 对话接口 |
|
|
|
|
|
|
| `/admin/kb` | GET/POST | 知识库管理 |
|
|
|
|
|
|
| `/admin/rag/experiments/run` | POST | RAG 实验室 |
|
|
|
|
|
|
| `/admin/llm/config` | GET/PUT | LLM 配置 |
|
|
|
|
|
|
| `/admin/embedding/config` | GET/PUT | 嵌入模型配置 |
|
|
|
|
|
|
|
|
|
|
|
|
详细 API 文档请访问 http://服务器IP:8080/docs
|
|
|
|
|
|
|
|
|
|
|
|
## 环境变量说明
|
|
|
|
|
|
|
|
|
|
|
|
| 变量名 | 默认值 | 说明 |
|
|
|
|
|
|
|--------|--------|------|
|
|
|
|
|
|
| `AI_SERVICE_LLM_PROVIDER` | openai | LLM 提供商 |
|
|
|
|
|
|
| `AI_SERVICE_LLM_API_KEY` | - | API 密钥 |
|
|
|
|
|
|
| `AI_SERVICE_LLM_BASE_URL` | https://api.openai.com/v1 | API 地址 |
|
|
|
|
|
|
| `AI_SERVICE_LLM_MODEL` | gpt-4o-mini | 模型名称 |
|
|
|
|
|
|
| `AI_SERVICE_DATABASE_URL` | postgresql+asyncpg://... | 数据库连接 |
|
|
|
|
|
|
| `AI_SERVICE_QDRANT_URL` | http://qdrant:6333 | Qdrant 地址 |
|
|
|
|
|
|
| `AI_SERVICE_LOG_LEVEL` | INFO | 日志级别 |
|
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
|
|
MIT
|