| import uvicorn |
| from fastapi import FastAPI |
| from pydantic import BaseModel |
| from env import EmailSortingEnv |
|
|
| app = FastAPI( |
| title="Email Sorting OpenEnv", |
| version="1.0.0" |
| ) |
|
|
| env = EmailSortingEnv() |
|
|
| class StepRequest(BaseModel): |
| action: str |
|
|
| @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.get("/health") |
| def health(): |
| return {"status": "ok"} |
|
|
| @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()} |
|
|
| def main(): |
| uvicorn.run(app, host="0.0.0.0", port=7860) |
|
|
| if __name__ == "__main__": |
| main() |