# ruoyi-ai
**Repository Path**: mozf/ruoyi-ai
## Basic Information
- **Project Name**: ruoyi-ai
- **Description**: 基于 RuoYi 框架 的企业级 AI 助手管理系统,提供统一的接口管理多家 AI 厂商(DeepSeek、OpenAI 等),实现模型配置、API 密钥轮询、对话计费、流量控制等核心功能。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2026-04-18
- **Last Updated**: 2026-05-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ruoyi-ai智能助手管理平台






**基于 RuoYi 框架的智能助手管理平台 | 多厂商AI接入 | 流式对话 | 费用统计**
---
## 📖 项目简介
智能助手管理平台是一个基于 **RuoYi 框架** 的企业级 AI 助手管理系统。它提供统一的接口来管理多家 AI 厂商(DeepSeek、OpenAI 等),实现模型配置、API 密钥轮询、对话计费、流量控制等核心功能。
### ✨ 核心特性
- 🤖 **多厂商接入**:支持 DeepSeek、OpenAI 等主流 AI 厂商,轻松扩展
- 💬 **流式对话**:SSE 技术实现逐字输出,用户体验更流畅
- 💰 **精确计费**:基于 Token 的自动费用计算,成本透明可控
- 🔄 **多 Key 轮询**:支持多 API 密钥配置,自动加权轮询,提高可用性
- ⚡ **多级缓存**:Caffeine + Redis 双层缓存,提升响应速度
- 📊 **完整监控**:调用次数、Token 消耗、费用统计,数据一目了然
- 🎨 **开箱即用**:完整的后台管理页面,无需额外开发
- 🔐 **安全可靠**:API 密钥加密存储,权限控制完善
---
## 🏗️ 系统架构
```
┌─────────────────────────────────────────────────────────────┐
│ 智能助手管理平台 │
├─────────────────────────────────────────────────────────────┤
│ Controller层 │
├─────────────────────────────────────────────────────────────┤
│ Service层 │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 核心业务编排 (AiChatService) │ │
│ └──────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Manager层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │厂商管理 │ │模型管理 │ │API配置 │ │助手配置 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └──────────────┴──────────────┴──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Infrastructure层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Redis │ │Caffeine │ │ MySQL │ │ MQ │ │
│ │ 缓存/限流│ │本地缓存 │ │ 主存储 │ │异步日志 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
```
---
## 📦 技术栈
### 后端
| 技术 | 版本 | 说明 |
| ----------- | ------ | ---------- |
| Java | 17+ | 核心语言 |
| Spring Boot | 3.x | 基础框架 |
| MyBatis | 3.x | ORM 框架 |
| Redis | 7.0+ | 分布式缓存 |
| Caffeine | 3.x | 本地缓存 |
| Jasypt | 3.x | 加密工具 |
| Maven | 3.8+ | 构建工具 |
### 前端
| 技术 | 版本 | 说明 |
| ------------ | ----- | ------------- |
| Vue | 3.0+ | 前端框架 |
| TypeScript | 5.0+ | 类型系统 |
| Element Plus | 2.3+ | UI 组件库 |
| ECharts | 5.4+ | 图表库 |
| markdown-it | 14.0+ | Markdown 渲染 |
---
## 🚀 快速开始
### 环境要求
- JDK 17 或更高版本
- MySQL 8.0 或更高版本
- Redis 7.0 或更高版本
- Node.js 18+ (前端开发)
### 后端启动
1. 导入数据库脚本 `sql/ruoyi-ai.sql`
2. 修改 `ruoyi-admin/src/main/resources/application.yml` 配置数据库和Redis连接
3. 运行 `RuoYiApplication.java` 启动后端服务
### 前端启动
```bash
# 进入前端目录
cd ruoyi-ui-ts
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 访问 http://localhost:80
```
---
## 📚 模块说明
### 1. 厂商管理 (`/ai/factory`)
管理 AI 服务提供商,支持:
- 增删改查厂商信息
- 配置厂商编码(如 openai、deepseek)
- 显示顺序调整
### 2. 模型管理 (`/ai/model`)
配置具体的 AI 模型,支持:
- 模型名称与编码
- 输入/输出价格(每千 token)
- 最大上下文长度
- 按厂商筛选
### 3. API 配置管理 (`/ai/apiconfig`)
管理 API 密钥,支持:
- 多密钥配置(主 Key、备用 Key)
- 权重轮询策略
- 每分钟请求限流
- 密钥加密存储(Jasypt)
### 4. 助手管理 (`/ai/assistant`)
创建和管理 AI 助手,支持:
- 绑定模型和 API 配置
- 系统提示词设置
- 温度参数、最大 Token 调整
- 启用/停用状态
### 5. AI 对话 (`/ai/chat`)
核心对话功能,支持:
- 普通对话模式
- 流式对话模式(SSE)
- 历史上下文管理
- Token 费用计算
- 异步日志保存
### 6. 对话消息 (`/ai/chat/message`)
消息管理功能,支持:
- 会话列表查看
- 对话详情查询
- Token 使用统计
- 费用报表(图表展示)
- 分表管理
---
## 🔌 支持的厂商
| 厂商 | 编码 | 模型示例 | 状态 |
| -------- | ---------- | -------------------------------- | -------- |
| DeepSeek | `deepseek` | deepseek-chat, deepseek-reasoner | ✅ 已测试 |
| OpenAI | `openai` | gpt-3.5-turbo, gpt-4 | ✅ 兼容 |
---
## 📊 数据库设计
### 核心表结构
| 表名 | 说明 |
| ------------------------- | ---------------------- |
| `ai_factory` | 厂商表 |
| `ai_model` | 模型表 |
| `ai_api_config` | API 配置表 |
| `ai_assistant` | 助手表 |
| `ai_chat_message_YYYY_MM` | 对话消息表(按月分表) |
### 分表策略
对话消息表按月份自动分表:
- 表名格式:`ai_chat_message_2026_03`
- 支持动态创建新表
- 定时任务自动创建下月表
---
## 🎯 核心 API
### 对话接口
```http
# 普通对话
POST /ai/chat/send
Content-Type: application/json
{
"sessionId": "test-session",
"assistantCode": "test01",
"message": "你好"
}
# 流式对话
POST /ai/chat/stream
Content-Type: application/json
{
"sessionId": "test-session",
"assistantCode": "test01",
"message": "你好",
"stream": true
}
```
### 管理接口
| 模块 | 接口 | 说明 |
| -------- | -------------------- | -------------------- |
| 厂商 | `/ai/factory/*` | 增删改查、导出 |
| 模型 | `/ai/model/*` | 增删改查、按厂商筛选 |
| API配置 | `/ai/apiconfig/*` | 增删改查、可用配置 |
| 助手 | `/ai/assistant/*` | 增删改查、状态切换 |
| 对话消息 | `/ai/chat/message/*` | 历史查询、统计报表 |
---
## 📸 界面预览
### 厂商管理

