# AI-Project **Repository Path**: fourc/ai-project ## Basic Information - **Project Name**: AI-Project - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-14 - **Last Updated**: 2026-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI 对话系统(Vue3 + Express + DeepSeek) 一个完整的AI驱动的企业数据查询系统,融合Vue3前端、Node.js Express后端和DeepSeek AI功能调用能力。 ## 📋 目录结构 ``` project-root/ ├── server/ # 后端应用 │ ├── src/ │ │ ├── ai/ │ │ │ ├── deepseek.js # DeepSeek API集成和函数执行 │ │ │ └── functions.js # 可用函数定义和系统提示词 │ │ ├── services/ │ │ │ └── user.service.js # 用户数据库操作 │ │ ├── routes/ │ │ │ └── chat.js # 聊天API路由 │ │ ├── db/ │ │ │ └── database.js # 数据库初始化 │ │ └── app.js # Express主应用 │ ├── package.json │ ├── .env # 环境配置 │ └── .env.example │ └── web/ # 前端应用 ├── src/ │ ├── components/ │ │ ├── AiChat.vue # 主聊天组件 │ │ ├── ChatBubble.vue # 消息气泡组件 │ │ └── ChatInput.vue # 输入框组件 │ ├── api/ │ │ └── chat.js # API客户端 │ ├── styles/ │ │ └── global.css # 全局样式 │ ├── App.vue │ └── main.js ├── index.html ├── vite.config.js └── package.json ``` ## 🚀 快速开始 ### 前置要求 - Node.js >= 18 - npm 或 yarn - DeepSeek API Key(申请地址:https://platform.deepseek.com) ### 1. 后端安装和运行 ```bash cd server # 安装依赖 npm install # 配置环境变量 # 编辑 .env 文件,设置 DEEPSEEK_API_KEY # DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxx # 开发模式运行(自动重启) npm run dev # 或生产模式运行 npm start ``` 后端服务将在 `http://localhost:5000` 运行 ### 2. 前端安装和运行 ```bash cd web # 安装依赖 npm install # 开发模式运行 npm run dev # 生产构建 npm run build ``` 前端应用将在 `http://localhost:3000` 运行 ## 🔧 配置说明 ### 后端配置 (.env) **⚠️ 重要:DeepSeek API Key 配置** 1. **获取 API Key**: - 访问 https://platform.deepseek.com - 登录后进入 API Keys 页面 - 创建新的 API Key(开头为 `sk-`) - 复制密钥 2. **配置 .env 文件**: ```env # DeepSeek API 配置 - 必须替换成你的真实 API Key DEEPSEEK_API_KEY=sk-your-api-key-here DEEPSEEK_API_URL=https://api.deepseek.com/chat/completions # 服务器配置 PORT=5000 NODE_ENV=development # 数据库配置 DB_PATH=./data/database.db ``` 3. **详细说明**: - 请参考 [API-KEY-SETUP.md](./API-KEY-SETUP.md) 获取完整的配置指南 - API Key 必须以 `sk-` 开头 - 不要提交 `.env` 文件到 Git 版本控制 ## 📊 数据库设计 ### 用户表 (users) ```sql CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(100) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, role VARCHAR(50) DEFAULT 'user', status INTEGER DEFAULT 1, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ) ``` **示例数据:** - admin (admin角色,已启用) - zhang_san (user角色,已启用) - li_si (user角色,已启用) - wang_wu (editor角色,已启用) - disabled_user (user角色,已禁用) - developer1 (developer角色,已启用) - developer2 (developer角色,已启用) ## 🤖 可用的AI函数 系统提供以下数据库查询函数供AI调用: | 函数名 | 描述 | 参数 | |--------|------|------| | `queryUserList` | 查询用户列表 | `status`, `role` (可选) | | `queryUserByName` | 根据用户名查询单个用户 | `username` (必需) | | `countUserByRole` | 统计某个角色的用户数 | `role` (必需) | | `countAllUsers` | 统计所有用户总数 | 无 | | `queryEnabledUsers` | 查询所有启用的用户 | 无 | | `queryDisabledUsers` | 查询所有禁用的用户 | 无 | | `getStatisticsByRole` | 获取各角色用户分布 | 无 | ## 💬 AI对话示例 ### 用户提问1:查询用户列表 ``` 用户:帮我查一下所有启用的用户 AI:[调用 queryEnabledUsers 函数] 返回:用户列表表格 + 自然语言总结 ``` ### 用户提问2:统计角色用户 ``` 用户:有多少个admin角色的用户? AI:[调用 countUserByRole 函数,role=admin] 返回:1个 admin 用户 ``` ### 用户提问3:用户搜索 ``` 用户:告诉我用户名为admin的邮箱 AI:[调用 queryUserByName 函数,username=admin] 返回:admin@example.com ``` ## 🔄 系统工作流程 ``` ┌─────────────────────────────────────────────────┐ │ 用户在前端输入消息 │ └────────────────┬────────────────────────────────┘ │ ▼ ┌──────────────────┐ │ 发送到后端 API │ │ /api/chat │ └────────┬─────────┘ │ ▼ ┌──────────────────────┐ │ Express 服务器 │ │ processUserMessage │ └────────┬─────────────┘ │ ▼ ┌────────────────────────┐ │ 调用 DeepSeek API │ │ 传入可用函数定义 │ └────────┬───────────────┘ │ ▼ ┌──────────────────────────┐ │ DeepSeek 返回响应 │ │ 判断是否需要函数调用 │ └────────┬─────────────────┘ │ ┌──────┴──────┐ │ │ 是 │ │ 否 │ │ ▼ ▼ ┌────────┐ ┌──────────────┐ │执行函数│ │直接返回文本 │ │查询DB │ └────┬─────────┘ └────┬───┘ │ │ │ ▼ │ ┌──────────┐ │ │再次调用AI │ │ │生成回复 │ │ └────┬─────┘ │ │ │ └──────┬─────┘ │ ▼ ┌────────────────┐ │ 返回前端 │ │ - message │ │ - data │ │ - functions │ └────────┬───────┘ │ ▼ ┌────────────────┐ │ 前端展示 │ │ - 文本回复 │ │ - 数据表格 │ └────────────────┘ ``` ## 📡 API 接口 ### POST /api/chat 发送消息并获取AI响应 **请求:** ```json { "message": "查询启用的用户", "sessionId": "default" } ``` **响应:** ```json { "success": true, "type": "function_call", "message": "当前共有5名启用用户", "functions": [ { "name": "queryEnabledUsers", "parameters": {} } ], "data": [ { "id": 1, "username": "admin", "email": "admin@example.com", "role": "admin", "status": 1 }, { "id": 2, "username": "zhang_san", "email": "zhangsan@example.com", "role": "user", "status": 1 } ] } ``` ### GET /api/history 获取对话历史 **参数:** - `sessionId` - 会话ID(默认:default) **响应:** ```json { "success": true, "sessionId": "default", "history": [ { "role": "user", "content": "查询启用的用户" }, { "role": "assistant", "content": "当前共有5名启用用户..." } ] } ``` ### DELETE /api/history 清除对话历史 **参数:** - `sessionId` - 会话ID(默认:default) ## 🛡️ 安全机制 1. **Function Whitelist(函数白名单)** - 所有函数调用都经过白名单检验 - 只允许调用预定义的安全函数 - 防止AI生成恶意SQL 2. **参数验证** - 所有参数都经过类型和值范围校验 - 防止SQL注入和其他攻击 3. **API密钥保护** - DeepSeek API密钥存储在环境变量中 - 不在代码中硬编码敏感信息 ## 🎨 前端特性 - 📱 **响应式设计** - 完美支持桌面、平板和手机 - 💬 **消息气泡UI** - 模仿微信/QQ风格的对话界面 - 📊 **智能数据渲染** - 自动将JSON数据转换为表格展示 - ⌨️ **快捷键支持** - Ctrl+Enter / Cmd+Enter 快速发送 - 🔄 **实时加载提示** - 优雅的加载动画 - 🗑️ **历史管理** - 支持清除对话历史 ## 🐛 常见问题 ### Q1: 如何获取DeepSeek API Key? 访问 https://platform.deepseek.com 注册账户并生成API密钥 ### Q2: 为什么AI没有返回数据表格? 检查以下几点: - AI是否正确调用了数据库函数 - 函数是否返回了结果 - 检查后端日志中的函数执行结果 ### Q3: 如何添加新的数据库函数? 1. 在 `server/src/services/user.service.js` 中添加函数实现 2. 在 `server/src/ai/deepseek.js` 中的 `functionHandlers` 对象注册函数 3. 在 `server/src/ai/functions.js` 中的 `functions` 数组添加函数定义 ## 📝 开发指南 ### 添加新的AI函数 1. **创建服务函数** (`server/src/services/user.service.js`) ```javascript export function newFunction(params) { // 实现函数逻辑 return result; } ``` 2. **注册函数处理器** (`server/src/ai/deepseek.js`) ```javascript const functionHandlers = { // ... newFunction: (params) => userService.newFunction(params) }; ``` 3. **添加函数定义** (`server/src/ai/functions.js`) ```javascript export const functions = [ // ... { name: 'newFunction', description: '函数描述', parameters: { type: 'object', properties: { param1: { type: 'string' } } } } ]; ``` ## 📦 依赖包说明 ### 后端 - **express** - Web框架 - **axios** - HTTP客户端 - **better-sqlite3** - 数据库引擎 - **cors** - 跨域资源共享 - **dotenv** - 环境变量管理 ### 前端 - **vue** - 前端框架 - **axios** - HTTP客户端 - **element-plus** - UI组件库(可选) - **vite** - 构建工具 ## 🚢 生产部署 ### 后端部署 ```bash # 构建 npm install --production # 启动 NODE_ENV=production node src/app.js # 使用PM2管理进程 npm install -g pm2 pm2 start src/app.js --name "ai-chat-server" ``` ### 前端部署 ```bash # 构建 npm run build # 输出目录 dist/ 可部署到任何静态服务器 # 或使用Express作为静态文件服务器 ``` ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交Issues和Pull Requests! --- **最后更新**: 2024年1月 如有问题,请查看源代码中的详细注释或提交Issue。