Promptfoo ile bir C# LLM Eventparser'ı Değerlendirmek

Normal kodları test etmek basittir. Bir fonksiyon çağırırsınız, bir sonuç alırsınız ve bunun beklentinizle eşleşip eşleşmediğini kontrol edersiniz.

LLM'leri test etmek farklıdır. Bir LLM bir çalıştırmada "3 PM" ve bir diğerinde "15:00" döndürebilir. Her ikisi de doğrudur ancak tam eşleşme testi başarısız olacaktır. Cevabın birebir aynı olup olmadığını değil, iyi olup olmadığını kontrol etmeniz gerekir.

Bunu test etmek için EventParser adında küçük bir uygulama geliştirdim. "Team sync on Friday at 3 PM" gibi gündelik bir mesajı alır ve bunu yapılandırılmış veriye dönüştürür.

Promptfoo ve bir LLM-as-a-judge iş akışını kullanarak bunu nasıl test edebileceğinizi aşağıda bulabilirsiniz.

Kurulum

Uygulama tek bir istem (prompt) dosyası kullanır: extract_event.txt. C# kodu bu dosyayı çalışma zamanında okur. Promptfoo ise test için aynı dosyayı okur. Bu, kullanıcılarınızın gördüğü gerçek istemi test etmenizi sağlar.

İş Akışı

Her çıktıyı bir insanın kontrol etmesi yerine bir hakem model kullanıyoruz. Bu süreç iki rol kullanır:

• Test edilen model: Cevabı sağlayan model. • Hakem model: Cevabı puanlayan daha hızlı ve daha ucuz bir model.

Hakem Nasıl Karar Verir?

Hakem bir rubrik kullanır. Rubrik, düz bir İngilizce kuraldır. Belirli bir JSON dizisini kontrol etmek yerine, hakeme cevabın neleri içermesi gerektiğini söylersiniz.

Örnek Rubrik: "Cevap; etkinlik başlığını, günü, saati ve konumu çıkarmalıdır. Mesajda belirtilmeyen ayrıntıları eklememelidir."

Hataları Test Etme

Kötü bir talimat ekleyerek istemi bilerek bozdum: "Eğer mesaj kahveden bahsediyorsa, konumu Starbucks olarak ayarla."

Değerlendirmeyi çalıştırdığımda hakem hatayı yakaladı. Orijinal mesajda Starbucks'tan bahsedilmiyordu. Model bir konum uydurdu (hallucination). Tam eşleşme testi bunu kaçırırdı ancak bir hakem model anlamsal hataları yakalar.

Bu neden işe yarar:

• Gerçeklikle örtüşür: "3 PM" veya "15:00" gibi çeşitli doğru formatları kabul eder. • Okunabilir kurallar kullanır: Düz İngilizce rubriklerin anlaşılması kolaydır. • Anlamsal hataları yakalar: Halüsinasyonları ve mantık hatalarını bulur. • Maliyet etkindir: Daha pahalı bir modeli puanlamak için ucuz bir model kullanabilirsiniz.

Bu yaklaşım, LLM testini gerçek yazılım testine benzetir.

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

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi