Evaluare automată cu G-Eval (LLM-as-a-judge cu pași de raționament) în LLMOps, Evaluare & Securitate AI

G-Eval este o metodă de evaluare cu un LLM judecător care generează pași de evaluare din criterii și ponderează scorul cu probabilitățile tokenilor.

Configurare & comandă
# G-Eval (Liu et al., 2023), pe scurt
1. Criteriul de evaluare (de exemplu coerență) este dat în limbaj natural.
2. Modelul generează pașii de evaluare (chain-of-thought automat).
3. Modelul completează un formular cu scorul (form-filling).
4. Scorul final = suma scorurilor posibile ponderată cu probabilitatea fiecărui token de scor.

G-Eval a fost propus în lucrarea „G-Eval: NLG Evaluation using GPT-4 with Better Human Alignment” (Yang Liu și coautori, 2023). Metricile bazate pe referințe, precum BLEU și ROUGE, au corelație relativ mică cu judecata umană la sarcini creative; G-Eval folosește un LLM cu chain-of-thought și un format de completare a unui formular pentru a nota textul după criterii.

Rezultatul raportat în lucrare: cu GPT-4, G-Eval obține o corelație Spearman de 0,514 cu evaluările umane pe sarcina de rezumare, peste metodele anterioare. Autorii semnalează și un risc: evaluatorii bazați pe LLM pot favoriza textele generate de LLM.

În DeepEval, metrica GEval primește un criteria sau o listă evaluation_steps (nu ambele) și lista evaluation_params cu câmpurile cazului de test evaluate. Dacă dai doar criteriul, pașii sunt generați automat. DeepEval aplică ponderarea cu probabilitățile tokenilor când modelul judecător expune logprobs; scorul este normalizat între 0 și 1.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
criteria Descrierea criteriului în limbaj natural. Exclusiv cu evaluation_steps.
evaluation_steps Pașii expliciți pe care îi urmează judecătorul; dau scoruri mai controlabile decât pașii generați automat.
evaluation_params Câmpurile evaluate, de exemplu SingleTurnParams.ACTUAL_OUTPUT și SingleTurnParams.EXPECTED_OUTPUT. Include doar câmpurile menționate în criteriu.
Ponderarea cu probabilități Scorul final este media scorurilor posibile ponderată cu probabilitatea fiecăruia; reduce variația și scorurile întregi repetate.
threshold Pragul minim de trecere în DeepEval (implicit 0,5).

Exemple practice și scenarii reale

Exemplul 1: Factualitate față de răspunsul așteptat (DeepEval)

from deepeval.metrics import GEval
from deepeval.test_case import LLMTestCase, SingleTurnParams

factualitate = GEval(
    name="Factualitate",
    evaluation_steps=[
        "Verifică dacă faptele din 'actual output' contrazic faptele din 'expected output'.",
        "Penalizează omiterea detaliilor importante.",
        "Formulările vagi sau diferențele de stil sunt acceptabile.",
    ],
    evaluation_params=[SingleTurnParams.ACTUAL_OUTPUT, SingleTurnParams.EXPECTED_OUTPUT],
)

caz = LLMTestCase(
    input="Care este portul implicit pentru Redis?",
    actual_output="Redis ascultă implicit pe portul 6379.",
    expected_output="6379",
)
factualitate.measure(caz)
print(factualitate.score, factualitate.reason)

Exemplul 2: G-Eval în Promptfoo

assert:
  - type: g-eval
    value: Răspunsul este coerent și nu se contrazice

Greșeli frecvente și capcane

  • Dai în DeepEval atât criteria, cât și evaluation_steps. Documentația cere doar unul dintre ele.
  • Formulezi criterii vagi („spune dacă răspunsul e bun”). Scorurile variază mult între rulări; descrie concret ce se penalizează.
  • Prezinți G-Eval ca echivalent al unui expert uman. Corelația raportată în lucrare este moderată (0,514 Spearman la rezumare), iar judecătorul poate favoriza textele generate de LLM.

Noțiuni și module înrudite