llm-chat/README.md

316 lines
7.3 KiB
Markdown
Raw Permalink Normal View History

# LLM 聊天网站
一个基于 Vue 3 + Node.js 构建的大语言模型聊天网站支持与AI进行实时对话。
## 🚀 特性
- 🤖 **智能对话**: 基于大语言模型的自然语言处理
- 💬 **实时聊天**: 支持流式响应实时显示AI回复
- 📚 **对话管理**: 自动保存对话历史,支持搜索和管理
- 🎨 **现代UI**: 响应式设计,支持亮色/暗色主题
-**高性能**: LRU缓存优化快速响应
- 🔒 **数据安全**: 本地SQLite数据库存储
## 🛠️ 技术栈
### 前端
- **Vue 3** - 渐进式JavaScript框架
- **Pinia** - 状态管理
- **Vue Router** - 路由管理
- **Element Plus** - UI组件库
- **Vite** - 构建工具
- **Axios** - HTTP客户端
### 后端
- **Node.js** - JavaScript运行时
- **Express** - Web框架
- **SQLite** - 轻量级数据库
- **LRU Cache** - 内存缓存
- **OpenAI兼容API** - 大语言模型接口
## 📦 项目结构
```
llm-chat-website/
├── package.json # 根目录包管理
├── pnpm-workspace.yaml # pnpm工作空间配置
├── README.md # 项目说明
├── .gitignore # Git忽略文件
├── frontend/ # 前端项目
│ ├── src/
│ │ ├── components/ # Vue组件
│ │ ├── views/ # 页面视图
│ │ ├── stores/ # Pinia状态管理
│ │ ├── api/ # API接口
│ │ ├── router/ # 路由配置
│ │ ├── styles/ # 样式文件
│ │ └── utils/ # 工具函数
│ ├── package.json # 前端依赖
│ └── vite.config.js # Vite配置
└── backend/ # 后端项目
├── src/
│ ├── routes/ # API路由
│ ├── services/ # 业务服务
│ ├── models/ # 数据模型
│ ├── middleware/ # 中间件
│ ├── config/ # 配置文件
│ └── utils/ # 工具函数
├── database/ # 数据库文件
├── package.json # 后端依赖
└── server.js # 服务器入口
```
## 🔧 安装与运行
### 环境要求
- Node.js >= 16.0.0
- pnpm >= 7.0.0
### 1. 克隆项目
```bash
git clone <repository-url>
cd llm-chat-website
```
### 2. 安装依赖
```bash
# 安装所有依赖
pnpm install:all
```
### 3. 配置环境变量
#### 后端配置
复制并编辑后端环境配置:
```bash
cd backend
cp .env.example .env
```
编辑 `.env` 文件,配置必要的环境变量:
```env
# 服务器配置
PORT=3000
NODE_ENV=development
# 数据库配置
DB_PATH=./database/chat.db
# LLM API配置 (必须配置)
LLM_API_BASE_URL=https://api.openai.com/v1
LLM_API_KEY=your_api_key_here
LLM_MODEL=gpt-3.5-turbo
# 缓存配置
CACHE_MAX_SIZE=500
CACHE_TTL=1800000
# 速率限制配置
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX_REQUESTS=20
# CORS配置
CORS_ORIGIN=http://localhost:5173
```
#### 前端配置
前端环境变量已预配置,如需修改可编辑:
- `.env.development` - 开发环境
- `.env.production` - 生产环境
### 4. 启动项目
#### 开发模式(推荐)
```bash
# 同时启动前后端
pnpm dev
```
或者分别启动:
```bash
# 启动后端
pnpm dev:backend
# 启动前端(新终端)
pnpm dev:frontend
```
#### 生产模式
```bash
# 构建前端
pnpm build
# 启动后端服务
pnpm start
```
### 5. 访问应用
- 前端地址: http://localhost:5173
- 后端API: http://localhost:3000
## 🔑 API配置
### 支持的LLM服务
项目支持任何兼容OpenAI API格式的服务
- **OpenAI**: 官方ChatGPT API
- **Azure OpenAI**: 微软Azure OpenAI服务
- **Claude API**: Anthropic Claude模型
- **本地部署**: Ollama、LocalAI等
- **第三方服务**: 各种OpenAI兼容的API服务
### 配置示例
#### OpenAI官方API
```env
LLM_API_BASE_URL=https://api.openai.com/v1
LLM_API_KEY=sk-your-openai-api-key
LLM_MODEL=gpt-3.5-turbo
```
#### Azure OpenAI
```env
LLM_API_BASE_URL=https://your-resource.openai.azure.com/openai/deployments/your-deployment
LLM_API_KEY=your-azure-api-key
LLM_MODEL=gpt-35-turbo
```
#### 本地Ollama
```env
LLM_API_BASE_URL=http://localhost:11434/v1
LLM_API_KEY=ollama
LLM_MODEL=llama2
```
## 📝 使用说明
### 基本功能
1. **新建对话**: 点击"新建对话"按钮开始聊天
2. **发送消息**: 在输入框输入问题按Enter发送
3. **查看历史**: 在侧边栏查看所有对话历史
4. **搜索对话**: 使用搜索框快速找到相关对话
5. **管理对话**: 重命名、删除对话
### 快捷键
- `Ctrl + N`: 新建对话
- `Ctrl + K`: 快速搜索
- `Ctrl + B`: 切换侧边栏
- `Enter`: 发送消息
- `Ctrl + Enter`: 发送消息(可在设置中切换)
- `Esc`: 取消当前操作
### 高级功能
- **主题切换**: 支持亮色/暗色主题
- **响应式设计**: 完美适配移动端
- **导入导出**: 支持对话数据的导入导出
- **设置自定义**: 个性化界面和功能设置
## 🔧 开发指南
### 项目架构
#### 前端架构
- **组件化**: 模块化的Vue组件设计
- **状态管理**: 使用Pinia管理全局状态
- **API集成**: 统一的HTTP客户端和接口封装
- **响应式**: 移动端优先的响应式设计
#### 后端架构
- **RESTful API**: 标准的REST接口设计
- **分层架构**: 路由、服务、数据访问层分离
- **缓存优化**: LRU缓存提升性能
- **错误处理**: 完善的错误处理和日志记录
### 添加新功能
1. **新增API**: 在 `backend/routes/` 中添加路由
2. **业务逻辑**: 在 `backend/services/` 中实现业务逻辑
3. **前端接口**: 在 `frontend/src/api/` 中封装API调用
4. **状态管理**: 在 `frontend/src/stores/` 中添加状态管理
5. **UI组件**: 在 `frontend/src/components/` 中创建组件
### 测试
```bash
# 运行后端测试
cd backend && npm test
# 运行前端测试
cd frontend && npm test
```
## 🚀 部署
### Docker部署
```bash
# 构建镜像
docker build -t llm-chat-website .
# 运行容器
docker run -p 3000:3000 -v $(pwd)/data:/app/database llm-chat-website
```
### 传统部署
1. 构建前端资源:`pnpm build`
2. 配置Nginx代理前端静态文件
3. 使用PM2等工具管理后端进程
4. 配置SSL证书推荐
## 🤝 贡献指南
欢迎贡献代码!请遵循以下步骤:
1. Fork本仓库
2. 创建特性分支:`git checkout -b feature/amazing-feature`
3. 提交更改:`git commit -m 'Add amazing feature'`
4. 推送分支:`git push origin feature/amazing-feature`
5. 提交Pull Request
### 开发规范
- 遵循ESLint配置
- 编写有意义的提交信息
- 添加必要的测试
- 更新相关文档
## 📄 许可证
本项目采用 [MIT](LICENSE) 许可证。
## 🆘 支持
如果您遇到问题或有建议,请:
1. 查看 [常见问题](docs/FAQ.md)
2. 提交 [Issue](../../issues)
3. 参与 [讨论](../../discussions)
## 🙏 致谢
感谢所有为这个项目做出贡献的开发者!
- [Vue.js](https://vuejs.org/) - 渐进式JavaScript框架
- [Element Plus](https://element-plus.org/) - 优秀的Vue 3组件库
- [Express.js](https://expressjs.com/) - 快速、开放、极简的Web框架
- [SQLite](https://www.sqlite.org/) - 自包含的数据库引擎
---
⭐ 如果这个项目对您有帮助,请给我们一个星标!