SmartEmailAI / inference.py
gaurang671's picture
Upload 14 files
9e2986a verified
from typing import List, Literal
from pydantic import BaseModel
class EmailAction(BaseModel):
action_type: Literal['send', 'reply', 'archive', 'delete']
message: str = ""
email_id: int = None
class EmailEnv:
def __init__(self):
self.reset()
def reset(self):
self.emails = [
{"id": 1, "from": "alice@example.com", "subject": "Meeting Tomorrow", "label": "Work", "status": "Unread"},
{"id": 2, "from": "bob@example.com", "subject": "Lunch Plans", "label": "Personal", "status": "Archived"},
]
return {"emails": self.emails}
def step(self, action: dict):
if action["action_type"] == "send":
new_id = len(self.emails) + 1
self.emails.append({
"id": new_id,
"from": "me@example.com",
"subject": "New Mail",
"label": "Work",
"status": "Sent"
})
return {"emails": self.emails, "reward": 1, "done": False}
return {"emails": self.emails, "reward": 0, "done": False}
env = EmailEnv()
obs = None
def reset():
global obs
obs = env.reset()
return obs
def step(action):
global obs
result = env.step(action)
obs = result["emails"]
return result
def act():
return {"action_type": "send", "message": "Hello"}