import torch def generate_explanation(transaction, tokenizer, model, device=torch.device("cpu")): if tokenizer is None or model is None: return "Explanation service unavailable" try: text = ( f"Amount: ${transaction['amount']:.2f}, " f"Credit Limit: ${transaction['credit_limit']:.2f}, " f"Ratio: {transaction['amount_ratio']:.2f}, " f"Chip Usage: {transaction.get('use_chip', 'N/A')}" ) inputs = tokenizer([text], return_tensors="pt", truncation=True, padding=True).to(device) with torch.no_grad(): outputs = model(**inputs) probs = torch.nn.functional.softmax(outputs.logits, dim=-1) return f"Risk assessment: {probs[0][1]*100:.1f}% suspicious activity likelihood" except Exception as e: return f"Error generating explanation: {e}"