پچھلے مہینے، ایک AI اسسٹنٹ نے ایک پروڈکشن پروجیکٹ کے لیے Python اسکرپٹ تیار کیا۔ آؤٹ پٹ بغیر کسی غلطی کے چلا۔ ڈیٹا بھی ٹھیک لگ رہا تھا۔ لیکن ایک دستی جائزے (manual review) سے معلوم ہوا کہ ڈیٹا بیس کالز میں ایک N+1 query pattern چھپا ہوا تھا۔ ایک چھوٹے ڈیٹا سیٹ کے لیے، کوڈ نے ٹھیک کام کیا۔ لیکن اسے ہزاروں ریکارڈز تک بڑھا دیں تو ایپلی کیشن پیئرنٹ آبجیکٹس کے لیے ایک کوئری جاری کرے گی، اور پھر متعلقہ ڈیٹا کے لیے ہزاروں فالو اپ کوئریز کرے گی۔ اس کا نتیجہ کارکردگی میں ایک ایسی تباہ کن گراوٹ (catastrophic performance cliff) کی صورت میں نکلے گا جسے کوئی یونٹ ٹیسٹ نہیں پکڑ سکے گا۔

یہ جدید سافٹ ویئر ڈویلپمنٹ کی حقیقت ہے۔ AI ٹولز اب کوڈنگ، ڈیبگنگ، اور آرکیٹیکچرل تجاویز ایسی رفتار سے انجام دے رہے ہیں جس کا مقابلہ کوئی انسان نہیں کر سکتا۔ وہ رفتار حقیقی ہے۔ پھر بھی، یہ بنیادی طور پر آپ کی ملازمت کی نوعیت کو بدل دیتا ہے۔ اب آپ کو بنیادی طور پر صرف سنٹیکس (syntax) ٹائپ کرنے کے لیے تنخواہ نہیں دی جاتی۔ آپ کو آڈٹ کرنے، آرکیٹیکچر ڈیزائن کرنے، اور بالکل اسی طرح کے پوشیدہ جالوں کو پکڑنے کے لیے ادائیگی کی جاتی ہے۔

"منطقی مگر غلط" ہونے کا خاموش خطرہ

AI سے تیار کردہ کوڈ اکثر درست نظر آتا ہے کیونکہ یہ کمپائل ہوتا ہے، چلتا ہے، اور متوقع نتیجہ دیتا ہے۔ سطح پر منطق درست معلوم ہوتی ہے۔ لیکن اس کے نیچے، یہ خاموشی سے خراب ہو سکتا ہے۔

ریگولر ایکسپریشنز (regular expressions) کی مثال لیں۔ ایک AI آپ کو ایسا پیٹرن دے سکتا ہے جو انگریزی میں ای میل ایڈریس یا شناختی نمبروں سے بالکل مطابقت رکھتا ہو۔ لیکن وہی ایکسپریشن اگر جرمن املاؤٹس (umlauts)، عربی اسکرپٹس، یا یونیکوڈ نارملائزیشن کے پیچیدہ کیسز پر چلائی جائے، تو یہ خاموشی سے ناکام ہو جاتا ہے۔ کوڈ اس طرح غلط نہیں ہوتا کہ کوئی ایرر (exception) دے، بلکہ یہ صرف حقیقی دنیا کے درست ڈیٹا کو خارج کر دیتا ہے۔

ڈیٹا بیس کوئریز میں بھی اسی طرح کا خطرہ ہوتا ہے۔ ایک AI ایسی PostgreSQL کوئری لکھ سکتا ہے جو ٹیسٹنگ کے دوران درست روز (rows) واپس کرے، لیکن پھر بھی آپ کے ٹیبلز کو ڈیڈ ٹیپلز (dead tuples) سے بھر دے، انڈیکس کے استعمال کو نظر انداز کر دے، یا سیکوئنشل اسکینز (sequential scans) پر مجبور کر دے جو پروڈکشن ورک لوڈز کو مفلوج کر دیتے ہیں۔ جو چیز ڈیمو ڈیٹا سیٹ میں کام کرتی ہے اور جو حقیقی لوڈ کے تحت کام کرتی ہے، وہ دو مختلف چیزیں ہیں۔ مشین لیٹنسی (latency) محسوس نہیں کرتی۔ یہ کلاؤڈ کا بل ادا نہیں کرتی۔

لکھنے سے تصدیق کرنے تک

