A-Rohan99/Scalar

GitHub: A-Rohan99/Scalar

这是一个基于动态生成 SQLite 数据库的强化学习环境,旨在模拟真实 DataOps 事故,用于训练和评估 AI 智能体处理数据清理、PII 脱敏及管道修复等任务的能力。

Stars: 0 | Forks: 0

title: OpenDataOpsEnv emoji: 🗄 colorFrom: blue colorTo: green sdk: docker pinned: false tags: - openenv - dataops - sql - pii-masking - data-quality # OpenDataOpsEnv: 自动化 DataOps 事件响应 ![Python 3.11](https://img.shields.io/badge/Python-3.11-blue.svg) ![FastAPI](https://img.shields.io/badge/FastAPI-1.111.0-green.svg) ![OpenEnv](https://img.shields.io/badge/OpenEnv-Compatible-purple.svg) ![HF Spaces](https://img.shields.io/badge/HF_Spaces-Ready-yellow.svg) ## 📌 问题陈述与动机 损坏的数据管道和数据库损坏是数据团队事故的首要原因。当上游 schema 迁移悄无声息地破坏了下游 SQL 视图,或者当原始的 Personally Identifiable Information (PII) 在未经脱敏的情况下意外暴露时,可能会导致企业损失数百万美元的生产力和受损的商业智能。 **OpenDataOpsEnv** 是一个严格的、符合 OpenEnv 规范的 RL 训练和评估环境,旨在模拟真实世界的 DataOps 事故响应。与传统的玩具式网格世界环境不同,该环境在完全使用随机化 Faker 种子在内存中生成的可操作 SQLite 数据库上,动态编排真实的故障场景(损坏的记录、暴露的 PII、损坏的管道视图)。Agent 必须自主查询 schema,推断异常,并编写精确的 SQL 逻辑来解决事故。 ## 🔄 环境概述 OpenDataOpsEnv 提供严格的 OpenEnv 规范合规性(Pydantic `Observation`、`Action` 和 `Reward` 模型)。为了防止 LLM 硬编码或“记忆”表名,绝对没有任何表名或列结构是静态的。整个环境在运行时使用确定性的随机种子动态重建。 ## 🎯 任务描述与难度 该环境包含三个程序化任务,难度呈阶梯式递增。评分器会动态评估并分配 `0.0` 到 `1.0` 之间的连续部分分数。 ### 任务 1:数据清理(简单) - **目标**:识别包含注入的 `NULL` 值的主键列所在的动态生成表。Agent 必须删除这些损坏的行,而不能清除任何有效的、健康的数据。 - **评分器**:验证合法记录总数保持完整,同时隔离 `NULL` 的删除。 ### 任务 2:PII 脱敏(中等) - **目标**:定位包含未脱敏的 PII(电子邮件和电话号码)的表。将电子邮件脱敏以强制执行 `a***@domain.com` 正则表达式格式,并将电话号码脱敏为 `***-***-XXXX` 格式,严格使用原位 SQL `UPDATE` 语句。`DROP COLUMN` 会被扣分。 - **评分器**:根据未更改的字段计数评估正则脱敏比例。 ### 任务 3:管道修复(困难) - **目标**:由于底层原始表列被神秘更改,之前用于聚合关键数据的 SQL `VIEW` 已损坏。Agent 必须查询内部 `error_log` 表,过滤噪声以找到缺失的列异常,揭示原始表 schema,删除损坏的视图,并使用正确的连接准确地重建它。 - **评分器**:将 Agent 恢复的管道输出与基线预期的数据结构进行匹配。 ## ⚡ 动作空间 环境仅接受由 `action_type` 区分的严格类型的 JSON 动作。 | 动作类型 | 结构 | 描述 | |:---:|:---|:---| | `query` | `{"action_type": "query", "sql": "..."}` | 执行安全的、只读的 SQL `SELECT` 语句以检查 schema 或数据。 | | `ddl` | `{"action_type": "ddl", "sql": "..."}` | 执行变更性的 SQL 逻辑(`UPDATE`、`DELETE`、`CREATE`、`DROP`)。 | | `test` | `{"action_type": "test", "target_table": "..."}` | 快速计算驻留在指定表中的总行数。 | | `submit` | `{"action_type": "submit"}` | 当 Agent 完成修复时终止该回合。 | ## 👁️ 观测空间 在每个时间步,Agent 都会收到一个丰富的状态 `Observation`: | 字段 | 类型 | 描述 | |:---|:---|:---| | `current_step` / `max_steps` | Integer | 当前的交互步骤和硬截断边界。 | | `task_id` / `task_description` | Integer / String | 当前场景 ID 和自然语言指令。 | | `last_action_status` | String | 执行边界(`SUCCESS`、`ERROR`、`NONE`)。 | | `last_error_message` | String | 用于指导调试的 SQLite 或 Python 堆栈跟踪消息。 | | `query_results` | List[Dict] | 包含从最后一次 `query` 返回的行的 JSON 数组。 | | `schema_info` | Dict | 所有活动表及其 `CREATE` 源字符串的实时映射。 | *注意:环境提供密集的奖励信号(+ 表示探索和部分指标,- 表示循环重复和语法错误)。* ## 📊 评估基线分数 使用标准模型上的 OpenAI 客户端架构在本地执行了推理,设置 `temperature=0.0`。 | 任务名称 | 模型 | 评分器分数 | |:---|:---|:---| | Data Cleaning (Task 1) | `llama-3.3-70b-versatile` | `1.000` | | PII Masking (Task 2) | `llama-3.3-70b-versatile` | `0.613` | | Pipeline Repair (Task 3)| `llama-3.3-70b-versatile` | `0.925` | ## 🚀 设置与启动说明 ### 环境要求 - Python 3.11+ - Hugging Face / Docker 部署兼容性 ### 选项 A:本地开发 1. 安装依赖: pip install -r requirements.txt 2. 启动 Uvicorn 环境: uvicorn app.api:app --host 0.0.0.0 --port 7860 ### 选项 B:Docker / Hugging Face Spaces 部署 此应用程序经过严格配置,以原生映射到端口 `7860`,从而匹配 Hugging Face Spaces 架构。 1. 构建轻量级镜像: docker build -t open-dataops-env . 2. 在分离模式下运行环境: docker run -d -p 7860:7860 open-dataops-env ### 运行基线 确保您的环境 API 可用(默认 `http://localhost:7860`)并导出您的 `OPENAI_API_KEY`: ``` export OPENAI_API_KEY="your_openai_api_key_here" python inference.py ```
标签:AIGC, AV绕过, DataOps, Docker, FastAPI, LLM Agent, OpenEnv, PII掩码, Python, RL环境, SQLite, SQL注入修复, 事故响应, 动态环境生成, 安全防御评估, 强化学习, 数据库管理, 数据脱敏, 数据质量, 数据运维, 无后门, 智能体训练, 网络安全, 自动化运维, 请求拦截, 逆向工具, 隐私保护