Omkar1806 commited on
Commit
61e6f3e
·
verified ·
1 Parent(s): d90b742

Update server/app.py

Browse files
Files changed (1) hide show
  1. server/app.py +45 -50
server/app.py CHANGED
@@ -1,67 +1,62 @@
1
- import sys
2
  import os
3
- import uvicorn
4
- import numpy as np
5
- import gradio as gr
6
- from fastapi import FastAPI
7
 
8
- # Path fix taaki env.py mil jaye
9
- sys.path.append(os.path.dirname(os.path.abspath(__file__)))
10
- from env import EmailTriageEnv, URGENCY_LABELS, ROUTING_LABELS, RESOLUTION_LABELS
11
 
12
- app = FastAPI()
13
 
14
- def smart_agent_logic(desc):
15
  desc = desc.lower()
 
16
  if any(x in desc for x in ["password", "hacked", "breach", "phish", "threat", "ransomware"]):
17
  return [2, 2, 2] if "threat" in desc or "ransomware" in desc else [2, 1, 2]
18
- if any(x in desc for x in ["billing", "refund", "dispute", "invoice", "payment"]):
 
19
  return [1, 2, 2]
20
- if any(x in desc for x in ["support", "routine", "slow", "error"]):
 
21
  return [0, 1, 1]
 
22
  return [0, 0, 0]
23
 
24
- def run_demo(task):
25
- try:
26
- env = EmailTriageEnv(task=task)
27
- env.reset()
28
- results = []; total_reward = 0
29
- print(f"[START] Task: {task}")
30
- for i, email in enumerate(env._queue):
31
- action = smart_agent_logic(email['description'])
32
- _, reward, _, _, _ = env.step(action)
33
- total_reward += reward
34
- print(f"[STEP] Index: {i} | Action: {action} | Reward: {reward}")
35
- status = "✅ MATCH" if reward >= 1.0 else "❌ MISMATCH"
36
- results.append(f"#{i+1} [{task.upper()}] {email['description'][:30]}... | {status}")
37
- score = total_reward / len(env._queue) if env._queue else 0
38
- print(f"[END] Final Score: {score}")
39
- return "\n".join(results) + f"\n\n--- FINAL SCORE: {score:.3f} ---"
40
- except Exception as e:
41
- return f"Error: {str(e)}"
42
-
43
- # --- REQUIRED BY VALIDATOR ---
 
 
 
 
 
 
 
 
 
 
 
 
44
  def main():
45
- print("--- 🚀 STARTING MULTI-MODE DEPLOYMENT TEST ---")
46
- for level in ["easy", "medium", "hard"]:
47
- print(run_demo(level))
48
 
49
- @app.post("/reset")
50
- async def reset_endpoint():
51
- return {"status": "success"}
52
 
53
- # Gradio Setup
54
- with gr.Blocks() as demo:
55
- gr.Markdown("# 📧 Email Gatekeeper AI")
56
- diff = gr.Dropdown(["easy", "medium", "hard"], value="easy", label="Difficulty")
57
- btn = gr.Button("Analyze Emails")
58
- out = gr.Textbox(label="Logs", lines=10)
59
- btn.click(run_demo, inputs=diff, outputs=out)
60
 
61
- app = gr.mount_gradio_app(app, demo, path="/")
62
 
63
  if __name__ == "__main__":
64
- if len(sys.argv) > 1 and sys.argv[1] == "--test":
65
- main()
66
- else:
67
- uvicorn.run(app, host="0.0.0.0", port=7860)
 
 
1
  import os
2
+ from typing import List, Tuple
 
 
 
3
 
4
+ from env import EmailTriageEnv
 
 
5
 
 
6
 
7
+ def smart_agent_logic(desc: str) -> List[int]:
8
  desc = desc.lower()
9
+
10
  if any(x in desc for x in ["password", "hacked", "breach", "phish", "threat", "ransomware"]):
11
  return [2, 2, 2] if "threat" in desc or "ransomware" in desc else [2, 1, 2]
12
+
13
+ if any(x in desc for x in ["billing", "refund", "invoice", "payment"]):
14
  return [1, 2, 2]
15
+
16
+ if any(x in desc for x in ["slow", "error", "bug", "support"]):
17
  return [0, 1, 1]
18
+
19
  return [0, 0, 0]
20
 
21
+
22
+ def run_episode(task: str) -> Tuple[float, List[float], int]:
23
+ env = EmailTriageEnv(task=task)
24
+
25
+ state = env.reset()
26
+
27
+ rewards: List[float] = []
28
+ steps = 0
29
+ total_reward = 0.0
30
+
31
+ while True:
32
+ if state.get("done"):
33
+ break
34
+
35
+ desc = state["description"]
36
+
37
+ action = smart_agent_logic(desc)
38
+
39
+ state, reward, done, _, _ = env.step(action)
40
+
41
+ rewards.append(reward)
42
+ total_reward += reward
43
+ steps += 1
44
+
45
+ if done:
46
+ break
47
+
48
+ score = total_reward / len(rewards) if rewards else 0.0
49
+
50
+ return score, rewards, steps
51
+
52
+
53
  def main():
54
+ task = os.getenv("MY_ENV_V4_TASK", "easy")
 
 
55
 
56
+ score, rewards, steps = run_episode(task)
 
 
57
 
58
+ print(f"Task={task} | Steps={steps} | Score={score:.3f}")
 
 
 
 
 
 
59
 
 
60
 
61
  if __name__ == "__main__":
62
+ main()