DeepEval: Testare Unitară pentru LLM-uri cu Pytest în LLMOps, Evaluare & Securitate AI

Cum transformi evaluarea modelelor generative în teste unitare clasice care rulează automat în terminal cu pytest și blochează build-ul la scăderi de calitate.

Configurare & comandă
from deepeval import assert_test
from deepeval.test_case import LLMTestCase
from deepeval.metrics import HallucinationMetric

def test_halucinatie_asistent():
    caz = LLMTestCase(
        input="Ce garanție au produsele?",
        actual_output="Toate produsele au 24 de luni garanție conform legii.",
        context=["Politica firmei: oferim 24 de luni garanție legală."]
    )
    metrica = HallucinationMetric(threshold=0.2)
    assert_test(caz, [metrica])   # Rulează cu: pytest test_ai.py

Descriere & Utilizare

Majoritatea dezvoltatorilor sunt obișnuiți să scrie teste unitare cu pytest pentru funcțiile lor Python. DeepEval aduce exact aceeași filozofie în lumea modelelor mari de limbaj („The Open-Source LLM Evaluation Framework”).

În loc să testezi egalități exacte de stringuri (care eșuează din cauza naturii probabilistice a AI-ului), DeepEval folosește asertări pe metrici inteligente: assert_test(caz, [metrica]).

Include peste 14 metrici gata construite: HallucinationMetric, AnswerRelevancyMetric, G-Eval (evaluare pe baza oricăror criterii personalizate scrise în limbaj natural), ToxicityMetric și BiasMetric, integrându-se perfect în fluxul tău de Continuous Integration (CI/CD).

Cum să o reții ușor

💡 Este exact ca un test unitar obișnuit cu pytest, dar în loc să verifice dacă 2+2=4, verifică dacă răspunsul modelului respectă criteriile de bun-simț, adevăr și politețe stabilite de echipa ta.

Opțiuni și parametri tehnici

  • LLMTestCase(input, actual_output, expected_output, context): obiectul care conține toate datele necesare evaluării.
  • threshold: pragul numeric de toleranță (de la 0.0 la 1.0) peste care testul trece (PASSED) sau pică (FAILED).
  • GEval(name, criteria, evaluation_params): cea mai puternică metrică; îi poți da instrucțiuni precum „Verifică dacă tonul este profesional și respectuos”.
  • strict_mode=True: mod strict care eșuează testul dacă modelul judecător detectează chiar și o singură deviere minoră.

Exemple practice și cazuri de utilizare

  • Rularea testelor din terminal: pytest test_evaluare_ai.py -v (afișează scorul detaliat și explicația fiecărui test picat).
  • Testare de toxicitate și limbaj ofensator: metrica = ToxicityMetric(threshold=0.1).
  • Măsurarea conciziei: creează o metrică G-Eval cu criteriul „Răspunsul trebuie să fie mai scurt de 3 fraze și să nu conțină introduceri de politețe inutile”.

Sfaturi de configurare & capcane

Folosește DeepEval în suita de Pre-Commit Hooks sau în GitHub Actions: dacă un coleg modifică promptul de sistem și noul prompt introduce halucinații pe testele de referință, GitHub va bloca automat Pull Request-ul!

Comenzi și ghiduri înrudite