# ai **Repository Path**: codecomb/aiyx ## Basic Information - **Project Name**: ai - **Description**: No description available - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-24 - **Last Updated**: 2025-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI 聊天应用 这是一个基于Vue.js和Express的AI聊天应用,可以与远程大模型进行对话。 ## 功能特点 - 使用Vue 3和Pinia进行状态管理 - 支持流式响应显示 - 支持历史对话记录管理 - 支持对话会话管理 - 可以取消正在进行的请求 - 使用Express作为后端服务代理远程AI请求 ## 技术栈 - 前端:Vue 3 + Vite + Pinia - 后端:Node.js + Express - 网络请求:Axios - 样式:CSS原生 ## 安装与运行 1. 安装依赖: ```bash npm install ``` 2. 创建配置文件: 在项目根目录创建`.env`文件并添加以下内容: ``` PORT=8080 AI_SERVICE_URL=http://localhost:8088 ``` 3. 启动开发服务器: ```bash npm run start ``` 这将同时启动前端开发服务器和后端API服务器。 - 前端访问地址:http://localhost:5173 - 后端API地址:http://localhost:8080 ## API说明 ### 聊天API 请求格式: ``` POST /v1/ai/chat Content-Type: application/json { "modelId": "deepseek-chat", "chatId": "conversation-123", "userPrompt": "你好,请问你是谁?" } ``` 响应格式: 流式响应,直接返回处理后的文本内容。 ### 健康检查API ``` GET /health ``` 响应示例: ```json { "status": "ok", "timestamp": "2023-12-01T12:00:00.000Z" } ``` ## 开发说明 - `server.js` - 后端服务器代码 - `src/` - 前端源代码 - `components/` - 前端组件 - `api/` - API调用服务 - `store/` - Pinia状态管理 ## 测试 可以使用curl测试API: ```bash curl -X POST \ http://localhost:8080/v1/ai/chat \ -H 'Content-Type: application/json' \ -H 'Accept: text/event-stream' \ -d '{ "modelId": "deepseek-chat", "chatId": "test-conversation-124", "userPrompt": "1+1=?" }' \ --no-buffer ``` ## 项目结构 ``` ├── src/ # 源代码目录 │ ├── api/ # API 相关代码 │ │ └── streamChat.js # 流式聊天 API 客户端 │ ├── components/ # Vue 组件 │ │ ├── ChatBox.vue # 聊天框组件 │ │ ├── MessageItem.vue # 消息项组件 │ │ └── UserAvatar.vue # 用户头像组件 │ ├── store/ # Pinia 状态管理 │ │ └── chat.js # 聊天状态管理 │ ├── App.vue # 应用主组件 │ └── main.js # 应用入口 ├── server.js # Express 服务器(模拟 API) ├── package.json # 项目配置 └── vite.config.js # Vite 配置 ``` ## 注意事项 - 该项目包含一个模拟的后端服务器,用于展示流式响应功能 - 在实际生产环境中,您需要将 API 端点替换为真实的 AI 服务 API # IndexedDB 聊天数据存储 这个项目实现了基于IndexedDB的聊天数据存储与操作功能,支持聊天记录和LigHistory的创建、查询、更新和删除。 ## 功能特点 - 使用IndexedDB进行浏览器端数据存储 - 支持多聊天会话管理 - 每个聊天会话包含用户和AI的对话消息 - 支持LigHistory记录存储 - 提供完整的CRUD操作API - TypeScript类型支持 ## 项目结构 - `src/utils/indexedDB.ts` - IndexedDB工具类实现 - `src/utils/dbTester.ts` - 测试工具类 - `src/components/ChatStore.tsx` - 使用IndexedDB的示例React组件 - `src/pages/TestPage.tsx` - 测试界面 ## 数据结构 ### 聊天记录的数据结构 ```typescript interface ChatMessage { role: 'user' | 'assistant'; content: string; timestamp: number; } interface ChatRecord { chatId: string; messages: ChatMessage[]; model: string; title: string; desc: string; } ``` ### LigHistory的数据结构 ```typescript interface LigHistoryRecord { id: number; name: string; } ``` ## 使用方法 ### 1. 初始化数据库 ```typescript import { dbManager } from '../utils/indexedDB'; // 初始化数据库 await dbManager.initDB(); ``` ### 2. 聊天记录操作 #### 添加聊天记录 ```typescript const newChat = { chatId: Date.now().toString(), messages: [], model: 'deepseek-r1', title: '新会话', desc: '' }; await dbManager.addChat(newChat); ``` #### 获取聊天记录 ```typescript // 获取所有聊天记录 const allChats = await dbManager.getAllChats(); // 获取单个聊天记录 const chat = await dbManager.getChat(chatId); ``` #### 添加消息到聊天记录 ```typescript const message = { role: 'user', content: '你好', timestamp: Date.now() }; await dbManager.addMessageToChat(chatId, message); ``` #### 更新聊天记录 ```typescript chat.title = '已更新的标题'; await dbManager.updateChat(chat); ``` #### 删除聊天记录 ```typescript await dbManager.deleteChat(chatId); ``` ### 3. LigHistory操作 #### 添加LigHistory记录 ```typescript const record = { id: Date.now(), name: '测试记录' }; await dbManager.addLigHistory(record); ``` #### 批量添加LigHistory记录 ```typescript const records = [ { id: 1, name: '记录1' }, { id: 2, name: '记录2' }, { id: 3, name: '记录3' } ]; await dbManager.addLigHistoryBatch(records); ``` #### 获取LigHistory记录 ```typescript // 获取所有LigHistory记录 const allRecords = await dbManager.getAllLigHistory(); // 获取单个LigHistory记录 const record = await dbManager.getLigHistory(id); ``` #### 更新LigHistory记录 ```typescript record.name = '已更新的记录名称'; await dbManager.updateLigHistory(record); ``` #### 删除LigHistory记录 ```typescript await dbManager.deleteLigHistory(id); ``` #### 清空所有LigHistory记录 ```typescript await dbManager.clearAllLigHistory(); ``` ### 4. 关闭数据库连接 ```typescript dbManager.closeDB(); ``` ## 测试工具 项目包含一个测试工具`dbTester`,可以用来验证IndexedDB功能是否正常工作: ```typescript import { dbTester } from '../utils/dbTester'; // 运行所有测试 await dbTester.runTests(); ``` ## 示例组件 项目包含以下示例: 1. `ChatStore` - 聊天组件,展示如何实际使用IndexedDB进行聊天记录的管理 2. `TestPage` - 测试页面,提供UI界面测试所有数据库功能 ## 扩展性 该实现具有良好的扩展性: 1. 可以轻松添加新的存储对象 2. 支持不同类型的数据结构 3. 可以扩展数据模型以支持更多的字段 ## 兼容性 IndexedDB在现代浏览器中都得到了很好的支持。该实现使用Promise对IndexedDB的API进行了封装,使其更加易用。