262 lines
8.4 KiB
Markdown
262 lines
8.4 KiB
Markdown
# DataJuicer 智能体
|
||
|
||
基于 [AgentScope](https://github.com/modelscope/agentscope) 和 [Data-Juicer (DJ)](https://github.com/modelscope/data-juicer) 构建的数据处理多智能体系统。该项目展示了如何利用大模型的自然语言理解能力,让非专家用户也能轻松使用 Data-Juicer 的强大数据处理能力。
|
||
|
||
## 📋 目录
|
||
|
||
- [DataJuicer 智能体](#datajuicer-智能体)
|
||
- [📋 目录](#-目录)
|
||
- [这个智能体做了什么?](#这个智能体做了什么)
|
||
- [架构](#架构)
|
||
- [快速开始](#快速开始)
|
||
- [系统要求](#系统要求)
|
||
- [安装](#安装)
|
||
- [配置](#配置)
|
||
- [使用](#使用)
|
||
- [智能体介绍](#智能体介绍)
|
||
- [数据处理智能体](#数据处理智能体)
|
||
- [代码开发智能体](#代码开发智能体)
|
||
- [高级功能](#高级功能)
|
||
- [算子检索](#算子检索)
|
||
- [检索模式](#检索模式)
|
||
- [使用](#使用-1)
|
||
- [MCP 智能体](#mcp-智能体)
|
||
- [MCP 服务器类型](#mcp-服务器类型)
|
||
- [配置](#配置-1)
|
||
- [使用方法](#使用方法)
|
||
- [功能预览](#功能预览)
|
||
- [Data-Juicer 问答智能体 (演示可用)](#data-juicer-问答智能体-演示可用)
|
||
- [数据分析与可视化智能体 (开发中)](#数据分析与可视化智能体-开发中)
|
||
- [常见问题](#常见问题)
|
||
- [优化建议](#优化建议)
|
||
|
||
## 这个智能体做了什么?
|
||
|
||
Data-Juicer (DJ) 是一个一站式系统,面向大模型的文本及多模态数据处理。它提供了近200个核心数据处理算子,覆盖文本、图像、视频等多模态数据,支持数据分析、清洗、合成等全流程。
|
||
|
||
运行本示例后,您可以:
|
||
- **智能查询**:从近200个数据处理算子中找到适合您数据场景的算子
|
||
- **自动化流程**:描述数据处理需求,自动生成 Data-Juicer YAML 配置并执行
|
||
- **自定义扩展**:为特定场景快速开发自定义算子
|
||
|
||
## 架构
|
||
|
||
```
|
||
用户查询
|
||
↓
|
||
路由智能体 ──┐
|
||
├── 数据处理智能体 (DJ 智能体)
|
||
| ├── 通用文件读写工具
|
||
│ ├── query_dj_operators (查询DataJuicer算子)
|
||
│ └── execute_safe_command (执行包含dj-process, dj-analyze在内的安全命令)
|
||
│
|
||
└── 代码开发智能体 (DJ Dev 智能体)
|
||
├── 通用文件读写工具
|
||
├── get_basic_files (获取基础的开发知识)
|
||
├── get_operator_example (获取与需求相关的算子源码示例)
|
||
└── configure_data_juicer_path (配置DataJuicer路径)
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 系统要求
|
||
|
||
- Python 3.8+
|
||
- 有效的 DashScope API 密钥
|
||
- 可选:Data-Juicer 源码(用于自定义算子开发)
|
||
|
||
### 安装
|
||
|
||
```bash
|
||
# 推荐使用uv
|
||
uv pip install -r requirements.txt
|
||
```
|
||
|
||
或
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 配置
|
||
|
||
1. **设置 API 密钥**
|
||
|
||
```bash
|
||
export DASHSCOPE_API_KEY="your-dashscope-key"
|
||
```
|
||
|
||
2. **可选:配置 Data-Juicer 路径(用于自定义算子开发)**
|
||
|
||
```bash
|
||
export DATA_JUICER_PATH="your-data-juicer-path"
|
||
```
|
||
|
||
> **提示**:也可以在运行时通过对话设置,例如:
|
||
> - "帮我设置 DataJuicer 路径:/path/to/data-juicer"
|
||
> - "帮我更新 DataJuicer 路径:/path/to/data-juicer"
|
||
|
||
### 使用
|
||
|
||
通过 `-u` 或 `--use_studio` 参数选择运行方式:
|
||
|
||
```bash
|
||
# 使用 AgentScope Studio(提供交互式界面)
|
||
python main.py --use_studio true
|
||
|
||
# 或使用命令行模式(默认)
|
||
python main.py
|
||
```
|
||
|
||
## 智能体介绍
|
||
|
||
### 数据处理智能体
|
||
|
||
负责与 Data-Juicer 交互,执行实际的数据处理任务。支持从自然语言描述自动推荐算子、生成配置并执行。
|
||
|
||
**典型用途:**
|
||
- **数据清洗**:去重、移除低质量样本、格式标准化
|
||
- **多模态处理**:同时处理文本、图像、视频数据
|
||
- **批量转换**:格式转换、数据增强、特征提取
|
||
|
||
<details>
|
||
<summary>查看完整示例日志(from AgentScope Studio)</summary>
|
||
<img src="assets/dj_agent_image.png" width="100%">
|
||
</details>
|
||
|
||
### 代码开发智能体
|
||
|
||
辅助开发自定义数据处理算子,默认使用 `qwen3-coder-480b-a35b-instruct` 模型驱动。
|
||
|
||
**典型用途:**
|
||
- **开发领域特定的过滤或转换算子**
|
||
- **集成自有的数据处理逻辑**
|
||
- **为特定场景扩展 Data-Juicer 能力**
|
||
|
||
<details>
|
||
<summary>查看完整示例日志(from AgentScope Studio)</summary>
|
||
<img src="assets/dj_dev_agent_image.png" width="100%">
|
||
</details>
|
||
|
||
## 高级功能
|
||
|
||
### 算子检索
|
||
|
||
DJ 智能体实现了一个智能算子检索工具,通过独立的 LLM 查询环节从 Data-Juicer 的近200个算子中快速找到最相关的算子。这是数据处理智能体和代码开发智能体能够准确运行的关键组件。
|
||
|
||
我们提供了三种检索模式,可根据不同场景选用:
|
||
|
||
#### 检索模式
|
||
|
||
**LLM 检索 (默认)**
|
||
- 使用 Qwen-Turbo 模型匹配最相关算子
|
||
- 提供详细的匹配理由和相关性评分
|
||
- 适合需要高精度匹配的场景,但消耗更多 Token
|
||
|
||
**向量检索 (vector)**
|
||
- 基于 DashScope 文本嵌入和 FAISS 相似度搜索
|
||
- 快速且高效,适合大规模检索场景
|
||
|
||
**自动模式 (auto)**
|
||
- 优先尝试 LLM 检索,失败时自动降级到向量检索
|
||
|
||
#### 使用
|
||
|
||
通过 `-r` 或 `--retrieve_mode` 参数指定检索模式:
|
||
|
||
```bash
|
||
python main.py --retrieve_mode vector
|
||
```
|
||
|
||
更多参数说明见 `python main.py --help`
|
||
|
||
### MCP 智能体
|
||
|
||
Data-Juicer 提供了 MCP (Model Context Protocol) 服务,可直接通过原生接口获取算子信息、执行数据处理,易于迁移和集成,无需单独的 LLM 查询和命令行调用。
|
||
|
||
#### MCP 服务器类型
|
||
|
||
Data-Juicer 提供两种 MCP 服务器模式:
|
||
|
||
**Recipe-Flow(数据菜谱)**
|
||
- 根据算子类型和标签进行筛选
|
||
- 支持将多个算子组合成数据菜谱运行
|
||
|
||
**Granular-Operators(细粒度算子)**
|
||
- 将每个算子作为独立工具提供
|
||
- 通过环境变量灵活指定算子列表
|
||
- 构建完全定制化的数据处理管道
|
||
|
||
详细信息请参考:[Data-Juicer MCP 服务文档](https://modelscope.github.io/data-juicer/en/main/docs/DJ_service.html#mcp-server)
|
||
|
||
> **注意**:Data-Juicer MCP 服务器目前处于早期开发阶段,功能和工具可能会随着持续开发而变化。
|
||
|
||
#### 配置
|
||
|
||
在 `configs/mcp_config.json` 中配置服务地址:
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"DJ_recipe_flow": {
|
||
"url": "http://127.0.0.1:8080/sse"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 使用方法
|
||
|
||
启用 MCP 智能体替代 DJ 智能体:
|
||
|
||
```bash
|
||
# 启用 MCP 智能体和开发智能体
|
||
python main.py --available_agents [dj_mcp, dj_dev]
|
||
|
||
# 或使用简写
|
||
python main.py -a [dj_mcp, dj_dev]
|
||
```
|
||
|
||
|
||
## 功能预览
|
||
|
||
Data-Juicer 智能体生态系统正在快速扩展,以下是当前正在开发或计划中的新智能体:
|
||
|
||
### Data-Juicer 问答智能体 (演示可用)
|
||
|
||
为用户提供关于 Data-Juicer 算子、概念和最佳实践的详细解答。
|
||
|
||
<video controls width="100%" height="auto" playsinline>
|
||
<source src="https://github.com/user-attachments/assets/a8392691-81cf-4a25-94da-967dcf92c685" type="video/mp4">
|
||
您的浏览器不支持视频标签。
|
||
</video>
|
||
|
||
### 数据分析与可视化智能体 (开发中)
|
||
|
||
生成数据分析和可视化结果,预计近期发布。
|
||
|
||
### 常见问题
|
||
|
||
**Q: 如何获取 DashScope API 密钥?**
|
||
A: 访问 [DashScope 官网](https://dashscope.aliyun.com/) 注册账号并申请 API 密钥。
|
||
|
||
**Q: 为什么算子检索失败?**
|
||
A: 请检查网络连接和 API 密钥配置,或尝试切换到向量检索模式。
|
||
|
||
**Q: 如何调试自定义算子?**
|
||
A: 确保 Data-Juicer 路径配置正确,并查看代码开发智能体提供的示例代码。
|
||
|
||
**Q: MCP 服务连接失败怎么办?**
|
||
A: 检查 MCP 服务器是否正在运行,确认配置文件中的 URL 地址正确。
|
||
|
||
### 优化建议
|
||
|
||
- 对于大规模数据处理,建议使用DataJuicer提供的分布式模式
|
||
- 合理设置批处理大小以平衡内存使用和处理速度
|
||
- 更多进阶数据处理(合成、Data-Model Co-Development)等特性能力请参考DataJuicer[文档页](https://modelscope.github.io/data-juicer/zh_CN/main/index_ZH)
|
||
|
||
|
||
---
|
||
|
||
**贡献指南**:欢迎提交 Issue 和 Pull Request 来改进agentscope、DataJuicer Agent及[DataJuicer](https://modelscope.github.io/data-juicer/zh_CN/main/index_ZH#id4)。如果您在使用过程中遇到问题或有功能建议,请随时联系我们。
|