Valutare un Eventparser LLM in C# con Promptfoo

Testare il codice tradizionale è semplice. Chiami una funzione, ottieni un risultato e verifichi se corrisponde alle tue aspettative.

Testare gli LLM è diverso. Un LLM potrebbe restituire "3 PM" in un'esecuzione e "15:00" in un'altra. Entrambi sono corretti, ma un test di corrispondenza esatta fallirebbe. Devi verificare se la risposta è buona, non se è identica.

Ho creato una piccola app chiamata EventParser per testare questo aspetto. Prende un messaggio informale come "Team sync on Friday at 3 PM" e lo trasforma in dati strutturati.

Ecco come puoi testarlo utilizzando Promptfoo e un workflow LLM-as-a-judge.

The Setup

L'app utilizza un singolo file di prompt: extract_event.txt. Il codice C# legge questo file a runtime. Promptfoo legge lo stesso file per il testing. Questo assicura che tu stia testando il prompt effettivo che i tuoi utenti vedono.

The Workflow

Invece di far controllare ogni output a un essere umano, utilizziamo un modello giudice. Questo processo utilizza due ruoli:

• Il modello in fase di test: Il modello che fornisce la risposta. • Il modello giudice: Un modello più veloce ed economico che valuta la risposta.

How the Judge Decides

Il giudice utilizza una rubrica. Una rubrica è una regola scritta in linguaggio naturale. Invece di cercare una specifica stringa JSON, dici al giudice cosa dovrebbe contenere la risposta.

Example Rubric: "La risposta deve estrarre il titolo dell'evento, il giorno, l'ora e la località. Non deve aggiungere dettagli non menzionati nel messaggio."

Testing for Errors

Ho intenzionalmente corrotto il prompt aggiungendo un'istruzione errata: "Se il messaggio menziona il caffè, imposta la località su Starbucks."

Quando ho eseguito la valutazione, il giudice ha rilevato l'errore. Il messaggio originale non menzionava Starbucks. Il modello ha allucinato una località. Un test di corrispondenza esatta non avrebbe rilevato questo problema, ma un modello giudice intercetta gli errori semantici.

Why this works:

• Corrisponde alla realtà: Accetta vari formati corretti come "3 PM" o "15:00". • Utilizza regole leggibili: Le rubriche in linguaggio naturale sono facili da comprendere. • Intercetta bug semantici: Trova allucinazioni ed errori logici. • È conveniente: Puoi usare un modello economico per valutare uno più costoso.

Questo approccio fa sì che il testing degli LLM sembri un vero e proprio test del software.

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

Optional learning community: https://t.me/GyaanSetuAi