Files

198 lines
4.5 KiB
Markdown
Raw Permalink Normal View History

# 豆包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!