# chatbot **Repository Path**: stevenye/chatbot ## Basic Information - **Project Name**: chatbot - **Description**: 前端基于tdesign-vue-next/chat组件打造,后端基于spring ai框架打造的一个前后端分离的AI聊天应用,简洁、易用,是学习AI编程的理想案例 - **Primary Language**: Java - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 15 - **Forks**: 0 - **Created**: 2025-12-16 - **Last Updated**: 2025-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目介绍 > 这是一个基于 Spring Boot 3.4.7 和 Spring AI 的智能聊天应用后端系统,采用响应式编程模型,支持多用户聊天会话管理。 含前、后端两个项目. 登录界面【预留微信、手机号、用户名+密码三种登录方式 和 注册帐号】 ![login](assets/login.png) 主界面 ![main](assets/main.png) 用户登录日志 ![login_log](assets/login_log.png) ## 前端介绍 ### 目录结构 ``` index.html # 项目入口 HTML 文件 package.json # 项目依赖和脚本配置 pnpm-lock.yaml # pnpm 锁定文件 public/ # 公共资源目录 README.md # 项目说明文档 src/ # 源代码目录 api/ # API 请求相关模块 assets/ # 静态资源(图片、JSON 数据等) components/ # Vue 组件 http/ # HTTP 请求封装 router/ # 路由配置 stores/ # 状态管理(Pinia) util/ # 工具函数 views/ # 页面视图 vite.config.js # Vite 配置文件 ``` ### 功能模块 #### 1. 聊天机器人 - **代码位置**: - 实现文件 [依次代表不同阶段实现的版本] - ChatBotV1.vue - ChatBotV2.vue - ChatBotV3.vue - ChatBotV4.vue - 相关逻辑 - API 调用:src/api/chatbot.js - 数据流处理:src/util/handleStreamResponse.js #### 2. 用户登录 - **代码位置**: - 实现文件 - 登录逻辑:src/api/login.js - 用户状态管理:src/stores/users.js #### 3. 数据处理 - 工具函数 - 时间处理:src/util/time.js - JSON 数据处理:src/util/pcData.js - 响应流处理:src/util/handleStreamResponse.js ### 技术栈 - **前端框架**: Vue 3 - **构建工具**: Vite - **状态管理**: Pinia - **HTTP 请求**: Axios - **包管理工具**: pnpm ### 安装与运行 #### 1. 克隆项目 git clone <项目地址> cd <前端项目目录> #### 2. 安装依赖 pnpm install #### 3. 启动开发服务器 pnpm run dev #### 4. 构建生产环境 pnpm run build ### 项目脚本 - **开发模式**: `pnpm run dev` - **生产构建**: `pnpm run build` - **代码检查**: `pnpm run lint` ### 贡献指南 1. Fork 本仓库。 2. 创建新分支:`git checkout -b feature/your-feature-name` 3. 提交代码:`git commit -m "Add some feature"` 4. 推送分支:`git push origin feature/your-feature-name` 5. 提交 Pull Request。 ## 后端介绍 ### 核心框架 - **Spring Boot 3.4.7** - 应用框架 - **Java 17** - 开发语言 - **Spring AI 1.0.0** - AI 集成框架 - **Spring WebFlux** - 响应式 Web 框架 ### 数据库 - **R2DBC (PostgreSQL)** - 响应式数据库访问 - **Redis Reactive** - 响应式缓存 ### 安全认证 - **JWT (JJWT 0.11.5)** - 身份认证 - **Spring Security** - 安全框架 ### 开发工具 - **Lombok 1.18.38** - 代码简化 - **Spring Boot DevTools** - 热部署 - **Maven** - 项目管理 ### 项目结构 ``` chatbot-backend/ ├── common-ai/ # 主模块 │ ├── src/main/java/com/codevip/commonai/ │ │ ├── config/ # 配置类 │ │ │ ├── DeepSeekConfig.java # DeepSeek AI 配置 │ │ │ ├── R2dbcTxConfig.java # 数据库事务配置 │ │ │ └── WebConfig.java # Web 配置 │ │ ├── controller/ # 控制器层 │ │ │ ├── ChatController.java # 聊天控制器 │ │ │ ├── UsersChatController.java # 用户聊天控制器 │ │ │ └── login/ # 登录相关控制器 │ │ ├── entity/ # 实体类 │ │ │ ├── ChatMessage.java # 聊天消息 │ │ │ ├── ChatSession.java # 聊天会话 │ │ │ └── TUsers.java # 用户实体 │ │ ├── service/ # 服务层 │ │ │ ├── ChatSessionService.java # 聊天会话服务 │ │ │ └── UsersService.java # 用户服务 │ │ ├── repository/ # 数据访问层 │ │ ├── util/ # 工具类 │ │ └── dto/ # 数据传输对象 │ └── pom.xml # 模块配置 ├── uploads/ # 文件上传目录 └── pom.xml # 父项目配置 ``` ### 核心功能 #### 1. AI 聊天服务 - 集成 DeepSeek AI 模型 - 支持流式聊天响应 - 可配置的模型参数(温度、模型类型等) #### 2. 用户管理 - 多方式登录(账号密码、手机号、微信扫码) - JWT 令牌认证 - 用户会话管理 #### 3. 聊天会话管理 - 创建和管理聊天会话 - 消息历史记录保存 - 会话状态跟踪 #### 4. 响应式架构 - 基于 WebFlux 的非阻塞处理 - R2DBC 响应式数据库访问 - Redis 响应式缓存 在本机新增一个环境变量:DEEPSEEK_API_KEY ```properties # DeepSeek API 配置 spring.ai.deepseek.base-url=https://api.deepseek.com spring.ai.deepseek.chat.options.model=deepseek-chat spring.ai.deepseek.chat.options.temperature=0.7 # 数据库配置 spring.r2dbc.url=r2dbc:postgresql://localhost:5432/chatdb spring.r2dbc.username=username spring.r2dbc.password=password # Redis 配置 spring.redis.host=localhost spring.redis.port=6379 ``` #### 数据库表结构 项目使用以下主要数据表: - `t_users` - 用户表 - `t_users_profile` - 用户资料表 - `t_login_logs` - 登录日志表 - `chat_sessions` - 聊天会话表 - `chat_messages` - 聊天消息表 #### 2. 配置环境 - 安装 PostgreSQL 数据库 - 安装 Redis - 获取 DeepSeek API Key #### 3. 配置应用 复制 `application.properties` 模板并配置相关参数。 #### 4. 运行项目 导入IDEA后运行 #### 5. 访问应用 应用默认运行在 `http://localhost:8080` ### API 接口 #### 认证相关 - `POST /api/login` - 用户登录 - `POST /api/register` - 用户注册 - `POST /api/logout` - 用户登出 #### 聊天相关 - `GET /chat/sessions` - 获取聊天会话列表 - `POST /chat/sessions` - 创建新会话 - `POST /chat/messages` - 发送消息 - `GET /chat/messages/{sessionId}` - 获取会话消息 #### 用户管理 - `GET /api/user/profile` - 获取用户资料 - `PUT /api/user/profile` - 更新用户资料 ### 开发说明 #### 代码规范 - 使用 Lombok 简化代码 - 遵循响应式编程模式 - 统一的异常处理机制 ### 贡献指南 欢迎提交 Issue 和 Pull Request 来改进项目。 ## 许可证 本项目采用 MIT 许可证。