""" 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()