| from fastapi import FastAPI
|
|
|
| import sys
|
| import os
|
|
|
|
|
| sys.path.append(os.path.abspath(".."))
|
| from environment import EmailTriageEnv
|
| app = FastAPI()
|
| env = None
|
|
|
| from models import (
|
| Action, Priority, Category, RouteTo,
|
| )
|
|
|
|
|
| @app.post("/reset")
|
| def reset(task: str = "easy"):
|
| global env
|
| env = EmailTriageEnv(task_id=task)
|
| obs = env.reset()
|
| return {"observation": obs}
|
|
|
|
|
|
|
|
|
| @app.post("/step")
|
| def step(action: dict):
|
| global env
|
|
|
| if env is None:
|
| env = EmailTriageEnv(task_id="easy")
|
| env.reset()
|
|
|
| try:
|
| action_obj = Action(
|
| email_id=action.get("email_id"),
|
| priority=Priority(action.get("priority", "medium")),
|
| category=Category(action.get("category", "general_inquiry")),
|
| route_to=RouteTo(action.get("route_to", "support_tier1")),
|
| summary=action.get("summary", "fallback"),
|
| flag_review=action.get("flag_review", False),
|
| reasoning=action.get("reasoning", ""),
|
| reply_draft=action.get("reply_draft", None)
|
| )
|
|
|
| obs, reward, done, info = env.step(action_obj)
|
|
|
| return {
|
| "observation": obs.model_dump(),
|
| "reward": getattr(reward, "total", reward),
|
| "done": done,
|
| "info": info
|
| }
|
|
|
| except Exception as e:
|
| return {"error": str(e)}
|
|
|
| @app.post("/run")
|
| def run_endpoint():
|
| from inference import run
|
| return run()
|
|
|
|
|
|
|