Spaces:
Sleeping
Sleeping
| """ | |
| Script de test pour Avis'IA Resto | |
| Parcourt tous les avis de avis_test.csv, génère une réponse pour chacun | |
| et affiche les résultats avec la source utilisée (llm ou fallback). | |
| Usage local ou dans le terminal du Space : | |
| python test_avis.py | |
| Prérequis : la variable d'environnement MISTRAL_API_KEY doit être définie | |
| pour tester le mode LLM. Sans elle, le script valide le mode fallback. | |
| """ | |
| import csv | |
| import sys | |
| # On importe directement les fonctions de l'application | |
| from app import generer_reponse | |
| def lancer_tests(fichier_csv: str = "avis_test.csv"): | |
| resultats = {"llm": 0, "fallback": 0, "erreurs": 0} | |
| try: | |
| with open(fichier_csv, encoding="utf-8") as f: | |
| lecteur = csv.DictReader(f, delimiter=";") | |
| lignes = list(lecteur) | |
| except FileNotFoundError: | |
| print(f"❌ Fichier introuvable : {fichier_csv}") | |
| sys.exit(1) | |
| print(f"🧪 Test de {len(lignes)} avis clients\n" + "=" * 70) | |
| for i, ligne in enumerate(lignes, start=1): | |
| note = int(ligne["note"]) | |
| nom = ligne["nom_restaurant"] | |
| avis = ligne["avis"] | |
| print(f"\n--- Avis {i}/{len(lignes)} | {note}/5 étoiles ---") | |
| print(f"CLIENT : {avis[:100]}{'...' if len(avis) > 100 else ''}") | |
| try: | |
| reponse, source = generer_reponse(avis, note, nom) | |
| resultats[source] += 1 | |
| etiquette = "🤖 LLM" if source == "llm" else "📋 FALLBACK" | |
| print(f"{etiquette} : {reponse}") | |
| # Vérifications basiques de qualité | |
| if not reponse.strip(): | |
| print("⚠️ ALERTE : réponse vide !") | |
| resultats["erreurs"] += 1 | |
| if len(reponse) > 1200: | |
| print("⚠️ ALERTE : réponse anormalement longue.") | |
| except Exception as e: | |
| resultats["erreurs"] += 1 | |
| print(f"❌ ERREUR : {e}") | |
| print("\n" + "=" * 70) | |
| print("📊 BILAN") | |
| print(f" Réponses générées par le LLM : {resultats['llm']}") | |
| print(f" Réponses en mode fallback : {resultats['fallback']}") | |
| print(f" Erreurs : {resultats['erreurs']}") | |
| if resultats["erreurs"] == 0: | |
| print("\n✅ Tous les tests sont passés. L'application est prête pour la démo.") | |
| else: | |
| print("\n❌ Des erreurs sont survenues, vérifiez les logs ci-dessus.") | |
| if __name__ == "__main__": | |
| lancer_tests() | |