#!/usr/bin/env python3 """ Uruchamia ewaluację jakości odpowiedzi LangGraph (DeepEval). Skrypt ten jest skrótem pozwalającym na łatwe włączanie testów LLMOps. """ import os import sys import subprocess import shutil def main(): print("==============================================") print(" Uruchamianie testów DeepEval (Faithfulness) ") print("==============================================") # 2. Uruchamiany konkretny zestaw testowy target_test = os.path.join( os.path.dirname(__file__), "..", "tests", "test_deepeval_rag.py" ) print(f"[*] Wykorzystywany zbiór testów: {target_test}") # Znajdź 'deepeval' - albo w PATH, albo w sys.executable's Scripts folder deepeval_bin = shutil.which("deepeval") if not deepeval_bin: deepeval_bin = os.path.join( os.path.dirname(sys.executable), "Scripts", "deepeval.exe" ) if not os.path.exists(deepeval_bin): print("[!] Biblioteka 'deepeval' nieznaleziona.") print("Aby uruchomić ewaluację lokalnie wpisz:") print(" pip install -r requirements-dev.txt") sys.exit(1) print(f"[*] Wykonywanie przez {deepeval_bin} ...") env = os.environ.copy() env["PYTHONPATH"] = os.path.join(os.path.dirname(__file__), "..") env["PYTHONIOENCODING"] = "utf-8" result = subprocess.run( [deepeval_bin, "test", "run", target_test], cwd=os.path.join(os.path.dirname(__file__), ".."), env=env, text=True, encoding="utf-8", ) print("\n----------------------------------------------") if result.returncode == 0: print("[V] Zakończono pomyślnie. Nie wykryto halucynacji poniżej progu.") else: print( "[X] Wykryto nieścisłości (odpowiedzi mogły wziąć dane z zewnątrz Prawnika)." ) if __name__ == "__main__": main()