llm-chat/README.md

7.3 KiB
Raw Permalink Blame 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. 克隆项目

git clone <repository-url>
cd llm-chat-website

2. 安装依赖

# 安装所有依赖
pnpm install:all

3. 配置环境变量

后端配置

复制并编辑后端环境配置:

cd backend
cp .env.example .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. 启动项目

开发模式(推荐)

# 同时启动前后端
pnpm dev

或者分别启动:

# 启动后端
pnpm dev:backend

# 启动前端(新终端)
pnpm dev:frontend

生产模式

# 构建前端
pnpm build

# 启动后端服务
pnpm start

5. 访问应用

🔑 API配置

支持的LLM服务

项目支持任何兼容OpenAI API格式的服务

  • OpenAI: 官方ChatGPT API
  • Azure OpenAI: 微软Azure OpenAI服务
  • Claude API: Anthropic Claude模型
  • 本地部署: Ollama、LocalAI等
  • 第三方服务: 各种OpenAI兼容的API服务

配置示例

OpenAI官方API

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

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

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/ 中创建组件

测试

# 运行后端测试
cd backend && npm test

# 运行前端测试
cd frontend && npm test

🚀 部署

Docker部署

# 构建镜像
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 许可证。

🆘 支持

如果您遇到问题或有建议,请:

  1. 查看 常见问题
  2. 提交 Issue
  3. 参与 讨论

🙏 致谢

感谢所有为这个项目做出贡献的开发者!


如果这个项目对您有帮助,请给我们一个星标!