Spaces:
Sleeping
Sleeping
| import uvicorn | |
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from env import EmailSortingEnv | |
| # Create FastAPI app | |
| app = FastAPI( | |
| title="Email Sorting OpenEnv", | |
| description="Real-world email sorting environment for RL agents", | |
| version="1.0.0" | |
| ) | |
| # One global environment instance | |
| env = EmailSortingEnv() | |
| # ============================================ | |
| # REQUEST MODELS | |
| # ============================================ | |
| class StepRequest(BaseModel): | |
| action: str | |
| # ============================================ | |
| # API ENDPOINTS | |
| # ============================================ | |
| def health_check(): | |
| return {"status": "ok", "message": "Email Sorting Environment is running"} | |
| def root(): | |
| return { | |
| "name": "Email Sorting OpenEnv", | |
| "version": "1.0.0", | |
| "description": "Sort emails as spam, important, or promotion", | |
| "endpoints": ["/reset", "/step", "/state", "/health"] | |
| } | |
| def reset(): | |
| state = env.reset() | |
| return {"status": "success", "state": state} | |
| 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 | |
| } | |
| def get_state(): | |
| return {"status": "success", "state": env.state()} | |
| def run_graders(): | |
| from graders import run_all_graders | |
| results = run_all_graders() | |
| return {"status": "success", "results": results} | |
| # ============================================ | |
| # START SERVER | |
| # ============================================ | |
| 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() |