Spaces:
Sleeping
Sleeping
Commit Β·
f2d88cb
1
Parent(s): 7dff36b
Clamp grader scores strictly between 0.001 and 0.999 in endpoint and model
Browse files- api/server.py +6 -5
- 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
|
| 195 |
-
|
| 196 |
"""
|
| 197 |
try:
|
| 198 |
if request.action is None:
|
| 199 |
return GraderResponse(
|
| 200 |
-
score = 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.
|
| 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"
|