| 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 | |