Files
YG-Datasets/easy-dataset-main/AGENTS.md

255 lines
5.3 KiB
Markdown
Raw 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.
# 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/ # 工具函数
```
## 开发指南
### 环境设置
```bash
# 安装依赖
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模型提供商
1.`lib/llm/core/providers/` 创建新的provider文件
2. 实现基础接口 (generate, streamGenerate)
3.`lib/llm/core/index.js` 中注册provider
4. 更新配置文件和UI界面
### 添加新的文件格式支持
1.`lib/file/file-process/` 创建格式处理器
2. 实现内容提取和文本转换逻辑
3. 更新文件类型检测和验证
4. 添加相应的UI组件
### 自定义提示词模板
1.`lib/llm/prompts/` 创建新的提示词文件
2. 使用i18n支持多语言
3. 在设置界面添加配置选项
4. 测试不同模型的效果
### 添加新的导出格式
1.`components/export/` 创建新的导出组件
2. 实现数据格式转换逻辑
3. 更新导出对话框界面
4. 添加格式验证和错误处理
## 调试技巧
### 1. 数据库调试
```bash
# 打开Prisma Studio
npm run db:studio
# 查看数据库文件
sqlite3 prisma/db.sqlite
```
### 2. LLM API调试
```javascript
// 在lib/llm/core/index.js中添加日志
console.log('LLM Request:', { provider, model, prompt });
console.log('LLM Response:', response);
```
### 3. 文件处理调试
```javascript
// 在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部署
```bash
# 构建镜像
docker build -t easy-dataset .
# 运行容器
docker run -d -p 1717:1717 -v ./local-db:/app/local-db easy-dataset
```
### 桌面应用构建
```bash
# 构建各平台安装包
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/*`: 修复分支
---