support-ticket-env / get_baseline.py
Vighnesh
result after no sleep
5d570d6
import os, sys
sys.path.insert(0, r'C:\Users\Admin\OneDrive\Desktop\OpenEnv Hacathon\support_ticket_env')
from support_ticket_env.server.support_environment import SupportTicketEnvironment
from support_ticket_env.models import SupportAction
CATEGORY_KEYWORDS = {
"billing": ["charge", "invoice", "payment", "bill", "refund", "subscription", "price", "cost", "fee", "money"],
"technical": ["error", "bug", "crash", "not working", "broken", "issue", "problem", "fail", "500", "api"],
"account": ["login", "password", "account", "access", "sign in", "email", "username", "cancel"],
"refund": ["refund", "return", "money back", "reimburse", "cancel order"],
"general": ["hours", "contact", "phone", "help", "question", "info", "support"],
}
def rule_based(obs):
text = obs.ticket_text.lower()
if not obs.current_category:
best_cat, best_score = "general", 0
for cat, keywords in CATEGORY_KEYWORDS.items():
score = sum(1 for kw in keywords if kw in text)
if score > best_score:
best_score = score
best_cat = cat
return {"action_type": "classify", "category": best_cat}
cat = obs.current_category
if cat == "technical":
return {"action_type": "escalate", "reason": "needs engineering"}
elif cat == "general":
return {"action_type": "close", "reason": "resolved"}
else:
return {"action_type": "reply", "reply_text": f"Thank you for contacting us about your {cat} issue."}
SEEDS = [42, 7, 123]
MAX_STEPS = 10
results = {}
for task_id in [1, 2, 3]:
scores = []
for seed in SEEDS:
env = SupportTicketEnvironment()
obs = env.reset(task_id=task_id, seed=seed)
rewards = []
for _ in range(MAX_STEPS):
if obs.done:
break
action_dict = rule_based(obs)
try:
action = SupportAction(**action_dict)
obs = env.step(action)
rewards.append(obs.reward or 0.0)
except:
rewards.append(0.0)
if obs.done:
break
score = round(min(max(sum(rewards) / MAX_STEPS, 0.0), 1.0), 3)
scores.append(score)
print(f" Task {task_id} seed={seed}: {score:.3f}")
avg = round(sum(scores) / len(scores), 3)
results["task" + str(task_id)] = avg
print(f" Task {task_id} avg: {avg:.3f}")
overall = round(sum(results.values()) / 3, 3)
results["overall"] = overall
print(f"Overall rule-based avg: {overall:.3f}")
print("Rule-based scores:", results)