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) استعمال کرتے ہیں۔ اس عمل میں دو کردار ہوتے ہیں:

• ٹیسٹ کیا جانے والا ماڈل: وہ ماڈل جو جواب فراہم کرتا ہے۔ • جج ماڈل (Judge model): ایک تیز رفتار اور سستا ماڈل جو جواب کو گریڈ کرتا ہے۔

جج کیسے فیصلہ کرتا ہے

جج ایک 'rubric' استعمال کرتا ہے۔ 'Rubric' ایک سادہ انگریزی اصول ہے۔ ایک مخصوص JSON اسٹرنگ کو چیک کرنے کے بجائے، آپ جج کو بتاتے ہیں کہ جواب میں کیا شامل ہونا چاہیے۔

مثالی Rubric: "جواب میں ایونٹ کا عنوان، دن، وقت اور مقام نکالا جانا چاہیے۔ اس میں وہ تفصیلات شامل نہیں ہونی چاہئیں جو پیغام میں ذکر نہیں کی گئیں۔"

غلطیوں کی جانچ کرنا

میں نے جان بوجھ کر ایک غلط ہدایت شامل کر کے پرامپٹ کو خراب کر دیا: "اگر پیغام میں کافی کا ذکر ہو، تو مقام کو Starbucks پر سیٹ کر دیں۔"

جب میں نے ایویلیوایشن (evaluation) چلائی، تو جج نے غلطی پکڑ لی۔ اصل پیغام میں Starbucks کا ذکر نہیں تھا۔ ماڈل نے خود سے ایک مقام ایجاد کر لیا (hallucinated)۔ ایک 'exact match' ٹیسٹ اسے نظر انداز کر دیتا، لیکن جج ماڈل 'semantic errors' (معنویت کی غلطیاں) کو پکڑ لیتا ہے۔

یہ کیوں کام کرتا ہے:

• یہ حقیقت کے مطابق ہے: یہ "3 PM" یا "15:00" جیسے مختلف درست فارمیٹس کو قبول کرتا ہے۔ • یہ پڑھنے کے قابل اصول استعمال کرتا ہے: سادہ انگریزی ربرکس (rubrics) کو سمجھنا آسان ہے۔ • یہ معنی کے بگ (meaning bugs) پکڑتا ہے: یہ hallucination اور منطقی غلطیوں کو تلاش کرتا ہے۔ • یہ کفایتی ہے: آپ ایک مہنگے ماڈل کو گریڈ کرنے کے لیے ایک سستا ماڈل استعمال کر سکتے ہیں۔

یہ طریقہ کار LLM ٹیسٹنگ کو حقیقی سافٹ ویئر ٹیسٹنگ جیسا بنا دیتا ہے۔

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

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