5.3 KiB
5.3 KiB
Easy Dataset Agent 指南
项目概述
Easy Dataset 是一个专为大型语言模型(LLM)微调数据集创建而设计的应用程序。它提供完整的workflow,从文档处理到数据集导出,支持多种文件格式和AI模型。
技术栈
- 前端: Next.js 14 (App Router), React 18, Material-UI v5
- 后端: Node.js, Prisma ORM, SQLite
- AI集成: OpenAI API, Ollama, 智谱AI, OpenRouter
- 桌面应用: Electron
- 国际化: i18next
- 构建工具: npm/pnpm, Electron Builder
核心架构
1. 数据流架构
文档上传 → 文本分割 → 问题生成 → 答案生成 → 数据集导出
↓ ↓ ↓ ↓ ↓
文件处理 智能分块 LLM生成 LLM生成 格式转换
2. 模块结构
lib/
├── api/ # API接口层
├── db/ # 数据访问层
├── file/ # 文件处理模块
├── llm/ # AI模型集成
├── services/ # 业务逻辑层
└── util/ # 工具函数
开发指南
环境设置
# 安装依赖
npm install
# 数据库初始化
npm run db:push
# 开发模式
npm run dev
# 构建
npm run build
代码规范
- 使用ES6+语法
- 模块化开发
- 异步操作使用async/await
- 错误处理使用try/catch
- 注释使用JSDoc格式
重要文件路径
- 主入口:
app/page.js - 项目路由:
app/projects/[projectId]/ - API路由:
app/api/ - LLM核心:
lib/llm/core/index.js - 任务处理:
lib/services/tasks/
功能模块详解
1. 文档处理模块 (lib/file/)
- 支持的格式: PDF, Markdown, DOCX, EPUB, TXT
- 核心功能:
- 智能文本分割
- 目录结构提取
- 自定义分隔符分块
- 多语言支持
2. AI模型集成 (lib/llm/)
- 支持的提供商:
- OpenAI (GPT系列)
- Ollama (本地模型)
- 智谱AI (GLM系列)
- OpenRouter (多模型聚合)
- 功能特性:
- 统一API接口
- 流式输出支持
- 多语言提示词
- 错误重试机制
3. 任务系统 (lib/services/tasks/)
- 任务类型:
- 文件处理任务
- 问题生成任务
- 答案生成任务
- 数据清洗任务
- 状态管理: 待处理、处理中、完成、失败
4. 数据管理 (lib/db/)
- 数据模型:
- Project (项目)
- Text/Chunk (文本块)
- Question (问题)
- Dataset (数据集)
- Tag (标签)
常用开发任务
添加新的AI模型提供商
- 在
lib/llm/core/providers/创建新的provider文件 - 实现基础接口 (generate, streamGenerate)
- 在
lib/llm/core/index.js中注册provider - 更新配置文件和UI界面
添加新的文件格式支持
- 在
lib/file/file-process/创建格式处理器 - 实现内容提取和文本转换逻辑
- 更新文件类型检测和验证
- 添加相应的UI组件
自定义提示词模板
- 在
lib/llm/prompts/创建新的提示词文件 - 使用i18n支持多语言
- 在设置界面添加配置选项
- 测试不同模型的效果
添加新的导出格式
- 在
components/export/创建新的导出组件 - 实现数据格式转换逻辑
- 更新导出对话框界面
- 添加格式验证和错误处理
调试技巧
1. 数据库调试
# 打开Prisma Studio
npm run db:studio
# 查看数据库文件
sqlite3 prisma/db.sqlite
2. LLM API调试
// 在lib/llm/core/index.js中添加日志
console.log('LLM Request:', { provider, model, prompt });
console.log('LLM Response:', response);
3. 文件处理调试
// 在lib/file/中添加调试信息
console.log('File processing:', fileName, fileType);
console.log('Text chunks:', chunks.length, chunks[0]);
性能优化建议
1. 文件处理优化
- 大文件分片处理
- 异步并发处理
- 内存使用监控
- 进度条显示
2. LLM调用优化
- 请求缓存机制
- 批量处理请求
- 重试策略优化
- 并发数控制
3. 前端性能优化
- 组件懒加载
- 虚拟滚动列表
- 图片懒加载
- 代码分割
常见问题解决
1. 数据库相关问题
- 问题: 数据库连接失败
- 解决: 检查prisma配置,确保数据库文件存在
2. LLM API相关问题
- 问题: API调用超时
- 解决: 调整超时时间,检查网络连接,增加重试机制
3. 文件处理问题
- 问题: 大文件处理内存溢出
- 解决: 使用流式处理,分块读取,增加内存限制
4. Electron打包问题
- 问题: 打包后应用无法启动
- 解决: 检查依赖项配置,确保native模块正确打包
部署指南
Docker部署
# 构建镜像
docker build -t easy-dataset .
# 运行容器
docker run -d -p 1717:1717 -v ./local-db:/app/local-db easy-dataset
桌面应用构建
# 构建各平台安装包
npm run electron-build-mac # macOS
npm run electron-build-win # Windows
npm run electron-build-linux # Linux
贡献指南
提交规范
- 使用conventional commits格式
- 提交前运行lint检查
- 更新相关文档
- 添加测试用例
分支策略
main: 主分支,稳定版本dev: 开发分支,集成新功能feature/*: 功能分支fix/*: 修复分支