فائدہ:
- ایک بگ کو سب سے چھوٹی تولیدی مثال تک کم کرنے اور اسے مکمل ثبوت کے ساتھ AI میں منتقل کرنے کی صلاحیت
- سب سے سستے کنٹرول کے ساتھ ثبوت پر مبنی مفروضوں کو جانچنے اور اس کی بنیادی وجہ تلاش کرنے کی صلاحیت
- بنیادی وجہ کو حل کرنے اور علامت کو پیچ کرنے کے بجائے اسے رجعت ٹیسٹ کے ساتھ محفوظ کرنے کی صلاحیت
ڈیبگنگ یہ معلوم کرنے کا عمل ہے کہ کوئی سافٹ ویئر غیر متوقع طور پر کیوں برتاؤ کرتا ہے اور اسے ٹھیک کرتا ہے۔ یہ وہ کام ہے جہاں ایک ڈویلپر سب سے زیادہ وقت صرف کرتا ہے اور سب سے زیادہ تھک جاتا ہے۔ کیونکہ اکثر غلطی وہیں نہیں ہوتی جہاں ظاہر ہوتی ہے بلکہ چند قدم پیچھے چھپی ہوتی ہے۔ AI ایک طاقتور سوچ کا ساتھی ہے جو اس تحقیق کو تیز کرتا ہے — لیکن صرف اس صورت میں جب آپ اسے صحیح ثبوت دیں۔ بغیر ثبوت کے ڈیبگنگ وہ علاقہ ہے جہاں AI سب سے زیادہ فریب پیدا کرتا ہے۔
اس یونٹ میں، ہم خرابی پیدا کرنے سے لے کر بنیادی وجہ تک پہنچنے تک ایک نظم و ضبط کا بہاؤ قائم کرتے ہیں: علامت کو واضح کرنا، ثبوت اکٹھا کرنا (غلطی کا پیغام، اسٹیک ٹریس، لاگ، اندراج)، ایک مفروضہ تیار کرنا، مفروضے کی جانچ کرنا، اور درستگی کی تصدیق کرنا۔ AI ہر قدم پر مدد کرتا ہے۔ لیکن "مقررہ" فیصلہ یہ دیکھ کر کیا جاتا ہے کہ بگ واقعی دور ہو گیا ہے۔
ثبوت سب کچھ کیوں ہے؟
ایل ایل ایم میں آپ کی طرح غلطی نظر نہیں آتی ہے۔ وہ صرف وہی جانتا ہے جو آپ اسے بتاتے ہیں۔ ایک جملہ جیسا کہ "ایپلی کیشن کریشز" ماڈل کو تقریباً کوئی معلومات نہیں دیتا، اور ماڈل ایک پیشین گوئی کے ساتھ خلا کو پُر کرتا ہے - یعنی ایک فریب نظر۔ بدلے میں، مکمل ایرر میسج، اسٹیک ٹریس — ایک خرابی جس کا فنکشن کہتا ہے کہ غلطی ہوئی، ان پٹ جس نے خرابی کو متحرک کیا، اور کیا توقع تھی، وغیرہ۔ مشاہدہ شدہ رویے کو دیکھتے ہوئے، ماڈل صحیح امکانات کی درجہ بندی کر سکتا ہے۔
ڈیبگنگ میں، AI کے بارے میں ایک جاسوس کے معاون کے طور پر سوچیں: آپ جتنے زیادہ ثبوت پیش کریں گے، اتنا ہی درست مفروضہ اس سے پیدا ہوتا ہے۔ اگر کوئی ثبوت نہیں ہے، تو معاون صرف اندازہ لگائے گا اور آپ کو غلط راستے پر لے جا سکتا ہے۔
ٹپ: AI پر بگ پورٹ کرنے سے پہلے، اسے کم کر کے دوبارہ پیدا کرنے کے قابل مثال کے طور پر کم کر دیں۔ غلطی کو متحرک کرنے والا سب سے چھوٹا کوڈ اور ان پٹ چیزوں کو آپ اور ماڈل دونوں کے لیے یکسر آسان بنا دیتا ہے۔ اکثر اس کمی کے دوران آپ خود وجہ تلاش کرتے ہیں۔
مرحلہ وار: جڑ کاز تجزیہ بہاؤ
- علامت کو واضح کریں۔ "کیا ہو رہا ہے، تمہیں کیا ہونے کی امید تھی؟" دونوں کو ایک جملے میں لکھیں۔
- ثبوت اکٹھا کریں۔ مکمل ایرر میسج، اسٹیک ٹریس، متعلقہ لاگ لائنز، ٹرگرنگ انٹری، ورژن کی معلومات۔
- مفروضے کو تیار کریں۔ AI سے "3 ممکنہ وجوہات جو اس علامت کی وضاحت کرتی ہیں اور میں ہر ایک کے لیے ٹیسٹ کیسے کروں؟" پوچھنا
- پہلے سب سے سستے مفروضے کی جانچ کریں۔ لاگ شامل کریں، ایک قدر پرنٹ کریں، ٹیسٹ چلائیں۔ کیا ثبوت مفروضے کی تصدیق کرتے ہیں؟
- بنیادی وجہ کو درست کریں، علامت نہیں۔ علامات کو پیچ کے ساتھ خاموش کرنے کے بجائے، بنیادی وجہ کو حل کریں.
- ریگریشن ٹیسٹنگ کی توثیق کریں اور شامل کریں۔ خرابی غائب دیکھیں؛ پھر ایک ٹیسٹ لکھیں جو اس غلطی کو پکڑ لے تاکہ یہ واپس نہ آئے۔
تین چھوٹے کیسز
کیس 1 - اسٹیک ٹریس درست فائل کی طرف لے گیا۔ ایک درخواست کچھ درخواستوں پر 500 غلطی واپس کر رہی تھی۔ ڈویلپر نے AI کو مکمل اسٹیک ٹریس اور ٹرگرنگ درخواست دی۔ ماڈل نے قیاس کیا کہ غلطی تاریخ کی تجزیہ کرنے والی پرت میں None قدر کی وجہ سے ہوئی ہے۔ ڈویلپر نے اس لائن میں ایک لاگ شامل کیا، اس کی تصدیق کی اور اسے 15 منٹ میں حل کر دیا۔ غیر ثابت شدہ تجربات کے ساتھ ایک دن پہلے 2 گھنٹے ضائع کیے گئے تھے۔
کیس 2 - ہیلوسینیشن غلط راستے کی طرف لے گئی۔ ایک اور ڈویلپر نے صرف لکھا "ڈیٹا بیس کنکشن گر رہا ہے"۔ اے آئی نے بغیر کسی ثبوت کے کنکشن پول سیٹنگ کا الزام لگایا۔ ڈویلپر نے اس ترتیب کے ساتھ ٹنکرنگ میں 40 منٹ گزارے۔ اصل وجہ نیٹ ورک کی طرف سے ایک ٹائم آؤٹ تھا اور صرف لاگز کو دیکھ کر ظاہر ہوا تھا۔ سبق: بغیر ثبوت کے لیا گیا مفروضہ صرف ممکنہ ہے، قابل اعتماد نہیں۔
کیس 3 - فلکی غلطی پکڑی گئی۔ ایک امتحان تھا جو کبھی کبھار ناکام ہو جاتا تھا۔ AI کو ٹیسٹ کوڈ، ناکامی کا پیغام، اور معلومات دی گئی تھیں "کبھی یہ گزر جاتا ہے، کبھی ناکام ہوجاتا ہے"؛ ماڈل نے ٹیسٹوں کے مشترکہ وقت/ آرڈر پر انحصار کا اشارہ کیا۔ جائزے نے تصدیق کی کہ ٹیسٹ سسٹم کے مقامی وقت پر مبنی تھا۔ ایک بار گھڑی ٹھیک ہو گئی (مذاق)، ٹیسٹ مستحکم ہو گیا۔
چار کاپی ایبل ٹیمپلیٹس
ثبوت پر مبنی مفروضے کی تخلیق:
میں ایک بگ ڈیبگ کر رہا ہوں۔ ذیل میں ثبوت۔- متوقع برتاؤ: {{متوقع}}- مشاہدہ سلوک: {{مشاہدہ}}- خرابی کا پیغام / اسٹیک ٹریس: {{trace}}- متحرک ان پٹ: {{input}}- ماحول/ورژن: {{version}} 3 سب سے زیادہ ممکنہ بنیادی وجوہات کی فہرست بنائیں جو اس کی وضاحت کرتے ہیں۔ ہر ایک کے لیے: میں کیسے ٹیسٹ کروں (سب سے سستا چیک) اور اگر یہ درست ہے تو اسے کیسے ٹھیک کیا جائے۔ اگر ثبوت ناکافی ہیں تو مجھے بتائیں کہ آپ کو کون سی اضافی معلومات درکار ہیں۔
اسٹیک ٹریس کی تشریح:
اس اسٹیک ٹریس کو پڑھیں۔ اس کے درمیان فرق کریں کہ غلطی ممکنہ طور پر (جڑ) سے شروع ہوتی ہے اور کون سی لائنیں صرف سلسلہ کا تسلسل ہیں۔ پہلے دیکھنے کے لیے 1-2 جگہیں تجویز کریں۔ متعلقہ کوڈ:{{code}}ٹریس:{{trace}}
کم سے کم ریپرو گھٹاؤ:
نیچے کا کوڈ ایک خرابی پیدا کرتا ہے۔ اسے سب سے چھوٹی مثال تک کم کریں جو اب بھی غلطی کو متحرک کرتا ہے لیکن کسی بھی غیر ضروری چیز کو رد کر دیتا ہے۔ یہ نہ سمجھیں کہ آپ جو بھی ٹکڑا ہٹاتے ہیں وہ غلطی پر اثر انداز نہیں ہوتا ہے، لیکن ایک نوٹ شامل کریں کہ "اگر آپ اسے ہٹاتے وقت غلطی غائب ہو جاتی ہے، تو اس لیے"۔{{code}}
تصحیح کے بعد کی توثیق اور رجعت کی جانچ:
فرض کریں کہ اصل وجہ {{cause}} ہے اور میں درج ذیل کو ٹھیک کرتا ہوں: {{fix}}.1) کیا یہ درستگی علامت کو ٹھیک کرتی ہے، کیا اس کے کوئی مضر اثرات ہوں گے؟
کمزور فوری / مضبوط اشارہ
کمزور: "کوڈ کام نہیں کرتا، کیوں؟"
مضبوط: "نوڈ 20 / ایکسپریس۔ پوسٹ / آرڈرز 500 لوٹاتا ہے جب آئٹمز باڈی میں خالی سٹرنگ ہوں؛ 400 کو لوٹانا چاہیے تھا۔ اسٹیک ٹریس: TypeError: undefined ('0' کو پڑھنا) کی خصوصیات کو نہیں پڑھ سکتا ہے - منسلک مکمل ٹریس اور اس سے منسلک ہینڈلر ہے۔ مجھے بتائیں کہ ہر ایک کو 3 اور ممکنہ طور پر اس کی جانچ کرنے کا طریقہ بتاتا ہے۔ + کوڈ]"
طاقتور ورژن؛ یہ ماحول، اختتامی نقطہ، ٹرگر ان پٹ، درست غلطی کی قسم، اور متوقع سلوک فراہم کرتا ہے۔ ماڈل اب پیشین گوئیاں نہیں کر سکتا بلکہ تجزیہ کر سکتا ہے۔
قدم
AI کی شراکت
آپ کا کنٹرول
ثبوت جمع کرنا
کیا ثبوت کی ضرورت ہے، یاد دلاتا ہے
واقعی ثبوت جمع کرتا ہے۔
مفروضہ نسل
ممکنہ وجوہات کی فہرست بنائیں
سیاق و سباق کے ساتھ ترجیح دیتا ہے۔
مفروضے کی جانچ
ٹیسٹ کا طریقہ تجویز کرتا ہے۔
ذاتی طور پر کام کرتا ہے اور مشاہدہ کرتا ہے۔
اصلاح
پیچ کی سفارش کرتا ہے
کیا یہ بنیادی وجہ کو حل کرتا ہے؟ یہ سچ ہے۔
رجعت
ایک ٹیسٹ لکھتا ہے
تصدیق کرتا ہے کہ ٹیسٹ ٹوٹ گیا ہے۔
بنیادی وجہ کو حل کرنا، علامت نہیں۔
زیادہ تر وقت AI ایک پیچ تجویز کرے گا جو علامات کو تیزی سے خاموش کر دیتا ہے: ایک کوشش/کیچ شامل کریں، null چیک کریں، غلطی کو نگل لیں۔ یہ کبھی کبھی سچ ہے، اکثر خطرناک؛ کیونکہ اصل وجہ اپنی جگہ پر رہتی ہے اور دوبارہ کہیں اور سے پھوٹتی ہے۔ ہر اصلاح کے ساتھ، اپنے آپ سے پوچھیں: "کیا یہ غلطی کی وجہ کو ٹھیک کرتا ہے، یا یہ اسے پوشیدہ بنا دیتا ہے؟" ایک بار جب آپ بنیادی وجہ تلاش کر لیتے ہیں، تو ٹھیک کرنا عموماً چھوٹا، زیادہ مضبوط اور مستقل ہوتا ہے۔
احتیاط: خاموشی سے استثنیٰ (خالی کیچ) نگلنے سے غلطی حل نہیں ہوتی۔ یہ محض چھپاتا ہے اور مستقبل کی تشخیص کو ناممکن بنا دیتا ہے۔ اگر AI اس طرح کا "حل" تجویز کرتا ہے، تو بنیادی وجہ پر سوال کیے بغیر اسے قبول نہ کریں۔
عام غلطیاں
- بغیر ثبوت کے سوالات کرنا۔ مبہم جملے ماڈل کو فریب میں دھکیلتے ہیں۔ مکمل ایرر، ٹریس اور ان پٹ دیں۔
- پہلے مفروضے پر قفل لگانا۔ AI کی پہلی تجویز کا سب سے زیادہ امکان نہیں ہوسکتا ہے۔ سب سے سستے قابل کنٹرول مفروضے کے ساتھ شروع کریں۔
- علامت کی پیچیدگی اور بنیادی وجہ غائب۔ خاموش غلطی واپس آتی ہے۔
- اس کی تصدیق کیے بغیر درست کو بند کرنا۔ پیداوار جیسی حالت میں دیکھیں کہ غلطی اصل میں غائب ہو جاتی ہے۔
- ریگریشن ٹیسٹ نہیں لکھنا۔ اگر کوئی ٹیسٹ شامل نہیں کیا جاتا ہے، تو وہی خرابی خاموشی سے بعد کے ورژن میں واپس آجائے گی۔
خلاصہ میں
ڈیبگنگ میں، AI کی طاقت اس ثبوت کے براہ راست متناسب ہے جو آپ اسے دیتے ہیں: مکمل ایرر میسج، اسٹیک ٹریس، ٹرگرنگ ان پٹ اور متوقع رویے کے بغیر، ماڈل صرف قیاس کرتا ہے۔ نظم و ضبط کا بہاؤ—علامت کو واضح کرنا، شواہد اکٹھا کرنا، مفروضہ تیار کرنا، سب سے سستے کنٹرول کے ساتھ جانچ، بنیادی وجہ کو درست کرنا، تصدیق کرنا، اور ریگریشن ٹیسٹنگ شامل کرنا—بگ کو جلدی اور مستقل طور پر بند کر دیتا ہے۔ AI ایک مفروضہ جنریٹر ہے؛ آپ وہ ہیں جو یہ فیصلہ کرتے ہیں کہ مسئلہ درحقیقت حل ہو گیا ہے۔
درخواست کا کام
ایک حقیقی بگ کا انتخاب کریں جس کا آپ نے حال ہی میں سامنا کیا ہے (یا ٹیسٹ بگ کو دوبارہ پیش کریں)۔ پہلے "کم از کم تولید" کا مرحلہ کریں؛ سب سے چھوٹے کوڈ اور ان پٹ کو ہٹا دیں جو غلطی کو متحرک کرتا ہے۔ پھر "ثبوت پر مبنی مفروضہ جنریشن" ٹیمپلیٹ کے ساتھ AI سے 3 ممکنہ وجوہات اور جانچ کے طریقے حاصل کریں۔ خود سب سے سستے مفروضے کی جانچ کریں، بنیادی وجہ تلاش کریں، اسے ٹھیک کریں، اور آخر میں ایک رجعت ٹیسٹ لکھیں جو مستقبل میں اس مسئلے کو پکڑے گا اور اس بات کی تصدیق کرے گا کہ واقعی ٹیسٹ ٹوٹ گیا ہے۔
چیک لسٹ
- [ ] میں اسے AI میں منتقل کرنے سے پہلے سب سے چھوٹے تولیدی نمونے میں غلطی کو کم کرتا ہوں۔
- میں مکمل ایرر میسج، اسٹیک ٹریس، ان پٹ اور متوقع برتاؤ کو پرامپٹ میں شامل کر رہا ہوں۔
- میں کسی ایک مفروضے میں بند کیے بغیر، سب سے سستے قابل کنٹرول سے شروع کرتا ہوں۔
- [ ] میں تصدیق کرتا ہوں کہ میں نے علامت کو ٹھیک کرنے کی بجائے اصل وجہ کو حل کر لیا ہے۔
- [ ] میں نے مشاہدہ کیا کہ فکس دراصل بگ کو ٹھیک کرتا ہے۔
- میں ہر حل شدہ بگ کے لیے ایک ریگریشن ٹیسٹ شامل کرتا ہوں۔