### 模型管理

### API配置管理

### 助手管理

### AI对话

### 统计报表

---
## 🛠️ 配置说明
### application.yml 关键配置
```yaml
# Jasypt 加密配置
jasypt:
encryptor:
password: ${JASYPT_PASSWORD:ruoyiAI2026}
algorithm: PBEWithMD5AndDES
iv-generator-classname: org.jasypt.iv.NoIvGenerator
string-output-type: base64
```
---
## 🔧 常见问题
### Q: API 密钥如何加密?
A: 系统使用 Jasypt 自动加密,只需在界面上输入明文密钥,保存时会自动加密存储。
### Q: 如何添加新的 AI 厂商?
A: 在厂商表中添加记录,然后实现 `AiModelAdapter` 接口即可。如果接口格式与 OpenAI 兼容,可直接复用 `OpenAiAdapter`。
### Q: 流式对话不显示?
A: 检查后端 SSE 配置,确保 `produces = MediaType.TEXT_EVENT_STREAM_VALUE`。
### Q: 费用统计不准确?
A: 检查模型表中的价格配置是否正确(单位:元/千 token)。
---
## 📄 许可证
本项目基于 MIT 许可证开源,详情请查看 [LICENSE](LICENSE) 文件。
---
## 🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
1. Fork 本项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交 Pull Request
---
## 📧 联系方式
- 项目主页:[Gitee](https://gitee.com/creepzzart/ruoyi-ai)
- 问题反馈:https://gitee.com/creepzzart/ruoyi-ai/issues
- 邮箱:2765077488@qq.com
---
## 🌟 致谢
- [RuoYi](https://gitee.com/y_project/RuoYi) - 优秀的 Java 后台管理系统
- [DeepSeek](https://deepseek.com/) - 强大的 AI 模型
- [Element Plus](https://element-plus.org/) - Vue 3 组件库
---
Built with ❤️ by CreepZz