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