| import json | |
| import os | |
| from typing import List, Dict, Any | |
| def load_tickets(path=None) -> List[Dict[str, Any]]: | |
| if path is None: | |
| path = os.path.join(os.path.dirname(__file__), "..", "data", "tickets.json") | |
| with open(path) as f: | |
| return json.load(f) | |
| def format_observation(obs) -> str: | |
| lines = [ | |
| f"Ticket : {obs.ticket_id}", | |
| f"Status : {obs.status}", | |
| f"Query : {obs.customer_query}", | |
| ] | |
| for i, msg in enumerate(obs.history, 1): | |
| lines.append(f" [{i}] {msg}") | |
| return "\n".join(lines) | |
| def log_step(step, action, reward): | |
| cat = action.category or "-" | |
| print(f"step {step:>2} | {action.action_type:<10} cat={cat:<12} score={reward.score:.2f} | {reward.feedback}") | |