Spaces:
Sleeping
Sleeping
Commit ·
c0ebea1
1
Parent(s): 8fb9494
Harden OpenEnv grader entrypoints
Browse files
tasks/airline_seat_upsell_gauntlet/grader.py
CHANGED
|
@@ -4,6 +4,7 @@ from guardian_openenv.task_graders import grade_airline_seat_upsell_gauntlet
|
|
| 4 |
def grade(*args: Any, **kwargs: Any):
|
| 5 |
"""Grader function mapped for the OpenEnv Phase 2 validator."""
|
| 6 |
try:
|
| 7 |
-
|
|
|
|
| 8 |
except Exception:
|
| 9 |
return 0.001
|
|
|
|
| 4 |
def grade(*args: Any, **kwargs: Any):
|
| 5 |
"""Grader function mapped for the OpenEnv Phase 2 validator."""
|
| 6 |
try:
|
| 7 |
+
result = grade_airline_seat_upsell_gauntlet(*args, **kwargs)
|
| 8 |
+
return float(result)
|
| 9 |
except Exception:
|
| 10 |
return 0.001
|
tasks/marketplace_ghost_checkout/grader.py
CHANGED
|
@@ -4,6 +4,7 @@ from guardian_openenv.task_graders import grade_marketplace_ghost_checkout
|
|
| 4 |
def grade(*args: Any, **kwargs: Any):
|
| 5 |
"""Grader function mapped for the OpenEnv Phase 2 validator."""
|
| 6 |
try:
|
| 7 |
-
|
|
|
|
| 8 |
except Exception:
|
| 9 |
return 0.001
|
|
|
|
| 4 |
def grade(*args: Any, **kwargs: Any):
|
| 5 |
"""Grader function mapped for the OpenEnv Phase 2 validator."""
|
| 6 |
try:
|
| 7 |
+
result = grade_marketplace_ghost_checkout(*args, **kwargs)
|
| 8 |
+
return float(result)
|
| 9 |
except Exception:
|
| 10 |
return 0.001
|
tasks/value_hotel_budget_guard/grader.py
CHANGED
|
@@ -4,7 +4,8 @@ from guardian_openenv.task_graders import grade_value_hotel_budget_guard
|
|
| 4 |
def grade(*args: Any, **kwargs: Any):
|
| 5 |
"""Grader function mapped for the OpenEnv Phase 2 validator."""
|
| 6 |
try:
|
| 7 |
-
|
|
|
|
| 8 |
except Exception:
|
| 9 |
# Fallback to a valid score if evaluation throws to avoid full crash
|
| 10 |
return 0.001
|
|
|
|
| 4 |
def grade(*args: Any, **kwargs: Any):
|
| 5 |
"""Grader function mapped for the OpenEnv Phase 2 validator."""
|
| 6 |
try:
|
| 7 |
+
result = grade_value_hotel_budget_guard(*args, **kwargs)
|
| 8 |
+
return float(result)
|
| 9 |
except Exception:
|
| 10 |
# Fallback to a valid score if evaluation throws to avoid full crash
|
| 11 |
return 0.001
|
validate_submission.py
CHANGED
|
@@ -1,7 +1,10 @@
|
|
| 1 |
from __future__ import annotations
|
| 2 |
|
|
|
|
| 3 |
from pathlib import Path
|
| 4 |
|
|
|
|
|
|
|
| 5 |
from guardian_openenv.environment import GuardianReviewEnvironment
|
| 6 |
from guardian_openenv.models import ActionType, GuardianAction
|
| 7 |
from guardian_openenv.tasks import TASKS
|
|
@@ -19,11 +22,34 @@ def main() -> None:
|
|
| 19 |
if missing:
|
| 20 |
raise SystemExit(f"Missing required files: {', '.join(missing)}")
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
env = GuardianReviewEnvironment()
|
| 23 |
if len(TASKS) < 3:
|
| 24 |
raise SystemExit("At least 3 tasks are required.")
|
| 25 |
|
| 26 |
for task in TASKS:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
observation = env.reset(task.task_id)
|
| 28 |
if observation.task_id != task.task_id:
|
| 29 |
raise SystemExit(f"reset() returned wrong task for {task.task_id}")
|
|
|
|
| 1 |
from __future__ import annotations
|
| 2 |
|
| 3 |
+
import importlib
|
| 4 |
from pathlib import Path
|
| 5 |
|
| 6 |
+
import yaml
|
| 7 |
+
|
| 8 |
from guardian_openenv.environment import GuardianReviewEnvironment
|
| 9 |
from guardian_openenv.models import ActionType, GuardianAction
|
| 10 |
from guardian_openenv.tasks import TASKS
|
|
|
|
| 22 |
if missing:
|
| 23 |
raise SystemExit(f"Missing required files: {', '.join(missing)}")
|
| 24 |
|
| 25 |
+
manifest = yaml.safe_load(Path("openenv.yaml").read_text(encoding="utf-8")) or {}
|
| 26 |
+
manifest_graders = {
|
| 27 |
+
str(task.get("id")): str(task.get("grader"))
|
| 28 |
+
for task in manifest.get("tasks", [])
|
| 29 |
+
if task.get("id") and task.get("grader")
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
env = GuardianReviewEnvironment()
|
| 33 |
if len(TASKS) < 3:
|
| 34 |
raise SystemExit("At least 3 tasks are required.")
|
| 35 |
|
| 36 |
for task in TASKS:
|
| 37 |
+
grader_path = manifest_graders.get(task.task_id)
|
| 38 |
+
if not grader_path:
|
| 39 |
+
raise SystemExit(f"Task {task.task_id} is missing a grader in openenv.yaml")
|
| 40 |
+
module_name, function_name = grader_path.rsplit(":", 1)
|
| 41 |
+
grader_fn = getattr(importlib.import_module(module_name), function_name)
|
| 42 |
+
manifest_score = grader_fn()
|
| 43 |
+
if not isinstance(manifest_score, (int, float)):
|
| 44 |
+
raise SystemExit(
|
| 45 |
+
f"Manifest grader for {task.task_id} must return a plain numeric score, got {type(manifest_score).__name__}"
|
| 46 |
+
)
|
| 47 |
+
if not (0.0 < float(manifest_score) < 1.0):
|
| 48 |
+
raise SystemExit(
|
| 49 |
+
f"Manifest grader score out of range for {task.task_id}: {manifest_score} "
|
| 50 |
+
"(must be strictly between 0 and 1)"
|
| 51 |
+
)
|
| 52 |
+
|
| 53 |
observation = env.reset(task.task_id)
|
| 54 |
if observation.task_id != task.task_id:
|
| 55 |
raise SystemExit(f"reset() returned wrong task for {task.task_id}")
|