Spaces:
Sleeping
Sleeping
File size: 1,356 Bytes
9e2986a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 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"}
|