Hoe je een AI-agent evalueert: Van taaksucces tot trajectanalyse

Het evalueren van een traditioneel Large Language Model (LLM) is relatief rechttoe rechtaan: je stuurt een prompt en beoordeelt het antwoord op accuraatheid, stijl en relevantie. Bij autonome AI-agents werkt deze aanpak echter niet meer. Een agent is ontworpen om een complex doel te bereiken door zelfstandig stappen te plannen, beslissingen te nemen en externe tools te gebruiken (zoals webbrowsers, API's of databases). Dit dynamische, meerstaps proces vereist een fundamenteel andere evaluatiestrategie.

Als we een agent alleen afrekenen op het eindresultaat, missen we cruciale informatie. Wat als de agent het juiste antwoord gaf, maar onderweg onnodig veel dure API-calls maakte? Of wat als de agent faalde, simpelweg omdat een externe API tijdelijk onbereikbaar was, hoewel de logica van de agent foutloos was? In dit artikel bespreken we hoe je een AI-agent robuust en eerlijk evalueert, van trajectanalyse tot het meten van kosten, en we sluiten af met een direct toepasbaar evaluatieformulier.

Taaksucces versus Stapsucces

De kern van agent-evaluatie ligt in het onderscheid tussen het einddoel en de weg ernaartoe. Beide metrieken zijn essentieel voor een compleet beeld van de prestaties van je systeem.

Binair Taaksucces (End-to-End)

Taaksucces, of end-to-end succes, beantwoordt de meest simpele vraag: heeft de agent de opdracht succesvol afgerond? Dit wordt vaak binair gemeten (1 voor succes, 0 voor falen). Bijvoorbeeld: als de opdracht is om een agenda-afspraak in te schieten voor volgende week dinsdag om 14:00 uur, is het taaksucces een 1 als die afspraak daadwerkelijk in de agenda staat.

Hoewel dit de belangrijkste metric is voor de eindgebruiker, biedt het ontwikkelaars weinig houvast voor verbetering. Als het taaksucces een 0 is, weet je namelijk niet waarom de agent faalde. Lag het aan een verkeerde interpretatie van de prompt, een hallucinerende tussenstap, of een technische fout in de kalender-API?

Granulair Stapsucces en Trajectanalyse

Om te begrijpen wat er onder de motorkap gebeurt, analyseren we het stapsucces (step-level success) via een trajectanalyse. Een traject is de volledige reeks van gedachten, acties (tool calls) en observaties (resultaten van tools) die een agent doorloopt. Vaak wordt hiervoor het ReAct-model (Reasoning and Acting) gebruikt.

Bij het evalueren van stapsucces kijk je naar:

Tool-keuze en Foutherstel Meten

Een agent is slechts zo krachtig als zijn vermogen om externe tools effectief te gebruiken. Het evalueren van tool-gebruik is een vak apart en vereist specifieke metrieken.

Precisie in Tool-keuze

Kiest de agent de juiste tool voor de juiste taak? Als de agent een wiskundige berekening moet maken en hiervoor een zoekmachine aanroept in plaats van een ingebouwde rekenmachine-tool, is dit een ontwerpfout in het traject. Je evalueert dit door een ground-truth dataset te maken waarin per situatie is vastgelegd welke tools aangeroepen zouden moeten worden. We meten hierbij de Tool Selection Accuracy: het percentage van de stappen waarin de juiste tool werd gekozen, los van de parameters.

Parameters en Fouttolerantie

Nadat de juiste tool is gekozen, moet de agent de juiste parameters (argumenten) meegeven in de JSON-payload. Een veelgemaakte fout is dat het onderliggende LLM parameters verzint die niet in het schema staan.

Nog belangrijker is het meten van foutherstel (error recovery). We doen hierbij de aanname dat externe systemen niet altijd perfect werken. Wat doet de agent als een API een 404-fout of een "Rate Limit Exceeded" teruggeeft? Een slechte agent crasht, stopt de taak, of verzint een antwoord (hallucinatie). Een goed ontworpen agent leest de foutmelding, past zijn parameters aan of wacht kort, en probeert het opnieuw. Het vermogen om te herstellen van tool-fouten is een van de sterkste indicatoren voor een volwassen AI-agent en moet expliciet getest worden door tijdens de evaluatie moedwillig API-fouten te simuleren.

Kosten en Stappen per Opgeloste Taak

Omdat agents autonoom itereren, kunnen de kosten razendsnel oplopen. Een enkele complexe vraag kan resulteren in tien tot twintig aanroepen naar een groot model. Het is daarom cruciaal om niet alleen de absolute kosten per taak te meten, maar dit af te zetten tegen de efficiëntie.

Belangrijke metrieken in deze categorie zijn:

Herhaalbaarheid bij Niet-deterministische Runs

LLM's zijn inherent stochastisch (probabilistisch). Waar een traditionele softwaretest altijd slaagt of faalt op dezelfde code, kan een AI-agent de ene keer slagen en bij een identieke poging vijf minuten later falen. Dit wordt exponentieel versterkt in een traject met meerdere stappen; één kleine variatie in stap 1 kan een vlindereffect veroorzaken waardoor stap 4 compleet anders verloopt.

Hoe pak je dit aan? Reproduceerbaarheid bij agents vereist statistische evaluatie. Je draait dezelfde testcase niet één keer, maar minimaal vijf tot tien keer. We nemen hierbij expliciet aan dat volledig determinisme bij autonome agents vrijwel onmogelijk is en dat een variantie van 5% tot 10% in succesratio normaal is, zelfs bij een temperatuur (temperature) van 0.0.

Rapporteer de resultaten als een Pass Rate. Een agent die 8 van de 10 keer slaagt, heeft een Pass Rate van 80%. Als een code-wijziging deze rate verhoogt naar 90% over een significante set runs, heb je een meetbare verbetering te pakken.

Veiligheidsgrenzen en Restricties Testen

Wanneer een agent toegang krijgt tot tools, krijgt deze vaak de capaciteit om de echte wereld te beïnvloeden (bijvoorbeeld het versturen van e-mails of het aanpassen van databases). Evaluatie moet daarom altijd een veiligheidscomponent bevatten. Meer hierover lees je in onze gids over het veilig koppelen van tools.

Om veiligheidsgrenzen te testen, injecteer je 'adversarial' taken in je evaluatieset. Dit zijn opdrachten waarbij het succes gedefinieerd is als de weigering van de agent om de taak uit te voeren. Voorbeelden zijn:

Hierbij evalueer je niet alleen óf de agent de kwaadaardige actie blokkeert, maar ook of het systeem niet in een onveilige staat belandt na een poging tot misbruik.

Een Kleine, maar Eerlijke Takenset Bouwen

Het evalueren van agents is duur (vanwege de tokenkosten) en traag (vanwege de sequentiële tool calls). Het bouwen van een dataset met duizenden testgevallen is daardoor vaak onpraktisch in een snelle ontwikkelcyclus. Het doel is het creëren van een kleine, extreem representatieve dataset.

Een testset zonder datalekken voor agents (vaak tussen de 50 en 100 complexe taken) moet bestaan uit drie categorieën:

  1. De "Happy Path" taken (~50%): Standaard opdrachten waarbij alle tools correct werken en de input van de gebruiker helder is.
  2. Edge Cases en Ambigue prompts (~30%): Opdrachten waarin informatie ontbreekt (de agent moet leren om opheldering te vragen in plaats van aannames te doen) of waarin de input verwarrend is geformuleerd.
  3. Fout-geïnjecteerde taken (~20%): In de testomgeving worden API's moedwillig gesaboteerd. Geven time-outs, weigeren specifieke datatypes, of sturen corrupte JSON terug. Dit test de robuustheid en het zelfherstellend vermogen van het traject.
Aanname bij het opzetten van testsets: We gaan er bij het opzetten van geautomatiseerde evaluaties van uit dat de mock-API's in de testomgeving exact hetzelfde gedrag en dezelfde latentie vertonen als de productie-API's. Een mismatch hierin kan leiden tot agents die lokaal slagen, maar in productie falen op basis van time-outs.

Concreet Evaluatieformulier voor AI-Agents

Hieronder vind je een gestandaardiseerde rubric (beoordelingsmatrix) die je kunt overnemen voor zowel handmatige inspecties (human-in-the-loop) als voor geautomatiseerde LLM-as-a-Judge evaluaties. Scoor elke agent-run op deze criteria.

Evaluatiedomein Criterium Score 0 (Onaanvaardbaar) Score 1 (Matig / Gedeeltelijk) Score 2 (Optimaal)
Taaksucces End-to-End Resultaat Doel niet behaald of compleet foutieve output geleverd. Doel deels behaald, mist details of bevat kleine hallucinaties in de uiteindelijke samenvatting. Doel exact, volledig en feitelijk correct behaald zonder toevoeging van verzonnen feiten.
Traject & Logica Redeneerkwaliteit (ReAct) Logica ontbreekt. Agent roept willekeurige tools aan zonder doel. Agent volgt deels een logisch pad, maar maakt onnodige stappen of trekt een voorbarige conclusie uit data. Elke denkstap is causaal verbonden aan de vorige observatie en stuurt direct aan op het einddoel.
Tooling Keuze & Parameters Verkeerde tool gekozen, of agent verzint parameters die buiten het vastgestelde JSON-schema vallen. Juiste tool gekozen, maar met suboptimale zoektermen of argumenten waardoor een retry nodig was. Direct de perfecte tool met exact de juiste, schema-conforme parameters geselecteerd.
Robuustheid Foutherstel (Error Recovery) Agent crasht op een API-fout, negeert de foutmelding, of hallucineert een succesvol resultaat. Agent probeert het opnieuw, maar blijft vastzitten in een loop met exact dezelfde falende parameters. Agent analyseert de foutmelding correct, past parameters aan, of concludeert adequaat dat de taak nu onmogelijk is.
Efficiëntie Stappen en Snelheid Meer dan 3x het optimale aantal stappen gebruikt, resulterend in hoge tokenkosten en hoge latentie. Matig efficiënt, nam 1 of 2 onnodige afslagen maar bereikte uiteindelijk het doel. Minimaal, optimaal aantal stappen gebruikt. Geen overbodige tool calls gedaan.

Samenvattend

Het evalueren van een AI-agent gaat veel verder dan het checken van het uiteindelijke antwoord. Omdat agents de vrijheid hebben om hun eigen pad te kiezen en tools te gebruiken, moet de nadruk van de evaluatie verschuiven naar trajectanalyse, fouttolerantie en efficiëntie. Door een diverse takenset op te bouwen, meerdere runs uit te voeren ter compensatie van non-determinisme, en strikt te testen op kosten en veiligheid, transformeer je een onvoorspelbare bot in een betrouwbaar, autonoom systeem voor de productieomgeving.