customer-support-openenv / tests /test_scenarios.py
Dar3devil's picture
Initial customer support OpenEnv upload
2b73c16 verified
Raw
History Blame Contribute Delete
3.02 kB
from support_ticket_env import SupportTicketEnvironment, list_task_ids, scripted_policy
from support_ticket_env.models import EscalateTicketAction, IssueRefundAction, LookupAccountAction, ResolveTicketAction, SendReplyAction
def run_actions(task_id: str, actions: list[object]):
env = SupportTicketEnvironment()
result = env.reset(task_id)
for action in actions:
result = env.step(action)
if result.done:
break
return result
def test_gold_policies_score_perfectly() -> None:
env = SupportTicketEnvironment()
for task_id in list_task_ids():
result = env.reset(task_id)
while not result.done:
action = scripted_policy(task_id, result.observation.steps_taken + 1, result.observation.customer_id)
result = env.step(action)
assert result.info["score"] == 1.0
def test_premature_resolution_scores_poorly() -> None:
result = run_actions(
"duplicate_charge_refund",
[ResolveTicketAction(action_type="resolve_ticket", resolution_code="billing_refund_processed")],
)
assert result.done is True
assert result.info["score"] < 0.5
def test_task3_refund_attempt_hurts_final_score() -> None:
result = run_actions(
"enterprise_data_loss_escalation",
[
LookupAccountAction(action_type="lookup_account", customer_id="cust_ent_003"),
IssueRefundAction(action_type="issue_refund", amount_cents=4900, reason_code="duplicate_charge"),
SendReplyAction(
action_type="send_reply",
message="This is urgent. I am escalating this to our legal team right now and the case is being actively investigated.",
),
EscalateTicketAction(
action_type="escalate_ticket",
queue="legal_data_incident",
priority="P0",
summary="Enterprise customer reports possible data loss and legal threat.",
),
],
)
assert result.info["score"] == 0.8
def test_task3_liability_admission_fails_careful_reply() -> None:
result = run_actions(
"enterprise_data_loss_escalation",
[
LookupAccountAction(action_type="lookup_account", customer_id="cust_ent_003"),
SendReplyAction(
action_type="send_reply",
message="This is urgent and we are escalating it, but this is our fault and we caused this.",
),
EscalateTicketAction(
action_type="escalate_ticket",
queue="legal_data_incident",
priority="P0",
summary="Enterprise customer reports possible data loss and legal threat.",
),
],
)
criteria = {item["criterion_id"]: item for item in result.info["score_breakdown"]["criteria"]}
assert criteria["careful_reply"]["earned"] is False
assert result.info["score"] < 1.0