2c8afc1275fdcb7cd92ae1e839d0d1ac3d68c6e7
豆包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 并修改配置:
cd backend
cp .env.example .env
编辑 .env 文件,配置以下关键参数:
# AI模型配置
AI_API_URL=http://localhost:5000/v1/chat/completions # 替换为您的大模型API URL
AI_API_KEY= # 大模型API密钥
AI_MODEL_NAME=default # 模型名称
2.2 安装依赖
go mod tidy
2.3 启动服务
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:
# 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配置
JWT_SECRET_KEY=your-secret-key-change-me # 生产环境请修改为复杂密钥
JWT_ACCESS_TOKEN_EXPIRE=24h # 访问令牌过期时间
JWT_REFRESH_TOKEN_EXPIRE=720h # 刷新令牌过期时间
配额配置
QUOTA_DEFAULT_TOTAL_TOKENS=100000 # 默认总配额
QUOTA_DEFAULT_TOKEN_LIMIT=1000 # 单次请求限制
QUOTA_RESET_INTERVAL=720h # 配额重置间隔
默认管理员账号
系统初始化后会自动创建管理员账号:
- 用户名:
admin - 密码:
admin123 - 生产环境请及时修改密码!
开发说明
前端开发
前端使用纯HTML+CSS+JavaScript开发,无需编译,直接修改文件即可。
后端开发
后端使用Go语言开发,推荐使用Go 1.21或以上版本。
生产环境部署
- 修改JWT密钥为复杂随机字符串
- 配置正确的数据库连接
- 配置HTTPS(推荐使用Nginx反向代理)
- 设置适当的日志级别
- 定期备份数据库
安全建议
- 生产环境中不要使用默认的JWT密钥
- 定期更换JWT密钥
- 配置适当的CORS策略
- 启用HTTPS
- 限制API请求频率
- 定期审计系统日志
许可证
MIT License
贡献
欢迎提交Issue和Pull Request!
Languages
Go
79.2%
CSS
8.6%
JavaScript
7.1%
HTML
5.1%