import random from typing import Dict, List class UserSimulator: def __init__(self, ticket: Dict): self.ticket_id = ticket.get("id", "") self.initial_text = ticket.get("initial_text", "") self.clarified_text = ticket.get("clarified_text", "") self.trigger_phrases: List[str] = ticket.get("trigger_phrases", []) self.gold_faq_id = ticket.get("gold_faq_id", "") self.state = "initial" self.issue_resolved = False self.clarification_given = False def respond(self, agent_message: str) -> str: agent_message_lower = agent_message.lower() if self.state == "initial": if any(phrase.lower() in agent_message_lower for phrase in self.trigger_phrases): self.state = "clarified" self.clarification_given = True return self.clarified_text return random.choice( [ "I'm not sure what you mean", "Can you help me?", "It just stopped working", ] ) if self.state == "clarified": guidance_keywords = ["try", "follow", "steps", "should", "please"] if any(keyword in agent_message_lower for keyword in guidance_keywords): self.state = "waiting_resolve" return "Ok I will try that, thanks" if self.state == "waiting_resolve": self.issue_resolved = True return "Yes that fixed it!" return "Can you help me?" def confirm_resolved(self) -> bool: return self.issue_resolved