Files
doubaochat/README.md
T

198 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 豆包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!