# Chatgpt_backend
**Repository Path**: wx6765/chatgpt_backend
## Basic Information
- **Project Name**: Chatgpt_backend
- **Description**: chatgpt项目后端
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://blog.ybyq.wang/archives/1154.html
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-09-23
- **Last Updated**: 2025-09-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# GPT AI 后端服务
基于Spring Boot 3.5.5的GPT AI聊天应用后端服务,集成OpenAI、阿里云通义千问、DeepSeek、豆包、Kimi等多个主流AI平台,支持流式对话、图像生成、用户认证、管理员面板等功能。
## 🚀 项目特性
- **多AI平台支持**: 集成OpenAI GPT-4、阿里云通义千问、DeepSeek、豆包、Kimi等主流AI平台
- **流式对话**: 基于Server-Sent Events (SSE)的实时流式响应
- **图像生成**: 支持DALL-E和通义万相图像生成
- **用户系统**: 用户注册、登录、会话管理、用户统计
- **管理员面板**: 完整的后台管理功能,用户管理、使用统计
- **数据持久化**: SQLite数据库存储对话历史、用户数据、使用统计
- **跨域支持**: 完善的CORS配置
- **RESTful API**: 标准的REST接口设计
- **使用统计**: 详细的用户使用情况和数据分析
## 📋 技术栈
- **框架**: Spring Boot 3.5.5
- **Java版本**: Java 17
- **数据库**: SQLite
- **ORM**: Spring Data JPA / Hibernate
- **构建工具**: Maven
- **AI平台**: OpenAI API, 阿里云DashScope, DeepSeek API, 豆包API, Kimi API
## 🏗️ 项目结构
```
src/main/java/com/ligong/gptai/
├── GptAiApplication.java # 应用启动类
├── config/ # 配置类
│ ├── CorsConfig.java # 跨域配置
│ └── WebConfig.java # Web配置和HTTP客户端
├── controller/ # 控制器层
│ ├── AiController.java # AI服务统一入口
│ ├── AliAiController.java # 阿里云AI控制器
│ ├── OpenAiController.java # OpenAI控制器
│ ├── AdminController.java # 管理员控制器
│ └── UserController.java # 用户控制器
├── service/ # 服务层
│ ├── AliAIService.java # 阿里云AI服务
│ ├── OpenAIService.java # OpenAI服务
│ ├── DeepSeekAIService.java # DeepSeek AI服务
│ ├── DoubaoAIService.java # 豆包AI服务
│ ├── KimiService.java # Kimi AI服务
│ ├── ConversationService.java # 会话服务
│ └── UserStatisticsService.java # 用户统计服务
├── entity/ # 实体类
│ ├── User.java # 用户实体
│ ├── ConversationHistory.java # 对话历史实体
│ ├── DailyUsage.java # 日使用量实体
│ └── UserStatistics.java # 用户统计实体
├── repository/ # 数据访问层
│ ├── UserRepository.java # 用户仓库
│ ├── ConversationHistoryRepository.java # 对话历史仓库
│ ├── DailyUsageRepository.java # 日使用量仓库
│ └── UserStatisticsRepository.java # 用户统计仓库
├── dto/ # 数据传输对象
│ ├── ChatMessage.java # 聊天消息
│ ├── ChatMessageStream.java # 流式消息
│ └── ChatImage.java # 图像消息
└── adopter/ # 适配器模式
├── IAIServiceAdopter.java # AI服务适配器接口
├── OpenAiServiceAdopter.java # OpenAI适配器
├── AliAiServiceAdopter.java # 阿里云适配器
├── DeepSeekAiServiceAdopter.java # DeepSeek适配器
├── DoubaoAiServiceAdopter.java # 豆包适配器
└── KimiServiceAdopter.java # Kimi适配器
```
## 🛠️ 环境要求
- **Java**: 17+
- **Maven**: 3.6+
- **内存**: 建议2GB+
- **存储**: 100MB+
## ⚙️ 配置说明
### application.yaml
```yaml
server:
port: 8083 # 服务端口
spring:
application:
name: gpt-ai
datasource:
url: jdbc:sqlite:identifier.sqlite
driver-class-name: org.sqlite.JDBC
username:
password:
jpa:
hibernate:
ddl-auto: update # 自动更新数据库表结构
database-platform: org.hibernate.community.dialect.SQLiteDialect
```
### API密钥配置
**重要**: 生产环境请使用环境变量或配置中心管理API密钥,不要硬编码在代码中。
修改 `WebConfig.java` 中的API密钥:
```java
// OpenAI API Key
request.getHeaders().setBearerAuth("your-openai-api-key");
// 阿里云DashScope API Key
request.getHeaders().set("Authorization", "Bearer your-dashscope-api-key");
```
## 🚀 快速开始
### 1. 克隆项目
```bash
git clone https://gitee.com/wx6765/chatgpt_backend.git
cd chatgpt_backend
```
### 2. 配置API密钥
编辑 `src/main/java/com/ligong/gptai/config/WebConfig.java`,替换为您的API密钥。
### 3. 运行项目
#### 开发环境
```bash
# Maven方式运行
mvn spring-boot:run
# 或者使用IDE直接运行 GptAiApplication.java
```
#### 生产环境
```bash
# 打包
mvn clean package -DskipTests
# 运行JAR包
java -jar target/gpt-ai-0.0.1-SNAPSHOT.jar
```
### 4. 验证服务
访问 `http://localhost:8083`,如果看到Spring Boot默认页面说明服务启动成功。
## 📡 API接口文档
### 文本对话接口
#### 流式对话 (SSE)
```http
GET /api/ai/chat/text/stream?platform=openai&model=gpt-4o-mini&message=你好
```
**参数说明:**
- `platform`: AI平台 (`openai` | `ali` | `deepseek` | `doubao` | `kimi`)
- `model`: 模型名称
- `message`: 用户消息
- `userId`: 用户ID (可选)
- `sessionId`: 会话ID (可选)
**响应格式:**
```javascript
// SSE事件流
event: delta
data: {"delta": "你"}
event: delta
data: {"delta": "好"}
event: done
data: [DONE]
```
### 图像生成接口
#### 生成图像
```http
POST /api/ai/create/image
Content-Type: application/json
{
"platform": "openai",
"model": "dall-e-3",
"prompt": "一只可爱的小猫",
"size": "1024x1024"
}
```
**响应:**
```json
{
"id": "img_123",
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
```
### 用户认证接口
#### 用户登录
```http
POST /api/user/login
Content-Type: application/json
{
"username": "user123",
"password": "password123"
}
```
### 会话管理接口
#### 获取用户会话列表
```http
GET /api/ai/conversation/sessions?userId=user123
```
#### 获取对话历史
```http
GET /api/ai/conversation/history?sessionId=session123&userId=user123
```
### 管理员接口
#### 获取所有用户
```http
GET /api/admin/users
```
#### 获取用户统计信息
```http
GET /api/admin/user-stats
```
#### 获取系统使用统计
```http
GET /api/admin/usage-stats
```
### 用户统计接口
#### 获取用户个人统计
```http
GET /api/user/stats?userId=user123
```
#### 获取用户使用历史
```http
GET /api/user/usage-history?userId=user123
```
## 🔧 开发指南
### 添加新的AI平台
1. **创建适配器类**
```java
@Component
public class NewAiServiceAdopter implements IAIServiceAdopter {
// 实现接口方法
}
```
2. **创建控制器**
```java
@RestController
@RequestMapping("/api/newai")
public class NewAiController {
// 实现API端点
}
```
3. **在AiController中添加路由**
```java
if ("newai".equals(platform)) {
return newAiController.sendTextStream(model, message);
}
```
### 支持的AI平台配置
项目目前支持以下AI平台,每个平台都需要相应的API密钥配置:
1. **OpenAI**: GPT-4, GPT-3.5, DALL-E等模型
2. **阿里云通义千问**: 通义千问系列模型和通义万相图像生成
3. **DeepSeek**: DeepSeek-Chat等模型
4. **豆包**: 字节跳动的AI模型
5. **Kimi**: Moonshot AI的长文本模型
### 数据库表结构
项目使用以下主要数据表:
- `users`: 用户基本信息
- `conversation_history`: 对话历史记录
- `daily_usage`: 用户每日使用统计
- `user_statistics`: 用户累计统计信息
### 数据库迁移
项目使用JPA自动建表,首次运行会自动创建所需表结构。如需手动控制,可修改:
```yaml
spring:
jpa:
hibernate:
ddl-auto: none # 关闭自动建表
```
### 日志配置
默认使用Spring Boot的日志配置。如需自定义,可添加 `logback-spring.xml`:
```xml
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
```
## 🚀 部署指南
### Docker部署
创建 `Dockerfile`:
```dockerfile
FROM openjdk:17-jdk-alpine
VOLUME /tmp
COPY target/gpt-ai-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
```
构建和运行:
```bash
docker build -t gpt-ai-backend .
docker run -p 8083:8083 gpt-ai-backend
```
### 系统服务部署
创建systemd服务文件 `/etc/systemd/system/gpt-ai.service`:
```ini
[Unit]
Description=GPT AI Backend Service
After=network.target
[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/java -jar /path/to/gpt-ai-0.0.1-SNAPSHOT.jar
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
```
启动服务:
```bash
sudo systemctl daemon-reload
sudo systemctl enable gpt-ai
sudo systemctl start gpt-ai
```
### 反向代理配置
Nginx配置示例:
```nginx
location /api/ {
proxy_pass http://127.0.0.1:8083;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# SSE支持
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
```
## 🔍 故障排除
### 常见问题
1. **端口占用**
```bash
# 检查端口占用
netstat -tulpn | grep 8083
# 修改端口配置
server.port=8084
```
2. **数据库连接错误**
- 检查SQLite文件路径和权限
- 确认SQLite驱动已正确加载
3. **API密钥错误**
- 验证OpenAI和阿里云API密钥是否有效
- 检查API调用配额和权限
4. **跨域问题**
- 确认CorsConfig配置正确
- 检查前端域名是否在允许列表中
5. **SSE连接中断**
- 检查网络代理设置
- 确认防火墙允许长连接
### 日志调试
启用调试日志:
```yaml
logging:
level:
com.ligong.gptai: DEBUG
org.springframework.web: DEBUG
```
## 📊 性能监控
### JVM监控
使用Spring Boot Actuator:
```xml
org.springframework.boot
spring-boot-starter-actuator
```
访问监控端点:
- 健康检查: `GET /actuator/health`
- 应用信息: `GET /actuator/info`
- JVM指标: `GET /actuator/metrics`
### 数据库监控
SQLite性能查询:
```sql
-- 查看表大小
SELECT name, COUNT(*) as count FROM sqlite_master
WHERE type='table'
GROUP BY name;
-- 查看索引使用情况
EXPLAIN QUERY PLAN SELECT * FROM conversation_history
WHERE user_id = 'user123';
```
## 🤝 贡献指南
1. Fork 项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🆘 支持
如果您遇到问题或有疑问,请:
1. 查看本文档的故障排除部分
2. 搜索已有的 [Issues](https://gitee.com/wx6765/chatgpt_backend/issues)
3. 创建新的 Issue 描述您的问题
## 📞 联系方式
- 项目维护者: wx6765
- 邮箱: lwlianghehe@gmail.com
- 项目地址: https://gitee.com/wx6765/chatgpt_backend
---
*最后更新: 2025年9月25日*