Naar de inhoud
NLEN
Illustratie: G-Eval criteria kalibreren met menselijke data

G-Eval scoringscriteria kalibreren met menselijke data

Door Ivo Donker — samengesteld met AI-ondersteuning (Claude & Gemini)

Het kwantitatief evalueren van open-ended generatieve teksten stelt ontwikkelaars voor een fundamenteel probleem: traditionele n-gram metrieken zoals ROUGE en BLEU missen semantisch begrip, terwijl grootschalige menselijke beoordeling te traag en kostbaar is voor continue ontwikkelcycli. G-Eval biedt een raamwerk waarin een groot taalmodel optreedt als beoordelaar met behulp van Chain-of-Thought (CoT) redeneerstappen en formele scoringsrubrieken. De beslissing die we met deze kalibratiemeting nemen, is of een geautomatiseerde evaluatiepijplijn voldoende betrouwbaar is om definitieve regressietests en modelselecties autonoom uit te voeren zonder direct menselijk toezicht.

Zonder expliciete kalibratie tegen een gekeurde menselijke testset vertoont G-Eval echter aanzienlijke afwijkingen door promptgevoeligheid, schaalcompressie en impliciete vooroordelen. Dit artikel onderscheidt zich nadrukkelijk van de basisprincipes in de algemene inleiding tot LLM-as-a-judge systemen en de brede procesbeschrijving in het opzetten van menselijke annotatierichtlijnen. Waar die artikelen zich richten op respectievelijk de abstracte werking van beoordelaarsmodellen en de logistiek van menselijke panels, behandelt dit document de exacte mathematische en prompt-technische afstemming tussen beide werelden.

De anatomie van het G-Eval raamwerk

G-Eval structureert kwalitatieve beoordeling door het evaluatieproces op te splitsen in vier opeenvolgende componenten: de taakdefinitie, het gedetailleerde beoordelingscriterium, een reeks automatisch of handmatig gegenereerde evaluatiestappen (de Chain-of-Thought), en een gewogen scoringsberekening. In plaats van een model simpelweg te vragen om een cijfer van 1 tot 5, dwingt G-Eval het model om eerst expliciete tussenstappen te formuleren waarin feitelijke afwijkingen, stijlbreuken of logische hiaten worden genoteerd.

In de oorspronkelijke implementatie maakt G-Eval gebruik van de waarschijnlijkheidsverdeling van de output-tokens (token log-probabilities) om een continue score te berekenen. Wanneer het model een score tussen 1 en 5 toekent, berekent het systeem de genormaliseerde som van de log-probabilities van de tokens '1', '2', '3', '4' en '5'. Dit levert een verwachtingswaarde op met een zwevende komma (bijvoorbeeld 3.74) in plaats van een discreet geheel getal, wat de variantie aanzienlijk verlaagt en fijnmazige rangschikking mogelijk maakt.

In moderne API-omgevingen waar directe log-probabilities niet altijd consistent beschikbaar zijn, dwingen we determinisme af via gestructureerde outputs. Wie wil begrijpen hoe parameters en JSON-schema's deze validiteit garanderen, kan de documentatie over structured output en JSON-schema's raadplegen om foutieve datatypes tijdens evaluatieruns te voorkomen.

Het kalibratieproces in fasen

Om een G-Eval rubric te kalibreren, doorlopen we een systematisch proces waarbij menselijke beoordelingen fungeren als de grondwaarheid (ground truth). Kalibratie betekent hier dat we de prompt, de criteria en de scoringsdefinities zodanig bijsturen dat de statistische correlatie met het menselijke oordeel maximaal is.

