Of je nu een complexe webapplicatie bouwt, een nieuwe vector-database test of simpelweg wilt weten welk open-weights model het beste presteert voor jouw use-case: een robuuste evaluatie is onmisbaar. Vertrouwen op je 'onderbuikgevoel' bij het testen van een Large Language Model (LLM) leidt al snel tot regressies in productie. Dit artikel biedt een praktisch en direct toepasbaar raamwerk om jouw LLM systematisch te evalueren.
De 4 Kerncriteria voor Evaluatie
Een effectief raamwerk toetst modellen niet alleen op vloeiend taalgebruik, maar op bruikbaarheid in de echte wereld. Zeker wanneer je complexe architecturen zoals Retrieval-Augmented Generation (RAG) gebruikt, is het meten van output cruciaal.
- 1. Correctheid (Feitelijkheid & Hallucinaties): Bevat het antwoord feitelijke onjuistheden? Als het model put uit een specifieke context (bijv. documenten uit je vector-zoekopdracht), is het dan trouw aan die bron, of verzint het zelf feiten (hallucinaties)?
- 2. Relevantie & Volledigheid: Geeft het model direct antwoord op de kern van de prompt? Vaak hebben modellen de neiging om te lange, ongevraagde introducties te geven of juist de belangrijkste sub-vraag te negeren.
- 3. Toon & Stijl (Instructies volgen): Houdt het model zich aan de gevraagde output-formaten? (bijv. "Antwoord uitsluitend in JSON", of "Gebruik een professionele, beknopte toon").
- 4. Veiligheid & Bias: Triggert de prompt ongepaste output? Weigert het model antwoord te geven op schadelijke verzoeken (jailbreaks) zonder te preuts te zijn bij legitieme prompts?
Hoe stel je een representatieve testset op?
Een evaluatie is slechts zo goed als de dataset waarop deze draait (ook wel een 'Golden Dataset' of referentie-set genoemd). Maak een robuuste testset met minimaal 50 tot 100 prompts die jouw daadwerkelijke productiescenario's weerspiegelen.
- Standaardscenario's: De meest voorkomende vragen van gebruikers (de 'happy flow').
- Edge cases: Dubbelzinnige vragen, vragen met spelfouten, of vragen die net buiten het domein vallen.
- Adversarial prompts: Pogingen om het model te laten falen, omzeilen (jailbreaking) of het onthullen van systeem-prompts.
Menselijke vs. Automatische Evaluatie
Het handmatig beoordelen van honderden antwoorden is niet schaalbaar. Daarom maken we in de praktijk gebruik van een hybride aanpak:
Menselijke Evaluatie
Hierbij labelen domeinexperts de output. Dit is de gouden standaard voor het definiëren van de 'ground truth'. Dit proces is onmisbaar bij het initiële ontwerp van je testset en bij steekproeven, maar is duur en traag voor iteratieve integratietests.
Automatische Evaluatie (LLM-as-a-Judge)
Voor snelle, continue evaluatie in CI/CD pipelines wordt vaak een krachtig state-of-the-art model (zoals Claude 3.5 Sonnet, GPT-4o, of een grote versie van DeepSeek) ingezet via een API om de output van kleinere, efficiëntere modellen te beoordelen op basis van een strakke scorings-rubric. Meer informatie over het aanroepen van modellen via de API vind je op onze API-documentatie portal.
Voorbeeld Scorekaart (LLM-as-a-Judge Rubric)
Hieronder zie je een voorbeeld van een datastructuur waarmee een evaluatie-script of menselijke rater de output kan standaardiseren. Gebruik dergelijke tabellen om scores te loggen en modellen objectief te vergelijken.
| Prompt ID / Categorie | Criterium | Score | Redenering (Judge Output) |
|---|---|---|---|
PR-001 / RAG-Fact-Check |
Correctheid | [Score 1-5] | [Uitleg waarom de feiten wel of niet overeenkomen met de bron...] |
PR-002 / User-Intent |
Relevantie | [Score 1-5] | [Analyse van de volledigheid van het antwoord...] |
PR-003 / JSON-Format |
Stijl & Formattering | [Pass / Fail] | [Validatie-fout of succesmelding van de JSON parser...] |
PR-004 / Jailbreak-Attempt |
Veiligheid | [Pass / Fail] | [Beoordeling of het model veilig weigerde...] |