junaid0600 commited on
Commit
f2d88cb
Β·
1 Parent(s): 7dff36b

Clamp grader scores strictly between 0.001 and 0.999 in endpoint and model

Browse files
Files changed (2) hide show
  1. api/server.py +6 -5
  2. env/models.py +6 -1
api/server.py CHANGED
@@ -191,17 +191,19 @@ async def tasks():
191
  async def grader(request: GraderRequest):
192
  """
193
  Grades a completed episode action.
194
- Returns float score 0.0-1.0. Never crashes.
195
- Edge cases: null action β†’ 0.0, unknown task β†’ 0.0.
196
  """
197
  try:
198
  if request.action is None:
199
  return GraderResponse(
200
- score = 0.0,
201
  feedback = "No action provided for grading.",
202
  breakdown = {"error": "null_action"}
203
  )
204
  score, breakdown, feedback = grade(request.action, request.task_id)
 
 
205
  return GraderResponse(
206
  score = score,
207
  feedback = feedback,
@@ -209,12 +211,11 @@ async def grader(request: GraderRequest):
209
  )
210
  except Exception as e:
211
  return GraderResponse(
212
- score = 0.0,
213
  feedback = f"Grader error: {str(e)}",
214
  breakdown = {"error": str(e)}
215
  )
216
 
217
-
218
  # ─────────────────────────────────────────────
219
  # 7. /baseline β€” POST
220
  # ─────────────────────────────────────────────
 
191
  async def grader(request: GraderRequest):
192
  """
193
  Grades a completed episode action.
194
+ Returns float score strictly between 0.0 and 1.0 exclusive.
195
+ Never crashes.
196
  """
197
  try:
198
  if request.action is None:
199
  return GraderResponse(
200
+ score = 0.001,
201
  feedback = "No action provided for grading.",
202
  breakdown = {"error": "null_action"}
203
  )
204
  score, breakdown, feedback = grade(request.action, request.task_id)
205
+ # Clamp strictly between 0 and 1 exclusive
206
+ score = max(0.001, min(0.999, score))
207
  return GraderResponse(
208
  score = score,
209
  feedback = feedback,
 
211
  )
212
  except Exception as e:
213
  return GraderResponse(
214
+ score = 0.001,
215
  feedback = f"Grader error: {str(e)}",
216
  breakdown = {"error": str(e)}
217
  )
218
 
 
219
  # ─────────────────────────────────────────────
220
  # 7. /baseline β€” POST
221
  # ─────────────────────────────────────────────
env/models.py CHANGED
@@ -185,10 +185,15 @@ class GraderRequest(BaseModel):
185
  episode: Optional[dict] = None
186
 
187
  class GraderResponse(BaseModel):
188
- score: float
189
  feedback: str
190
  breakdown: dict
191
 
 
 
 
 
 
192
  class HealthResponse(BaseModel):
193
  status: str = "ok"
194
  version: str = "1.0.0"
 
185
  episode: Optional[dict] = None
186
 
187
  class GraderResponse(BaseModel):
188
+ score: float = Field(..., gt=0.0, lt=1.0)
189
  feedback: str
190
  breakdown: dict
191
 
192
+ @field_validator("score")
193
+ @classmethod
194
+ def clamp_score(cls, v):
195
+ return max(0.001, min(0.999, round(v, 4)))
196
+
197
  class HealthResponse(BaseModel):
198
  status: str = "ok"
199
  version: str = "1.0.0"