# 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日*