Aneesha Das
Updated
fba0197
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from fastapi import FastAPI
from inference import run
from pydantic import BaseModel
from environment import EmailTriageEnv
app = FastAPI()
env=None
class Action(BaseModel):
action:dict
@app.post("/reset")
def reset(task: str = "easy"):
global env
env = EmailTriageEnv(task_id=task)
obs = env.reset()
return obs
@app.post("/step")
def step(action: Action):
global env
obs, reward, done, info = env.step(action.action)
return {
"observation": obs,
"reward": reward,
"done": done,
"info": info,
}
@app.get("/state")
def state():
global env
return env.state()
@app.get("/")
def root():
return {"status": "ok"}
@app.post("/run")
def run_endpoint():
"""
OpenEnv-required endpoint.
Calls your inference.run() function.
"""
try:
result = run()
return result
except Exception as e:
return {
"status": "error",
"message": str(e)
}
@app.get("/")
def home():
return {
"name": "Email Triage OpenEnv",
"status": "running",
"endpoint": "/run",
"usage": "POST with {task: easy|medium|hard}"
}
def main():
"""
Entry point for: uv run server
"""
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)
if __name__ == "__main__":
main()