198 lines
4.5 KiB
Markdown
198 lines
4.5 KiB
Markdown
# 豆包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!
|