Mirror of GitHub source: OpenEnv-compliant LeniencyBench environment + training scripts
6b4f87f verified | from typing import Optional | |
| from fastapi import FastAPI, HTTPException | |
| from pydantic import BaseModel | |
| from email_env.models import Action, StepResult, State, Observation | |
| from email_env.server.environment import EmailTriageEnv | |
| from email_env.tasks import list_tasks, TASKS | |
| from email_env.grader import grade | |
| app = FastAPI(title="Email Triage OpenEnv", version="1.0.0") | |
| env = EmailTriageEnv() | |
| def root(): | |
| return { | |
| "name": "email-triage", | |
| "version": "1.0.0", | |
| "description": "Email Triage and Response OpenEnv Environment", | |
| "endpoints": ["/reset", "/step", "/state", "/tasks", "/grader", "/baseline"], | |
| } | |
| class ResetRequest(BaseModel): | |
| task_id: str = "task_1" | |
| class GradeRequest(BaseModel): | |
| task_id: str | |
| category: str | |
| priority: str | |
| response: str | |
| def reset(req: Optional[ResetRequest] = None): | |
| task_id = req.task_id if req else "task_1" | |
| try: | |
| obs = env.reset(task_id=task_id) | |
| except ValueError as e: | |
| raise HTTPException(status_code=400, detail=str(e)) | |
| return obs | |
| def step(action: Action): | |
| try: | |
| result = env.step(action) | |
| except RuntimeError as e: | |
| raise HTTPException(status_code=400, detail=str(e)) | |
| return result | |
| def state(): | |
| return env.state() | |
| def tasks(): | |
| return list_tasks() | |
| def grader(req: GradeRequest): | |
| if req.task_id not in TASKS: | |
| raise HTTPException(status_code=404, detail=f"Unknown task_id: {req.task_id}") | |
| action = {"category": req.category, "priority": req.priority, "response": req.response} | |
| score = grade(action, TASKS[req.task_id]) | |
| return {"task_id": req.task_id, "score": score} | |
| def baseline_info(): | |
| return { | |
| "description": "Run baseline.py locally with OPENAI_API_KEY set to evaluate the agent.", | |
| "command": "python -m email_env.baseline", | |
| } | |