| import uvicorn |
| from fastapi import FastAPI |
| from pydantic import BaseModel |
| from env import EmailSortingEnv |
|
|
| |
| app = FastAPI( |
| title="Email Sorting OpenEnv", |
| description="Real-world email sorting environment for RL agents", |
| version="1.0.0" |
| ) |
|
|
| |
| env = EmailSortingEnv() |
|
|
| |
| |
| |
|
|
| class StepRequest(BaseModel): |
| action: str |
|
|
| |
| |
| |
|
|
| @app.get("/health") |
| def health_check(): |
| return {"status": "ok", "message": "Email Sorting Environment is running"} |
|
|
| @app.get("/") |
| def root(): |
| return { |
| "name": "Email Sorting OpenEnv", |
| "version": "1.0.0", |
| "description": "Sort emails as spam, important, or promotion", |
| "endpoints": ["/reset", "/step", "/state", "/health"] |
| } |
|
|
| @app.post("/reset") |
| def reset(): |
| state = env.reset() |
| return {"status": "success", "state": state} |
|
|
| @app.post("/step") |
| def step(request: StepRequest): |
| next_state, reward, done, info = env.step(request.action) |
| return { |
| "status": "success", |
| "state": next_state, |
| "reward": reward, |
| "done": done, |
| "info": info |
| } |
|
|
| @app.get("/state") |
| def get_state(): |
| return {"status": "success", "state": env.state()} |
|
|
| @app.get("/graders") |
| def run_graders(): |
| from graders import run_all_graders |
| results = run_all_graders() |
| return {"status": "success", "results": results} |
|
|
| |
| |
| |
|
|
| def main(): |
| print("Starting Email Sorting Environment Server...") |
| print("Server running at http://localhost:7860") |
| uvicorn.run(app, host="0.0.0.0", port=7860) |
|
|
| if __name__ == "__main__": |
| main() |