# 豆包AI对话系统 一个模仿豆包官网的AI对话系统,包含前端页面和Go后端服务。 ## 功能特性 ### 前端功能 - 📱 简洁美观的聊天界面 - 💬 支持多轮对话 - 📝 支持换行输入(Shift+Enter) - ⌨️ 支持键盘快捷键 - 📱 响应式设计,适配各种设备 ### 后端功能 - 🔐 用户认证和授权(JWT) - 👥 多用户支持 - 📊 用户配额管理 - 🧠 调用自建大模型API - 📝 对话历史记录 - 👨‍💼 管理员管理功能 - 📈 系统统计信息 ## 技术栈 ### 前端 - HTML5 + CSS3 + JavaScript - Font Awesome 图标库 ### 后端 - Go 1.21 - Gin Web框架 - GORM ORM框架 - SQLite数据库(默认) - JWT认证 ## 目录结构 ``` dobaochet/ ├── index.html # 前端主页面 ├── styles.css # 前端样式 ├── script.js # 前端脚本 ├── backend/ # 后端代码 │ ├── main.go # 主程序 │ ├── go.mod # Go依赖 │ ├── .env.example # 配置文件示例 │ ├── api/ # API路由 │ ├── models/ # 数据模型 │ ├── services/ # 业务逻辑 │ ├── config/ # 配置管理 │ ├── utils/ # 工具函数 │ └── db/ # 数据库连接 └── README.md # 项目说明 ``` ## 快速开始 ### 1. 前端使用 直接在浏览器中打开 `index.html` 文件即可使用前端页面。 ### 2. 后端部署 #### 2.1 配置环境 复制 `.env.example` 为 `.env` 并修改配置: ```bash cd backend cp .env.example .env ``` 编辑 `.env` 文件,配置以下关键参数: ```env # AI模型配置 AI_API_URL=http://localhost:5000/v1/chat/completions # 替换为您的大模型API URL AI_API_KEY= # 大模型API密钥 AI_MODEL_NAME=default # 模型名称 ``` #### 2.2 安装依赖 ```bash go mod tidy ``` #### 2.3 启动服务 ```bash go run main.go ``` 服务将在 `http://localhost:8000` 启动。 ## API文档 ### 认证相关 - `POST /api/users/register` - 用户注册 - `POST /api/users/login` - 用户登录 - `GET /api/users/me` - 获取当前用户信息 ### 聊天相关 - `POST /api/chat/` - 发送聊天消息 - `GET /api/chat/conversations` - 获取对话列表 - `GET /api/chat/conversations/:id` - 获取对话详情 - `DELETE /api/chat/conversations/:id` - 删除对话 - `DELETE /api/chat/conversations` - 清空所有对话 ### 管理员相关 - `GET /api/admin/users` - 获取所有用户 - `GET /api/admin/users/:id` - 获取单个用户 - `POST /api/admin/users` - 创建用户 - `PUT /api/admin/users/:id` - 更新用户 - `DELETE /api/admin/users/:id` - 删除用户 - `PUT /api/admin/users/:id/quota` - 更新用户配额 - `POST /api/admin/users/:id/quota/reset` - 重置用户配额 - `GET /api/admin/stats` - 获取系统统计信息 ## 配置说明 ### 数据库配置 支持多种数据库,默认使用SQLite: ```env # SQLite DATABASE_DSN=sqlite://./chat.db # MySQL # DATABASE_DSN=mysql://user:password@tcp(localhost:3306)/chat?charset=utf8mb4&parseTime=True&loc=Local # PostgreSQL # DATABASE_DSN=postgres://user:password@localhost:5432/chat?sslmode=disable ``` ### JWT配置 ```env JWT_SECRET_KEY=your-secret-key-change-me # 生产环境请修改为复杂密钥 JWT_ACCESS_TOKEN_EXPIRE=24h # 访问令牌过期时间 JWT_REFRESH_TOKEN_EXPIRE=720h # 刷新令牌过期时间 ``` ### 配额配置 ```env QUOTA_DEFAULT_TOTAL_TOKENS=100000 # 默认总配额 QUOTA_DEFAULT_TOKEN_LIMIT=1000 # 单次请求限制 QUOTA_RESET_INTERVAL=720h # 配额重置间隔 ``` ## 默认管理员账号 系统初始化后会自动创建管理员账号: - 用户名:`admin` - 密码:`admin123` - 生产环境请及时修改密码! ## 开发说明 ### 前端开发 前端使用纯HTML+CSS+JavaScript开发,无需编译,直接修改文件即可。 ### 后端开发 后端使用Go语言开发,推荐使用Go 1.21或以上版本。 ## 生产环境部署 1. 修改JWT密钥为复杂随机字符串 2. 配置正确的数据库连接 3. 配置HTTPS(推荐使用Nginx反向代理) 4. 设置适当的日志级别 5. 定期备份数据库 ## 安全建议 1. 生产环境中不要使用默认的JWT密钥 2. 定期更换JWT密钥 3. 配置适当的CORS策略 4. 启用HTTPS 5. 限制API请求频率 6. 定期审计系统日志 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request!