llm-chat/README.md

316 lines
7.3 KiB
Markdown
Raw Permalink 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.

# 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/) - 自包含的数据库引擎
---
⭐ 如果这个项目对您有帮助,请给我们一个星标!