Mengevaluasi C# LLM Eventparser dengan Promptfoo

Menguji kode biasa itu sederhana. Anda memanggil sebuah fungsi, mendapatkan hasil, dan memeriksa apakah hasilnya sesuai dengan ekspektasi Anda.

Menguji LLM itu berbeda. Sebuah LLM mungkin mengembalikan "3 PM" pada satu sesi dan "15:00" pada sesi lainnya. Keduanya benar, tetapi pengujian kecocokan eksak (exact match) akan gagal. Anda perlu memeriksa apakah jawabannya bagus, bukan apakah jawabannya identik.

Saya membuat aplikasi kecil bernama EventParser untuk menguji hal ini. Aplikasi ini mengambil pesan santai seperti "Team sync on Friday at 3 PM" dan mengubahnya menjadi data terstruktur.

Berikut adalah cara Anda dapat mengujinya menggunakan Promptfoo dan alur kerja LLM-as-a-judge.

Persiapan

Aplikasi ini menggunakan satu file prompt: extract_event.txt. Kode C# membaca file ini saat runtime. Promptfoo membaca file yang sama untuk pengujian. Hal ini memastikan Anda menguji prompt asli yang dilihat oleh pengguna Anda.

Alur Kerja

Alih-alih manusia yang memeriksa setiap output, kita menggunakan model hakim (judge model). Proses ini menggunakan dua peran:

• Model yang sedang diuji: Model yang memberikan jawaban. • Model hakim: Model yang lebih cepat dan lebih murah yang memberikan nilai pada jawaban.

Bagaimana Hakim Mengambil Keputusan

Hakim menggunakan rubrik. Rubrik adalah aturan dalam bahasa Inggris sederhana. Alih-alih memeriksa string JSON tertentu, Anda memberi tahu hakim apa yang harus terkandung dalam jawaban tersebut.

Contoh Rubrik: "Jawaban harus mengekstrak judul acara, hari, waktu, dan lokasi. Jawaban tidak boleh menambahkan detail yang tidak disebutkan dalam pesan."

Menguji Kesalahan

Saya sengaja merusak prompt dengan menambahkan instruksi yang buruk: "Jika pesan menyebutkan kopi, atur lokasinya ke Starbucks."

Saat saya menjalankan evaluasi, sang hakim menangkap kesalahan tersebut. Pesan aslinya tidak menyebutkan Starbucks. Model tersebut berhalusinasi mengenai lokasi. Pengujian kecocokan eksak akan melewatkan hal ini, tetapi model hakim dapat menangkap kesalahan semantik.

Mengapa cara ini berhasil:

• Sesuai dengan realitas: Menerima berbagai format benar seperti "3 PM" atau "15:00". • Menggunakan aturan yang mudah dibaca: Rubrik bahasa Inggris sederhana mudah dipahami. • Menangkap bug makna: Menemukan halusinasi dan kesalahan logika. • Hemat biaya: Anda dapat menggunakan model murah untuk menilai model yang lebih mahal.

Pendekatan ini membuat pengujian LLM terasa seperti pengujian perangkat lunak yang sebenarnya.

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

Komunitas belajar opsional: https://t.me/GyaanSetuAi