Fase Primaire activiteit Succescriterium Typische doorlooptijd
1. Toetssetcuratie Selectie van 100–200 representatieve productie-items met hoge variatie. Evenwichtige dekking van randgevallen en kwaliteitsniveaus. 1–2 dagen
2. Dubbele menselijke annotatie Onafhankelijke scoring door minimaal twee domeinexperts per item. Inter-annotator overeenstemming (Krippendorff's alpha > 0.80). 2–4 dagen
3. Nulmeting G-Eval Draaien van de initiële G-Eval prompt over de geannoteerde set. Vaststellen initiële Spearman- en Pearson-correlaties. 1 uur
4. Foutanalyse & Rubriekoptimalisatie Identificeren van systematische discrepanties en verfijnen van criteria. Reductie van residuele variantie bij uitschieters. 2–3 dagen
5. Verificatie op validatieset Toetsen van de geoptimaliseerde prompt op een ongeziene holdout-set. Behoud van correlatieniveau zonder overfitting op testset. 1 dag

Statistische correlatiematen voor validatie

Om de kwaliteit van de afstemming te kwantificeren, volstaat een eenvoudig gemiddelde of een percentage van overeenkomst niet. We gebruiken drie complementaire statistische metrieken: Spearman's rangcorrelatiecoëfficiënt ($\rho$), Pearson's correlatiecoëfficiënt ($r$) en Kendall's Tau ($\tau$).

Spearman's $\rho$ meet hoe goed de relatieve rangorde tussen beoordeelde teksten behouden blijft, ongeacht of de absolute schaal lineair verschuift. Dit is cruciaal bij modelselectie, waarbij we willen weten of model A consistent beter scoort dan model B. Pearson's $r$ toetst daarentegen de lineaire samenhang tussen de absolute scores. Een hoge Spearman-correlatie gecombineerd met een lage Pearson-correlatie duidt typisch op schaalcompressie: het model rangschikt correct, maar drukt alle scores samen tussen bijvoorbeeld 3.5 en 4.2.

Voordat we de correlatie tussen model en mens berekenen, moeten we eerst vaststellen of de menselijke data zelf betrouwbaar genoeg is. Raadpleeg de handleiding over inter-annotator agreement bij jury-evaluaties om zeker te zijn dat meetfouten in de menselijke basislaag niet onterecht aan het G-Eval model worden toegeschreven.

Let op (illustratief rekenvoorbeeld): De onderstaande correlatiewaarden en steekproefaantallen dienen uitsluitend ter demonstratie van de wiskundige methode en vormen geen benchmarkscore van specifieke LLM-modellen.

Bij het bepalen van de benodigde steekproefgrootte voor kalibratie geldt een strikte ondergrens. Om een correlatiecoëfficiënt van $\rho = 0.80$ statistisch significant te onderscheiden van een ontoereikende $\rho = 0.50$ bij $\alpha = 0.05$ en een power van $(1 - \beta) = 0.80$, zijn minimaal 65 zorgvuldig geannoteerde voorbeelden nodig. In de praktijk adviseren we een kalibratieset van minimaal 120 tot 150 items. Voor een diepere duik in power-analyses en betrouwbaarheidsintervallen verwijzen we naar statistiek voor LLM-evaluaties en steekproefbepaling.

Het operationaliseren van scoringsrubrieken in prompts

Een vage opdracht zoals "Beoordeel de beknoptheid op een schaal van 1 tot 5" leidt onvermijdelijk tot willekeur. Een robuuste G-Eval prompt definieert elk discreet ankerpunt op de schaal met meetbare condities en specifieke uitsluitingscriteria.

Hieronder staat een voorbeeld van een operationele promptconfiguratie in Python, ontworpen voor het kalibreren van een samenvattingsbeoordeling op het criterium feitelijke consistentie:

import json
from dataclasses import dataclass
from typing import Dict, List, Optional

@dataclass
class GEvalPrompt:
    task_name: str
    criterion_name: str
    criterion_description: str
    evaluation_steps: List[str]
    scoring_rubric: Dict[int, str]

    def render_prompt(self, source_doc: str, candidate_text: str) -> str:
        steps_formatted = "\n".join(
            f"{idx + 1}. {step}" for idx, step in enumerate(self.evaluation_steps)
        )
        rubric_formatted = "\n".join(
            f"Score {score}: {desc}" for score, desc in self.scoring_rubric.items()
        )
        
        return f"""U bent een deskundige evaluator. Beoordeel de kandidaattekst op basis van het brondocument.

Taak: {self.task_name}
Criterium: {self.criterion_name}
Definitie: {self.criterion_description}

Evaluatiestappen:
{steps_formatted}

Scoringscriteria:
{rubric_formatted}

Brondocument:
{source_doc}

Kandidaattekst:
{candidate_text}

Geef uw analyse stap voor stap en eindig met een JSON-object dat exact deze structuur heeft:
{{
  "redenering": "<uw analyse per stap>",
  "gevonden_fouten": ["<fout 1>", "<fout 2>"],
  "score": <geheel getal tussen 1 en 5>
}}"""

# Voorbeeld van een gekalibreerde rubriek
geval_consistentie = GEvalPrompt(
    task_name="Samenvatting valideren",
    criterion_name="Feitelijke Consistentie (Faithfulness)",
    criterion_description="De mate waarin de samenvatting uitsluitend feiten bevat die direct herleidbaar zijn tot het brondocument, zonder toevoegingen of verdraaiingen.",
    evaluation_steps=[
        "Lees het brondocument grondig en identificeer de centrale feitelijke claims.",
        "Isoleer elke afzonderlijke bewering in de kandidaattekst.",
        "Verifieer per bewering of deze direct ondersteund wordt door het brondocument.",
        "Categoriseer eventuele afwijkingen in: (a) directe tegenspraak, (b) niet-ondersteunde extrapolatie, of (c) verwaarloosbare nuanceverschuiving.",
        "Bepaal de eindscore conform de onderstaande rubriek op basis van de zwaarste foutcategorie."
    ],
    scoring_rubric={
        1: "Volledig inaccuraat: bevat ernstige feitelijke tegenspraken met de bron of hallucineert cruciale entiteiten.",
        2: "Grotendeels inaccuraat: bevat minstens één directe feitelijke tegenspraak of meerdere niet-ondersteunde claims.",
        3: "Matig consistent: bevat geen directe tegenspraken, maar introduceert wel speculatieve details die niet in de bron staan.",
        4: "Vrijwel foutloos: alle kernfeiten kloppen exact; bevat hooguit een minimale, niet-storende nuanceafwijking.",
        5: "Volkomen consistent: elke bewering en relatie is direct en ondubbelzinnig verifieerbaar in de brontekst."
    }
)

Systematische biases bij LLM-as-a-Judge neutraliseren

Zelfs geavanceerde modellen vertonen specifieke, reproduceerbare afwijkingen wanneer zij fungeren als evaluator. Tijdens de kalibratiefase moeten we actief corrigeren voor vier hardnekkige fenomenen:

Nederlandstalige valkuilen bij G-Eval kalibratie

Bij het kalibreren van evaluatiemodellen op Nederlandstalige teksten ontstaan specifieke complicaties die in Engelstalige literatuur zelden worden benoemd. Het negeren van deze taal- en cultuurspecifieke eigenschappen leidt tot systematisch vertekende correlaties.

Ten eerste leidt de aanspreekvorm tot ruis. In het Nederlands is het onderscheid tussen formeel ('u') en informeel ('je/jij') contextafhankelijk. Een Engelstalig getraind basismodel dat fungeert als evaluator beoordeelt een overgang van 'u' naar 'je' vaak als een triviale variatie, terwijl dit in zakelijke of juridische contexten een ernstige fout is. De rubriek moet daarom expliciet definiëren wanneer stijlinconsistentie leidt tot puntenaftrek.

Ten tweede vormen samenstellingen en anglicismen een risico. Het onterecht los schrijven van samenstellingen (de 'Engelse ziekte') wordt door evaluatormodellen zelden bestraft omdat tokenizers zulke fouten maskeren. Wanneer een menselijk panel hier streng op normeert terwijl het LLM de fout niet detecteert, daalt de correlatie aanzienlijk. Dit lossen we op door formele spellings- en grammaticale checks als aparte geautomatiseerde stap vóór de G-Eval aanroep te plaatsen.

Tot slot verschilt het Vlaams-Nederlands (Belgisch-Nederlands) op lexicaal niveau van het Nederlands zoals gehanteerd in Nederland. Woorden als 'gelet op', 'vastgoedmakelaar' of specifieke ambtelijke constructies worden soms ten onrechte als stijlfouten aangemerkt door modellen die primair op Noord-Nederlandse corpora zijn afgesteld.

Reproduceerbare meetopzet en parameterconfiguratie

Om te waarborgen dat de kalibratiemeting reproduceerbaar is over opeenvolgende software-releases, moeten alle evaluatieparameters strikt worden vastgezet. Een evaluatierun mag geen bewegende variabelen bevatten.

Parameter Vaste waarde Rationele onderbouwing
temperature 0.0 Minimaliseert stochastische ruis in de evaluatiestappen en garandeert deterministische outputpaden.
top_p 1.0 Niet van toepassing bij temperature 0.0, maar expliciet vastgezet om API-defaults te overrulen.
seed 42 (of vaste integer) Dwingt deterministische seed-selectie af bij backend engines die dit ondersteunen.
Model-ID Volledige versietag (bijv. gpt-4o-2024-08-06) Voorkomt onaangekondigde drift door automatische alias-updates (zoals latest).
Herhalingen ($N$) 3 runs per item bij logprob-scoring; 5 bij sample-scoring Berekent betrouwbaarheidsintervallen over de residuele variantie van de evaluator.

Kosten- en tokenanalyse

Het structureel inzetten van G-Eval met uitgebreide Chain-of-Thought prompts brengt aanzienlijke rekenkosten met zich mee. Een realistische inschatting van tokenverbruik en doorlooptijd is noodzakelijk om te bepalen of een evaluatiepijplijn kan draaien bij elke pull request of uitsluitend bij nachtelijke builds.

Bij een gemiddeld brondocument van 800 tokens en een kandidaattekst van 250 tokens verbruikt de G-Eval systeemprompt inclusief CoT-instructies circa 650 tokens. De input per evaluatie bedraagt daarmee circa 1.700 tokens. De gegenereerde redeneerstappen (output) beslaan gemiddeld 350 tot 500 tokens per run.

Voor een volledige kalibratierun over een testset van 150 voorbeelden met 3 herhalingen resulteert dit in:

Dankzij prompt caching op het statische deel van de rubric (de instructies en schaaldefinities) kan het effectieve aantal verwerkte inputtokens in productieomgevingen met 40% tot 60% worden gereduceerd, mits de cache-grenzen nauwkeurig zijn uitgelijnd.

Conclusie en implementatiebesluit

G-Eval vormt een krachtige brug tussen trage menselijke evaluatie en starre heuristische metrieken, mits de scoringscriteria rigoureus zijn afgestemd op gekeurde menselijke data. Een rubric mag pas als productierijp worden beschouwd zodra de Spearman-rangcorrelatie met een betrouwbaar menselijk panel de drempelwaarde van minstens $\rho \ge 0.80$ overschrijdt op een ongeziene validatieset.

Wanneer die drempel is bereikt, levert het systeem een herhaalbare, continue kwaliteitsmeting die modelregressies direct signaleert zonder dat voor elke iteratie menselijke annotatoren moeten worden ingezet.