Spaces:
Running
Running
| """fallback_utils.py — Funzioni di utilità per il loop di fallback. | |
| Estratto da unified_loop_fallback.py (split 2026-06-30). | |
| """ | |
| import re | |
| def _is_refusal(text: str) -> bool: | |
| """Verifica se la risposta del modello è un rifiuto (S129).""" | |
| if not text: return False | |
| refusals = ["mi dispiace", "non posso", "i apologize", "i cannot", "unauthorized", "access denied"] | |
| t = text.lower() | |
| return any(r in t for r in refusals) | |
| def _s759_bjac(a: str, b: str) -> float: | |
| """Calcola la somiglianza di Jaccard tra due stringhe (S759).""" | |
| if not a or not b: return 0.0 | |
| set_a = set(a.lower().split()) | |
| set_b = set(b.lower().split()) | |
| intersection = len(set_a.intersection(set_b)) | |
| union = len(set_a.union(set_b)) | |
| return intersection / union if union > 0 else 0.0 | |
| def _avg10(lst: list) -> float: | |
| """Calcola la media degli ultimi 10 elementi di una lista.""" | |
| if not lst: return 0.0 | |
| sub = lst[-10:] | |
| return sum(sub) / len(sub) | |