میں نے جو AI ایجنٹ لانچ کیا وہ 23 یونٹ ٹیسٹ پاس کر گیا، لیکن لائیو ہونے کے ایک گھنٹے کے اندر ہی اس نے پروڈکٹ کا ایک ایسا فیچر ایجاد کر دیا اور ایسی قیمت بتائی جو حقیقت سے تین گنا کم تھی۔ جب صارف نے اس کی غلطی نکالی، تو بوٹ اپنی بات پر اڑا رہا، گفتگو ختم ہوگئی، اور میں نے ایک کلائنٹ کھو دیا۔ اس غلطی نے ثابت کر دیا کہ ڈیٹرمینسٹک (deterministic) یونٹ ٹیسٹ کا مجموعہ کسی ایجنٹ کی بھروسہ مندی کی ضمانت نہیں دے سکتا۔
AI ایجنٹس کے لیے یونٹ ٹیسٹ کیوں ناکام رہتے ہیں
روایتی کوڈ کے لیے یونٹ ٹیسٹ کام کرتے ہیں کیونکہ ایک ہی ان پٹ ہمیشہ ایک ہی آؤٹ پٹ دیتا ہے۔ "2 + 2 = 4" ایک ایسی ضمانت ہے جسے آپ ایک سادہ مساوات (equality check) کے ذریعے تصدیق کر سکتے ہیں۔ تاہم، ایک LLM پر مبنی ایجنٹ، پرامپٹ (prompt)، ارد گرد کے سیاق و سباق (context)، اور اس کے ذریعے استعمال کیے جانے والے بیرونی ٹولز کی حالت کے ساتھ اپنا آؤٹ پٹ بدل دیتا ہے۔ وہ ٹیسٹ جو صرف الفاظ کی بالکل درست مماثلت (string equality) کو چیک کرتا ہے، وہ ہالوسینیشنز (hallucinations)، لہجے کی تبدیلیوں، یا گارڈ ریل (guardrail) کی خلاف ورزیوں کو نہیں پکڑ پاتا۔ وہ خاموش ناکامی جس کی وجہ سے کلائنٹ ہاتھ سے نکل گیا، یہ ظاہر کرتی ہے کہ آپ کو صرف الگ تھلگ فنکشنز کے بجائے پوری بات چیت کا جائزہ لینا چاہیے۔
کسی بھی فیچر کوڈ سے پہلے ایویلیوایشن ہارنس بنانا
میں نے ڈویلپمنٹ کا طریقہ الٹ دیا: پہلے چار تہوں والا ایویلیوایشن ہارنس (evaluation harness) ڈیزائن کیا، اور پھر ایجنٹ لکھا۔ یہ ہارنس ایک ہی بار میں 131 ٹیسٹ مکمل کرتا ہے، جس کی لاگت تقریباً تین سینٹ فی رن ہے، اور یہ تقریباً گیارہ منٹ میں مکمل ہو جاتا ہے۔ میں ہر ٹیسٹ کے لیے اس سے چھوٹے ماڈل کا انتخاب کرتا ہوں جو اسے سنبھال سکے، اور بڑے اور مہنگے ماڈلز کو صرف ان لمحات کے لیے محفوظ رکھتا ہوں جہاں وہ واقعی اہمیت رکھتے ہوں۔
لیئر 1 – ٹول کی فعالیت (Tool functionality)
دفاع کی پہلی لائن یہ چیک کرتی ہے کہ آیا ایجنٹ اپنے ٹولز کو صحیح طریقے سے کال کر سکتا ہے یا نہیں۔ ٹیسٹ میں کامیاب سرچز، جان بوجھ کر غلط طریقے سے بنائی گئی کوئریز (queries)، اور مصنوعی API کی ناکامیوں کو شامل کیا گیا ہے۔ چونکہ ٹول کا استعمال کافی حد تک ڈیٹرمینسٹک ہوتا ہے—یا تو درخواست صحیح طریقے سے بنائی گئی ہے یا API ایرر (error) واپس کرتا ہے—اس لیے سادہ Python assertions کافی ہیں۔ یہاں غلط درخواست کو پکڑ لینے سے آگے چل کر ہونے والی الجھنوں سے بچا جا سکتا ہے۔
لیئر 2 – ہدایات پر عمل کرنا (Instruction following)
اس کے بعد ہارنس اس بات کی تصدیق کرتا ہے کہ آیا ایجنٹ گارڈ ریلز (guardrails) کا احترام کرتا ہے۔ ایک چھوٹا LLM ایویلیوایٹر کے طور پر کام کرتا ہے، جو ایجنٹ کے جواب کی تعمیل (compliance) کو اسکین کرتا ہے: جیسے کہ کردار کے مطابق رہنا، ممنوعہ موضوعات سے بچنا، اور مطلوبہ JSON schema فراہم کرنا۔ یہ لیئر اس 'سیمنٹک ڈرِفٹ' (semantic drift) کو پکڑ لیتی ہے جسے یونٹ ٹیسٹ نہیں دیکھ پاتے، جیسے کہ کسی غیر ارادی کردار میں چلے جانا یا اندرونی پرامپٹس کا افشا ہونا۔
لیئر 3 – مقصد پر مبنی رویہ (Goal-oriented behavior)
تیسری لیئر سب سے اہم ہے۔ یہ سوال کرتی ہے کہ کیا ایجنٹ واقعی اپنا مقصد پورا کر رہا ہے۔ ایک لیڈ جنریشن بوٹ کے لیے، اس کا مطلب یہ ہے کہ اس بات کی تصدیق کی جائے کہ وہ صحیح سوالات پوچھ رہا ہے اور ضرورت پڑنے پر کسی انسان کو شامل کر رہا ہے۔ میں یہاں ایک 'ریزننگ اورینٹڈ' (reasoning-oriented) ماڈل استعمال کرتا ہوں کیونکہ یہ لاگت بڑھائے بغیر مجموعی بہاؤ کا جائزہ لے سکتا ہے۔ اگر بوٹ اپنا مقصد حاصل کرنے میں ناکام رہتا ہے—خواہ وہ پہلی دو لیئرز پاس ہی کیوں نہ کر لے—تو اسے دوبارہ ڈیزائن کے لیے نشان زد (flag) کر دیا جاتا ہے۔
لیئر 4 – کارکردگی (Performance)
آخر میں، ہارنس لیٹنسی (latency) اور ٹوکن جنریشن کی رفتار کو ریکارڈ کرتا ہے۔ سست جوابات صارف کے تجربے کو خراب کرتے ہیں، خاص طور پر ریئل ٹائم چیٹ میں۔ فنکشنل درستگی کے ساتھ ساتھ ان میٹرکس کو ٹریک کر کے، میں اس بات کو یقینی بناتا ہوں کہ ایجنٹ درست بھی ہو اور فوری جواب دینے والا بھی۔
لاگت بچانے کے انتخاب
فی رن $0.03 کا یہ ہندسہ کوئی مارکیٹنگ کا ڈرامہ نہیں ہے؛ یہ ٹیسٹ کی پیچیدگی کو ماڈل کے سائز کے مطابق رکھنے سے حاصل ہوتا ہے۔ ڈیٹرمینسٹک ٹول چیک سب سے سستے رن ٹائم پر چلتے ہیں، ہدایات کی تعمیل کے لیے ایک ہلکا پھلکا ماڈل استعمال ہوتا ہے، اور صرف مقصد پر مبنی جائزوں کے لیے زیادہ قابل، اگرچہ مہنگا، ماڈل استعمال کیا جاتا ہے۔ یہ درجہ بندی والا طریقہ کار مجموعی اخراجات کو اتنا کم رکھتا ہے کہ کوڈ میں ہر تبدیلی پر مکمل ٹیسٹ سیٹ چلایا جا سکے۔
توازن: رفتار بمقابلہ حفاظت
ہارنس متعارف کروانے سے شروع میں کچھ رکاوٹیں آئیں۔ ڈویلپمنٹ سائیکلز طویل ہو گئے اور لانچ کی ٹائم لائن آگے بڑھ گئی۔
آگے کیا دیکھنا ہے
- ماڈل پر مبنی ایویلیوایٹرز: جیسے جیسے LLMs بہتر ہوں گے، لیئر 2 میں ایویلیوایٹر مزید باریک بین ہو سکتا ہے، جس سے غلط مثبت (false positives) نتائج کم ہوں گے اور پالیسی کی باریک خلاف ورزیوں کا بھی پتہ چل سکے گا۔
خلاصہ
اگر آپ پروڈکشن کے لیے AI ایجنٹس بنا رہے ہیں، تو ایک تہوں والا ایویلیوایشن ہارنس کوئی اختیاری چیز نہیں بلکہ بنیادی ضرورت ہے۔ جامع ٹیسٹنگ کی لاگت کو شروع میں ہی شامل کر کے—$0.03 فی رن، گیارہ منٹ فی سیٹ—آپ ان خاموش ناکامیوں سے بچتے ہیں جنہیں یونٹ ٹیسٹ بالکل نہیں پکڑ سکتے۔
