میں اپنی ویب سائٹ پر ایک ڈیجیٹل ٹوئن (digital twin) چلاتا ہوں۔ یہ میری زندگی اور مہارتوں کے بارے میں سوالات کے جوابات دیتا ہے۔ میں نے اسے ایک سخت اصول دیا تھا: کبھی بھی باتیں نہ بنائے۔ اگر کوئی ایسی مہارت کے بارے میں پوچھے جو میرے پاس نہیں ہے، تو اسے اعتراف کرنا چاہیے کہ وہ نہیں جانتا۔ مہینوں تک، مجھے یقین تھا کہ سسٹم ٹھیک کام کر رہا ہے۔ میں نے یہاں وہاں خود سے اس کی جانچ کی، اور جوابات درست لگتے تھے۔ پھر میں نے ایک باقاعدہ ایویلیوایشن ہارنس (evaluation harness) بنایا۔ اعداد و شمار نے حقیقت کا سامنا کروا دیا۔ 35 سوالات میں سے نو میں کھلی طور پر جھوٹ بولا گیا۔ آٹھ ایسے سوالات جو ناقابلِ جواب ہونے کے لیے بنائے گئے تھے، ماڈل نے صرف چار پر انکار کیا۔ میرا اینٹی-ہالوسینیشن (anti-hallucination) پرامپٹ تقریباً ایک چوتھائی وقت ناکام رہا۔ میں ایک ایسا پروڈکٹ لانچ کر رہا تھا جو اپنے صارفین سے جھوٹ بول رہا تھا۔
ایک انتہائی سادہ ریٹریول سیٹ اپ
میں نے Pinecone یا کوئی بھاری بھرکم ویکٹر ڈیٹا بیس استعمال نہیں کیا۔ پورا سیٹ اپ ایک سادہ JSON فائل پر مبنی ہے۔ میرا کوڈ میری پروفائل کو الگ الگ حصوں میں تقسیم کرتا ہے۔ جب کوئی سوال آتا ہے، تو سسٹم سوال اور متن کے ہر ٹکڑے کے درمیان cosine similarity کا حساب لگاتا ہے، قریب ترین مماثلت والے ٹکڑے منتخب کرتا ہے، اور انہیں سیاق و سباق (context) کے طور پر پرامپٹ میں شامل کر دیتا ہے۔ ماڈل پھر صرف اسی بنیاد پر جواب تیار کرتا ہے جو اسے اس ونڈو میں نظر آتا ہے۔
حقائق کے ایک محدود مجموعے کے لیے استعمال ہونے والی ایک چھوٹی ذاتی سائٹ کے لیے، یہ طریقہ تیز ہے اور اس کی لاگت نہ ہونے کے برابر ہے۔ کسی دور دراز ویکٹر اسٹور تک نیٹ ورک کا چکر لگانے، انڈیکسنگ کے بوجھ، یا پیچیدہ آرکیسٹریشن کی ضرورت نہیں ہے۔ آپ فائل پڑھتے ہیں، ٹکڑوں کو اسکور کرتے ہیں، پرامپٹ بناتے ہیں، اور کام مکمل ہو جاتا ہے۔ لیکن بیک اینڈ پر سادگی آؤٹ پٹ میں ایمانداری کی ضمانت نہیں دیتی۔ ایک ہلکا پھلکا پائپ لائن بھی سنگین مسائل پیدا کر سکتا ہے جب ماڈل اپنی مرضی سے کچھ نیا بنانے کا فیصلہ کرے۔ "یہ رہا سیاق و سباق" اور "یہ رہا وہ جو میں اس کے بارے میں کہوں گا" کے درمیان کا فرق وہ جگہ ہے جہاں ہالوسینیشن (hallucinations) جنم لیتے ہیں۔ آپ ماڈل کو اپنی کام کی تاریخ کے بارے میں ایک پیراگراف دے سکتے ہیں اور پھر بھی کسی ایسی پروگرامنگ زبان کے بارے میں پراعتماد طریقے سے جھوٹ سن سکتے ہیں جسے آپ نے کبھی چھوا تک نہ ہو۔
وہ اعداد و شمار جنہوں نے میرا اعتماد توڑ دیا
مہینوں تک، میں نے دستی طور پر چیک کرنے کو کافی سمجھا۔ میں چیٹ کھولتا، ایک ایسا سوال پوچھتا جس کا جواب مجھے پہلے سے معلوم ہوتا، اور جب جواب درست لگتا تو سر ہلا دیتا۔ یہی میری ٹیسٹنگ کی حکمت عملی تھی۔ یہ مکمل محسوس ہوتی تھی کیونکہ میں خود انٹرفیس استعمال کر رہا تھا۔ لیکن ایسا نہیں تھا۔
جب میں نے آخر کار ایک ایسا ایویلیوایشن ہارنس لکھا جو منظم طریقے سے چل سکے، تو تصویر بدل گئی۔ ٹیسٹ سوٹ نے ٹوئن پر 35 سوالات کیے ۔ نو جوابات میں جھوٹ شامل تھا۔ میں نے آٹھ ایسے سوالات بھی شامل کیے جن کا میری پروفائل میں کہیں کوئی جواب نہیں تھا۔ ماڈل کو ان سب سے انکار کر دینا چاہیے تھا۔ اس نے صرف چار پر انکار کیا۔ میرا احتیاط سے تیار کردہ اینٹی-ہالوسینیشن پرامپٹ، جس میں کبھی بھی باتیں نہ بنانے کے بارے میں قطعی زبان استعمال کی گئی تھی، تقریباً 25 فیصد بار ناکام رہا۔ چار میں سے ایک۔ یہ کوئی معمولی غلطی نہیں ہے۔ یہ ایک خراب پروڈکٹ ہے۔
دوستانہ سوالات کے ساتھ ٹیسٹنگ کرنا بند کریں
آپ صرف اپنی پروڈکٹ استعمال کر کے بگ (bugs) نہیں ڈھونڈ سکتے۔ آپ انہیں اسے توڑنے کی کوشش کر کے ڈھونڈتے ہیں۔ میرے دستی ٹیسٹ بہت دوستانہ تھے۔ میں نے صرف وہ سوالات پوچھے جن کا مجھے درست جواب معلوم تھا، جس کا مطلب تھا کہ میں لاشعوری طور پر ماڈل کو محفوظ علاقے کی طرف لے جا رہا تھا۔ میں نے کبھی کناروں (edges) کو نہیں پرکھا۔ میں نے کبھی ان مہارتوں کے بارے میں نہیں پوچھا جو میں چاہتا تھا کہ میرے پاس ہوں، یا ان تجربات کے بارے میں جو کبھی ہوئے ہی نہیں۔
حقیقی ٹیسٹنگ کے لیے مخالفانہ ارادے (adversarial intent) کی ضرورت ہوتی ہے۔ آپ کو ایسے سوالات تیار کرنے ہوں گے جو AI کو ناکام بنانے کے لیے بنائے گئے ہوں۔ آپ چاہتے ہیں کہ وہ لیب میں غلطی کرے تاکہ وہ کسی وزیٹر کے سامنے غلطی نہ کرے۔ ایک ایسا ٹیسٹ سوٹ جو صرف اس بات کی تصدیق کرتا ہے جس پر آپ پہلے سے یقین رکھتے ہیں، وہ محض ایک دکھاوے کا ڈیمو ہے۔ اگر آپ فعال طور پر ایج کیسز (edge cases) اور جال والے سوالات (trap questions) تیار نہیں کر رہے ہیں، تو آپ ٹیسٹنگ نہیں کر رہے۔ آپ صرف امید کر رہے ہیں۔
وہ دو غلطیاں جو اہم تھیں
پرامپٹنگ (Prompting) کوئی ضمانت نہیں ہے۔ AI کو ہالوسینیشن نہ کرنے کے لیے دی گئی ایک طویل، تفصیلی ہدایت محض ایک حکم کے روپ میں پیش کی گئی ایک تجویز ہے۔ ماڈل زیادہ تر وقت اس پر عمل کر سکتا ہے، لیکن جیسے ہی شماریاتی دباؤ (statistical pressure) اسے کہیں اور لے جائے گا، وہ ہدایت کو نظر انداز کر دے گا۔ ٹمپریچر (Temperature)، ٹوکن پروببلٹی (token probability)، اور ٹریننگ ڈیٹا کی ساخت، آپ کے سسٹم پرامپٹ میں موجود ایک جملے سے کہیں زیادہ وزنی ہوتے ہیں۔ آپ کو فرمانبرداری کو امید سے نہیں بلکہ ڈیٹا سے ناپنا چاہیے۔ ایک مضبوط ہدایت تصدیق شدہ حقیقت نہیں ہے۔ یہ ایک درخواست ہے، اور درخواستیں مسترد ہو سکتی ہیں۔ اگر آپ کی پوری حفاظتی حکمت عملی اپنے پرامپٹ کو سختی سے لکھنے پر منحصر ہے، تو آپ نے ٹشو پیپر سے حفاظتی دیوار بنائی ہے۔ آپ کو ایک ایسا ایویلیوایشن ہارنس چاہیے جو یہ گنے کہ ماڈل کتنی بار، کن حالات میں فرمانبردار ہوتا ہے، اور جب وہ ناکام ہوتا ہے تو کیوں ناکام ہوتا ہے۔ اعداد و شمار آپ کے لہجے کی پرواہ نہیں کرتے۔
ایویلیوایشن لوپ میں خرابی تھی۔ یہاں ایک ایسی باریک غلطی ہے جس نے مجھے تقریباً پھنسا ہی لیا تھا۔ میرا اصل ٹیسٹنگ ٹول ریٹریول (retrieval) کے عمل کو دو بار چلاتا تھا۔ پہلی بار، یہ 'گراؤنڈ ٹرتھ' (ground truth) کے ساتھ موازنہ کرنے کے لیے سیاق و سباق (context) حاصل کرتا تھا۔ دوسری بار، یہ اصل جواب تیار کرنے کے لیے سیاق و سباق حاصل کرتا تھا۔ عملی طور پر، اس کا مطلب یہ تھا کہ جس ڈیٹا (chunks) کو جج دیکھ رہا تھا، وہ اس ڈیٹا سے مختلف ہو سکتا تھا جو ماڈل دیکھ رہا تھا۔ جج اس ڈیٹا کی بنیاد پر جواب کو نمبر دے رہا تھا جو شاید AI کو کبھی ملا ہی نہ ہو۔ ایسا تخمینہ جو غلط ان پٹ کی بنیاد پر نمبر دے، وہ بغیر کسی تخمینے سے بھی زیادہ برا ہے۔ یہ آپ کو تحفظ کا ایک غلط احساس دلاتا ہے۔ آپ اسکور دیکھتے ہیں، کامیابی کی بلند شرح دیکھتے ہیں، اور پرسکون ہو جاتے ہیں۔ جبکہ آپ کے صارفین
