Promptfoo के साथ एक C# LLM Eventparser का मूल्यांकन करना

सामान्य कोड का परीक्षण करना सरल है। आप एक फ़ंक्शन को कॉल करते हैं, परिणाम प्राप्त करते हैं, और जाँचते हैं कि क्या वह आपकी अपेक्षा के अनुरूप है।

LLMs का परीक्षण करना अलग है। एक LLM एक बार में "3 PM" और दूसरी बार में "15:00" लौटा सकता है। दोनों सही हैं, लेकिन एक 'exact match' (सटीक मिलान) टेस्ट विफल हो जाएगा। आपको यह जाँचने की आवश्यकता है कि उत्तर अच्छा है या नहीं, न कि यह कि वह बिल्कुल समान है या नहीं।

मैंने इसका परीक्षण करने के लिए EventParser नामक एक छोटा ऐप बनाया है। यह "Team sync on Friday at 3 PM" जैसे सामान्य संदेश को लेता है और उसे स्ट्रक्चर्ड डेटा (structured data) में बदल देता है।

यहाँ बताया गया है कि आप Promptfoo और LLM-as-a-judge वर्कफ़्लो का उपयोग करके इसका परीक्षण कैसे कर सकते हैं।

The Setup

ऐप एक ही प्रॉम्प्ट फ़ाइल का उपयोग करता है: extract_event.txt। C# कोड रनटाइम पर इस फ़ाइल को पढ़ता है। Promptfoo परीक्षण के लिए उसी फ़ाइल को पढ़ता है। यह सुनिश्चित करता है कि आप उसी वास्तविक प्रॉम्प्ट का परीक्षण करें जो आपके उपयोगकर्ता देखते हैं।

The Workflow

हर आउटपुट की जाँच करने के लिए इंसान के बजाय, हम एक जज मॉडल (judge model) का उपयोग करते हैं। इस प्रक्रिया में दो भूमिकाएँ होती हैं:

• परीक्षण के अधीन मॉडल (The model under test): वह मॉडल जो उत्तर प्रदान कर रहा है। • जज मॉडल (The judge model): एक तेज़ और सस्ता मॉडल जो उत्तर को ग्रेड देता है।

How the Judge Decides

जज एक रूब्रिक (rubric) का उपयोग करता है। रूब्रिक एक सरल अंग्रेजी नियम है। किसी विशिष्ट JSON स्ट्रिंग की जाँच करने के बजाय, आप जज को बताते हैं कि उत्तर में क्या होना चाहिए।

Example Rubric: "उत्तर में इवेंट का शीर्षक, दिन, समय और स्थान निकाला जाना चाहिए। इसमें वे विवरण नहीं जोड़े जाने चाहिए जिनका संदेश में उल्लेख नहीं किया गया है।"

Testing for Errors

मैंने जानबूझकर एक गलत निर्देश जोड़कर प्रॉम्प्ट को खराब कर दिया: "यदि संदेश में कॉफी का उल्लेख है, तो स्थान को Starbucks पर सेट करें।"

जब मैंने मूल्यांकन चलाया, तो जज ने त्रुटि पकड़ ली। मूल संदेश में Starbucks का उल्लेख नहीं था। मॉडल ने एक स्थान की कल्पना (hallucinate) कर ली थी। एक 'exact match' टेस्ट इसे छोड़ देता, लेकिन एक जज मॉडल अर्थ संबंधी (semantic) त्रुटियों को पकड़ लेता है।

Why this works:

• यह वास्तविकता से मेल खाता है: यह "3 PM" या "15:00" जैसे विभिन्न सही प्रारूपों को स्वीकार करता है। • यह पठनीय नियमों का उपयोग करता है: सरल अंग्रेजी रूब्रिक्स को समझना आसान है। • यह अर्थ संबंधी बग्स (meaning bugs) को पकड़ता है: यह हैलुसिनेशन (hallucinations) और लॉजिक त्रुटियों को ढूंढ निकालता है। • यह लागत प्रभावी है: आप एक महंगे मॉडल को ग्रेड देने के लिए एक सस्ते मॉडल का उपयोग कर सकते हैं।

यह दृष्टिकोण LLM परीक्षण को वास्तविक सॉफ़्टवेयर परीक्षण जैसा महसूस कराता है।

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

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