بنیادی تبدیلی "میں اسے کیسے لکھوں؟" سے "میں اس کی تصدیق کیسے کروں؟" کی طرف منتقل ہونا ہے۔ جب AI پہلا ڈرافٹ تیار کر لیتا ہے، تو آپ کا ذہنی بوجھ (cognitive load) مزید گہرائی میں منتقل ہونا چاہیے۔ آپ کو کوڈ کو اس طرح پڑھنے کی ضرورت ہے جیسے ایک سیکیورٹی آڈیٹر پڑھتا ہے، نہ کہ اس طرح جیسے ایک تھکا ہوا مصنف اپنے ہی کام کو سرسری طور پر دیکھتا ہے۔

اس کے لیے ایک مختلف قسم کے نظم و ضبط کی ضرورت ہے۔ آٹومیشن بائیس (Automation bias) ایک حقیقت ہے۔ جب کوئی ٹول روانی سے اور سنٹیکس کے لحاظ سے مکمل آؤٹ پٹ فراہم کرتا ہے، تو انسانی دماغ پرسکون ہو جاتا ہے۔ آپ درستگی کا اندازہ لگا لیتے ہیں کیونکہ پیشکش بہت پالش شدہ ہوتی ہے۔ اس رجحان کا مقابلہ کرنا اب بنیادی مہارت ہے۔ آپ کو ہر تجویز کو ایک مفروضہ سمجھنا چاہیے جب تک کہ وہ ثابت نہ ہو جائے۔

مشین کے ساتھ کام کرنا

ایک AI کوڈنگ اسسٹنٹ سے مفید آؤٹ پٹ حاصل کرنے کا مطلب تیزی سے ٹائپ کرنا نہیں ہے۔ اس کا مطلب مشین کے ٹریننگ ڈیٹا اور آپ کی مخصوص حقیقت کے درمیان فاصلے کو کم کرنا ہے۔ آپ چند ٹھوس طریقوں سے اس فاصلے کو کم کر سکتے ہیں۔

اپنے پرامپٹس (prompts) میں درست رہیں۔ یہاں ابہام شاعری پیدا نہیں کرتا؛ بلکہ یہ بگ (bugs) پیدا کرتا ہے۔ "اس فنکشن کو بہتر بنائیں" جیسا پرامپٹ عام سی مشورہ دے گا۔ اس کے بجائے، لکھیں "اس Python لوپ کو ریفیکٹر کریں تاکہ بار بار سیو کرنے کے بجائے سنگل بلک ڈیٹا بیس اپ ڈیٹ استعمال ہو سکے۔" مخصوص ہونا امکانات کے دائرے کو محدود کر دیتا ہے۔

حقیقی سیاق و سباق (context) فراہم کریں۔ AI کو یہ معلوم نہیں ہے کہ آپ Kubernetes کلسٹر کے اندر PostgreSQL 15 پر Django 4.2 چلا رہے ہیں جس میں 30 سیکنڈ کا سخت ریکوسٹ ٹائم آؤٹ ہے، جب تک کہ آپ اسے بتائیں نہ۔ اسے اپنے ڈیپینڈنسی ورژنز، اپنی انٹرنل لائبریریز، اور اپنی غیر گفت و شنید کے قابل پابندیوں (constraints) کے بارے میں بتائیں۔ سیاق و سباق محض سجاوٹ نہیں ہے؛ یہ حفاظتی رکاوٹیں (guardrails) ہیں۔

اپنے دستاویزات کے ذریعے جوابات کو مستند بنائیں۔ ریٹریول آگمینٹڈ جنریشن (RAG) محض چیٹ بوٹس کے لیے ایک اصطلاح نہیں ہے۔ اپنے اسسٹنٹ کو اپنی اصل API تفصیلات، اپنے آرکیٹیکچر فیصلے کے ریکارڈز، اور اپنے کوڈ بیس کے اصولوں کی طرف اشارہ کریں۔ جب ماڈل ٹریننگ ڈیٹا سے اندازہ لگانے کے بجائے آپ کی دستاویزات سے حقائق نکالتا ہے، تو عام مشورے اور قابل استعمال کوڈ کے درمیان فرق نمایاں طور پر کم ہو جاتا ہے۔

پیچیدہ کام کو الگ الگ کاموں میں تقسیم کریں۔ ایجنٹ پیٹرنز (Agent patterns) اس وقت بہترین کام کرتے ہیں جب ہر مرحلے کا دائرہ کار محدود ہو۔ ایک ہی بار میں مکمل مائیکرو سروس ریفیکٹر کرنے کا مطالبہ نہ کریں۔ پہلے ڈیٹا اسکیمہ (data schema) مانگیں۔ اس کی تصدیق کریں۔ پھر مائیگریشن اسکرپٹ مانگیں۔ اس کی تصدیق کریں۔ پھر سروس لیئر (service layer) کی طرف بڑھیں۔