Spaces:
Sleeping
Sleeping
Pranav Dhiran commited on
Commit ·
ff28a86
1
Parent(s): 50c7596
final 2 3
Browse files- app/environment.py +19 -0
app/environment.py
CHANGED
|
@@ -65,6 +65,22 @@ class EnvironmentManager:
|
|
| 65 |
def __init__(self):
|
| 66 |
self._sessions: Dict[str, Session] = {}
|
| 67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
def reset(self, task_id: str, seed: int = 42) -> Tuple[Observation, str]:
|
| 69 |
"""Start a new episode. Returns (initial_observation, session_id)."""
|
| 70 |
if task_id not in TASK_REGISTRY:
|
|
@@ -147,6 +163,7 @@ class EnvironmentManager:
|
|
| 147 |
|
| 148 |
# Grade for info
|
| 149 |
score, grade_breakdown = task.grade(session.world_state, session.action_history)
|
|
|
|
| 150 |
|
| 151 |
reward_obj = Reward(
|
| 152 |
value=round(step_reward, 4),
|
|
@@ -173,6 +190,7 @@ class EnvironmentManager:
|
|
| 173 |
session = self._sessions[session_id]
|
| 174 |
task = TASK_REGISTRY[session.task_id]
|
| 175 |
score, _ = task.grade(session.world_state, session.action_history)
|
|
|
|
| 176 |
return session.to_state_response(grader_score=score)
|
| 177 |
|
| 178 |
def grade(self, session_id: str) -> GraderResponse:
|
|
@@ -181,6 +199,7 @@ class EnvironmentManager:
|
|
| 181 |
session = self._sessions[session_id]
|
| 182 |
task = TASK_REGISTRY[session.task_id]
|
| 183 |
score, breakdown = task.grade(session.world_state, session.action_history)
|
|
|
|
| 184 |
|
| 185 |
passing = score >= task.passing_score
|
| 186 |
return GraderResponse(
|
|
|
|
| 65 |
def __init__(self):
|
| 66 |
self._sessions: Dict[str, Session] = {}
|
| 67 |
|
| 68 |
+
@staticmethod
|
| 69 |
+
def _clamp_score_strict(score: float, eps: float = 1e-6) -> float:
|
| 70 |
+
"""
|
| 71 |
+
Hackathon validator requirement: task scores must be strictly within (0, 1).
|
| 72 |
+
We clamp away from exact endpoints to avoid returning 0.0 or 1.0.
|
| 73 |
+
"""
|
| 74 |
+
try:
|
| 75 |
+
s = float(score)
|
| 76 |
+
except Exception:
|
| 77 |
+
s = 0.0
|
| 78 |
+
if s <= 0.0:
|
| 79 |
+
return eps
|
| 80 |
+
if s >= 1.0:
|
| 81 |
+
return 1.0 - eps
|
| 82 |
+
return s
|
| 83 |
+
|
| 84 |
def reset(self, task_id: str, seed: int = 42) -> Tuple[Observation, str]:
|
| 85 |
"""Start a new episode. Returns (initial_observation, session_id)."""
|
| 86 |
if task_id not in TASK_REGISTRY:
|
|
|
|
| 163 |
|
| 164 |
# Grade for info
|
| 165 |
score, grade_breakdown = task.grade(session.world_state, session.action_history)
|
| 166 |
+
score = self._clamp_score_strict(score)
|
| 167 |
|
| 168 |
reward_obj = Reward(
|
| 169 |
value=round(step_reward, 4),
|
|
|
|
| 190 |
session = self._sessions[session_id]
|
| 191 |
task = TASK_REGISTRY[session.task_id]
|
| 192 |
score, _ = task.grade(session.world_state, session.action_history)
|
| 193 |
+
score = self._clamp_score_strict(score)
|
| 194 |
return session.to_state_response(grader_score=score)
|
| 195 |
|
| 196 |
def grade(self, session_id: str) -> GraderResponse:
|
|
|
|
| 199 |
session = self._sessions[session_id]
|
| 200 |
task = TASK_REGISTRY[session.task_id]
|
| 201 |
score, breakdown = task.grade(session.world_state, session.action_history)
|
| 202 |
+
score = self._clamp_score_strict(score)
|
| 203 |
|
| 204 |
passing = score >= task.passing_score
|
| 205 |
return GraderResponse(
|