aditihedaoo26/dataops-warroom

GitHub: aditihedaoo26/dataops-warroom

该项目是一个模拟真实数据管道事故的 OpenEnv 强化学习环境,用于评测 AI agent 在 DataOps 运维场景中的故障排查与处理能力。

Stars: 0 | Forks: 0

## 标题:DataOps War Room emoji: 🚨 colorFrom: red colorTo: blue sdk: docker pinned: false app_port: 7860 # DataOps War Room 🚨 **Meta PyTorch OpenEnv 黑客松参赛作品** 这是一个真实的 OpenEnv 环境,AI agent 在一家医疗分析公司中扮演 **数据工程运维专家**。生产环境的 data pipeline 出现了故障——agent 必须处理一系列真实的运维问题。 ## 环境描述 DataOps War Room 模拟了生产环境 data pipeline 事故的完整生命周期: | 任务 | 难度 | 描述 | |------|-----------|-------------| | `task1_triage` | 简单 | 读取日志和警报,对根因、严重程度和受影响的服务进行分类 | | `task2_sql` | 中等 | 重写缓慢或损坏的 SQL 查询,确保其正确且高性能 | | `task3_cleaning` | 中偏难 | 清理脏的临床数据集,并记录所有问题和操作 | | `task4_review` | 困难 | 审查 pipeline 代码中的 bug、安全漏洞,并提供修复建议 | **为什么这很重要:** 每家数据驱动的公司——尤其是医疗领域——都需要处理值班轮换、应对糟糕的查询、清理上游数据以及审查 pipeline 代码。通过将这些日常人工任务变为可测试和可衡量的内容,该环境填补了 RL/agent 生态系统中的一个真实空白。 ## Action 与 Observation 空间 ### 观察 ``` class Observation(BaseModel): task_id: str phase: TaskPhase # triage | sql_optimization | data_cleaning | code_review context: Dict[str, Any] # task-specific payload (logs, SQL, data records, code) instructions: str step_count: int max_steps: int ``` ### Actions(每个任务一个) ``` # Task 1 class TriageAction(BaseModel): root_cause: RootCause # sql_error | schema_drift | data_quality | ... severity: Severity # low | medium | high | critical affected_services: List[str] summary: str # Task 2 class SQLAction(BaseModel): rewritten_query: str explanation: str # Task 3 class CleaningAction(BaseModel): cleaned_records: List[CleanedRecord] issues_found: List[str] actions_taken: List[str] # Task 4 class CodeReviewAction(BaseModel): issues: List[CodeIssue] # {line, severity, issue_type, description, suggested_fix} summary: str ``` ### 奖励 所有的 grader 都会生成一个 `Reward`,包含 `value ∈ [0.0, 1.0]` 和一个 `breakdown` 字典。评分过程是完全确定且可复现的。 ## 评分标准 ### 任务 1 — Triage | 维度 | 权重 | |-----------|--------| | 根因(精确匹配) | 40% | | 严重程度(精确匹配;相邻级别 = 50%) | 30% | | 受影响的服务(Jaccard 相似度) | 20% | | 总结质量(长度 ≥ 30 个字符) | 10% | ### 任务 2 — SQL 优化 | 维度 | 权重 | |-----------|--------| | 包含预期的 SQL 结构 | 45% | | 移除了反模式 | 25% | | 解释质量 | 20% | | 基本的语法有效性 | 10% | ### 任务 3 — 数据清理 | 维度 | 权重 | |-----------|--------| | 问题召回率(关键词匹配) | 40% | | 返回了所有患者记录 | 30% | | 记录了每条数据的操作 | 20% | | 无数据丢失 | 10% | ### 任务 4 — 代码审查 | 维度 | 权重 | |-----------|--------| | 问题召回率(类型 + 标签匹配) | 40% | | 专门涵盖了安全问题 | 25% | | 修复质量(具体,针对代码) | 25% | | 总结包含风险等级评估 | 10% | ## 基准分数 使用 `gpt-4o` 在 temperature 为 0.0、seed 为 42 的条件下测得: | 任务 | 分数 | |------|-------| | task1_triage | 0.72 | | task2_sql | 0.58 | | task3_cleaning | 0.61 | | task4_review | 0.44 | | **平均** | **0.59** | ## 设置与使用 ### 本地开发 ``` # 克隆并安装 git clone cd dataops-warroom pip install -r requirements.txt # 运行 API 服务器 python app.py # 运行 baseline inference(需要 API 凭据) export API_BASE_URL="https://api.openai.com/v1" export MODEL_NAME="gpt-4o" export HF_TOKEN="your-api-key" python inference.py ``` ### Docker ``` docker build -t dataops-warroom . docker run -p 7860:7860 \ -e API_BASE_URL=https://api.openai.com/v1 \ -e MODEL_NAME=gpt-4o \ -e HF_TOKEN=your-key \ dataops-warroom ``` ### API 端点 | 方法 | 路径 | 描述 | |--------|------|-------------| | GET | `/` | 健康检查(返回 200) | | GET | `/tasks` | 列出所有任务 | | POST | `/reset` | 重置环境:`{"task_id": "task1_triage", "seed": 42}` | | POST | `/step` | 提交 action:`{"action": {...}}` | | GET | `/state` | 获取当前环境状态:`?task_id=task1_triage` | | POST | `/grade` | 直接对 action 进行评分(重置+执行) | ### 使用 Python SDK ``` from environment import DataOpsWarRoomEnv from environment.models import Action, TaskPhase, TriageAction, RootCause, Severity env = DataOpsWarRoomEnv(task_id="task1_triage", seed=42) obs = env.reset() print(obs.context["logs"]) # production logs print(obs.instructions) # task instructions action = Action( task_id="task1_triage", phase=TaskPhase.TRIAGE, triage=TriageAction( root_cause=RootCause.SCHEMA_DRIFT, severity=Severity.HIGH, affected_services=["reporting_dashboard", "ml_feature_store"], summary="Pipeline failed due to a renamed column in patient_vitals table.", ), ) obs, reward, done, info = env.step(action) print(f"Score: {reward.value}") # e.g. 0.90 print(f"Feedback: {reward.feedback}") ``` ## 项目结构 ``` dataops-warroom/ ├── app.py # FastAPI server (HF Space entry point) ├── inference.py # Baseline inference script (OpenAI client) ├── openenv.yaml # OpenEnv metadata & task registry ├── requirements.txt ├── Dockerfile ├── README.md ├── environment/ │ ├── __init__.py │ ├── env.py # DataOpsWarRoomEnv (reset/step/state) │ └── models.py # Typed Pydantic models (Observation/Action/Reward) ├── tasks/ │ ├── task1_triage.py # Scenario generation + observation builder │ ├── task2_sql.py │ ├── task3_cleaning.py │ └── task4_review.py └── graders/ ├── grader1.py # Deterministic grader for each task ├── grader2.py ├── grader3.py └── grader4.py ``` ## 设计决策 **Reward shaping:** 每个 grader 都会对部分进展给予奖励,而不仅仅是二元的通过/失败。例如,Triage 会针对相邻的严重级别给予部分分数,而 SQL 评分会对每个正确的结构独立奖励。 **场景多样性:** 每个任务在重置时都会采样 3–4 个不同的场景,确保 grader 不会被死记硬背所破解。使用 `seed` 以确保可复现性。 **困难任务:** 任务 4(代码审查)对前沿模型构成了真正的挑战——它需要识别出涵盖 bug 类别和安全漏洞的 8–9 个不同问题,并提供具体的修复建议。GPT-4o 的基准分数约为 0.44。 ## 许可证 MIT
标签:AI智能体, DataOps, PyTorch, 凭据扫描, 大模型评估, 强化学习环境, 数据工程, 请求拦截, 逆向工具