Een C# LLM Eventparser evalueren met Promptfoo

Het testen van reguliere code is eenvoudig. Je roept een functie aan, krijgt een resultaat en controleert of dit overeenkomt met je verwachting.

Het testen van LLM's is anders. Een LLM kan in de ene run "3 PM" retourneren en in de andere "15:00". Beide zijn correct, maar een test op exacte overeenkomst zal falen. Je moet controleren of het antwoord goed is, niet of het identiek is.

Ik heb een kleine app genaamd EventParser gebouwd om dit te testen. Deze neemt een informeel bericht zoals "Team sync on Friday at 3 PM" en zet dit om in gestructureerde data.

Hier lees je hoe je dit kunt testen met Promptfoo en een LLM-as-a-judge workflow.

De Setup

De app gebruikt één enkel prompt-bestand: extract_event.txt. De C#-code leest dit bestand tijdens runtime. Promptfoo leest hetzelfde bestand voor het testen. Dit zorgt ervoor dat je de daadwerkelijke prompt test die je gebruikers zien.

De Workflow

In plaats van dat een mens elke output controleert, gebruiken we een judge-model. Dit proces maakt gebruik van twee rollen:

• Het te testen model: Het model dat het antwoord geeft. • Het judge-model: Een sneller, goedkoper model dat het antwoord beoordeelt.

Hoe de judge beslist

De judge gebruikt een rubric. Een rubric is een regel in gewoon Engels. In plaats van te controleren op een specifieke JSON-string, vertel je de judge wat het antwoord moet bevatten.

Voorbeeld Rubric: "Het antwoord moet de titel van het evenement, de dag, de tijd en de locatie extraheren. Er mogen geen details worden toegevoegd die niet in het bericht worden vermeld."

Testen op fouten

Ik heb de prompt opzettelijk verpest door een slechte instructie toe te voegen: "Als het bericht koffie vermeldt, stel de locatie dan in op Starbucks."

Toen ik de evaluatie uitvoerde, ontdekte de judge de fout. Het oorspronkelijke bericht vermeldde Starbucks niet. Het model hallucineerde een locatie. Een test op exacte overeenkomst zou dit missen, maar een judge-model vangt semantische fouten op.

Waarom dit werkt:

• Het komt overeen met de realiteit: Het accepteert verschillende correcte formaten zoals "3 PM" of "15:00". • Het gebruikt leesbare regels: Rubrics in gewoon Engels zijn gemakkelijk te begrijpen. • Het vangt betekenis-bugs op: Het vindt hallucinaties en logische fouten. • Het is kosteneffectief: Je kunt een goedkoop model gebruiken om een duurder model te beoordelen.

Deze aanpak zorgt ervoor dat LLM-testen aanvoelt als echt softwaretesten.

Bron: https://dev.to/bigboybamo/evaluating-a-c-llm-eventparser-with-promptfoo-4b87

Optionele leercommunity: https://t.me/GyaanSetuAi