Spaces:
Sleeping
Sleeping
File size: 1,298 Bytes
13ac338 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | from fastapi import FastAPI, HTTPException, Body
from pydantic import BaseModel
from typing import Dict, Optional, List
from env import EmailEnv
from models import Action, Observation
import uvicorn
import os
app = FastAPI(title="EmailTriage OpenEnv", description="A real-world email management and scheduling environment.")
# Global instance
env = EmailEnv()
@app.post("/reset")
async def reset_env(req: Optional[Dict] = Body(default={})):
task_id = req.get("task_id", req.get("level", 1)) if req else 1
obs, info = env.reset(options={"level": task_id})
return {
"observation": obs,
"info": info,
"status": "Ready"
}
@app.post("/step")
async def step_env(action: Dict):
obs, reward, terminated, truncated, info = env.step(action)
return {
"observation": obs,
"reward": float(reward),
"terminated": bool(terminated),
"truncated": bool(truncated),
"info": info
}
@app.get("/state")
async def get_state():
return env.state()
# Health check for HF Spaces
@app.get("/")
async def root():
return {"status": "running", "environment": "OpenEnv"}
if __name__ == "__main__":
# HF Spaces default port is 7860
port = int(os.getenv("PORT", 7860))
uvicorn.run(app, host="0.0.0.0", port=port)
|