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, 凭据扫描, 大模型评估, 强化学习环境, 数据工程, 请求拦截, 逆向工具