| from fastapi import FastAPI |
| import gradio as gr |
|
|
| from env import EmailTriageEnv |
| from app import smart_agent_logic |
|
|
| app = FastAPI() |
|
|
| |
| |
| |
| @app.post("/reset") |
| async def reset(): |
| return {"status": "ok"} |
|
|
| @app.get("/status") |
| async def status(): |
| return {"status": "online"} |
|
|
|
|
| |
| |
| |
| def demo_fn(task): |
| env = EmailTriageEnv(task=task) |
| state = env.reset() |
|
|
| results = [] |
| total_reward = 0.0 |
| steps = 0 |
|
|
| while True: |
| if state.get("done"): |
| break |
|
|
| desc = state["description"] |
| action = smart_agent_logic(desc) |
|
|
| state, reward, done, _, _ = env.step(action) |
|
|
| total_reward += reward |
| steps += 1 |
|
|
| results.append( |
| f"### Step {steps}\n" |
| f"- π§ Email: {desc}\n" |
| f"- π€ Action: {action}\n" |
| f"- β Reward: {reward:.2f}\n" |
| f"---\n" |
| ) |
|
|
| if done: |
| break |
|
|
| score = total_reward / steps if steps > 0 else 0.0 |
|
|
| return f""" |
| # π Email Triage Results |
| |
| {''.join(results)} |
| |
| ## π Final Score: **{score:.3f} / 1.000** |
| """ |
|
|
|
|
| |
| |
| |
| demo = gr.Interface( |
| fn=demo_fn, |
| inputs=gr.Dropdown(["easy", "medium", "hard"], label="Select Difficulty"), |
| outputs=gr.Markdown(label="Results"), |
| title="π§ Email Gatekeeper", |
| description="AI Agent for Email Triage using Reinforcement Learning" |
| ) |
|
|
| |
| |
| |
| app = gr.mount_gradio_app(app, demo, path="/") |