یونٹ 1 / 12

کمپیوٹر انجینئرنگ میں مصنوعی ذہانت اور تصدیقی نظم و ضبط کا تعارف

فائدہ:

  • یہ فرق کرنے کی اہلیت جہاں AI سافٹ ویئر ڈویلپمنٹ لائف سائیکل میں حقیقی رفتار فراہم کرتا ہے اور جہاں فیصلہ اور ذمہ داری انجینئر کے پاس رہتی ہے۔
  • تین پرتوں والے انجینئرنگ ڈسپلن کو لاگو کرنے کی اہلیت جو تالیف، جانچ اور جائزہ کے ذریعے تیار کردہ ہر کوڈ اور ڈیزائن کی تصدیق کرتی ہے۔
  • خفیہ سورس کوڈ، اسناد اور کسٹمر ڈیٹا کا اشتراک کیے بغیر AI کا فائدہ اٹھانے کے لیے سیاق و سباق کو صاف کرنے کی عادت ڈالیں۔

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

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

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

کن کاروباروں میں AI ایکسلریٹر ہے، کن کاروباروں میں یہ خطرناک ہے؟

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

کاروبار کی قسم

AI کی شراکت

انجینئر کا کردار

کوڈ کنکال / بوائلر پلیٹ

دہرائے جانے والے ڈھانچے کی تیزی سے نسل

منطق اور کنارے کی حیثیت کا کنٹرول

ڈیبگنگ

مفروضہ اور ممکنہ وجوہات کی فہرست

پنروتپادن اور جڑ کی تصدیق

تحریری ٹیسٹ

ٹیسٹ ڈرافٹ اور منظر نامے کی تخلیق

معنی خیز دعوی اور دائرہ کار کی جانچ

ری فیکٹرنگ

ری فیکٹرنگ کی تجویز

جانچ کے ذریعے سلوک کو برقرار رکھنا

دستاویزی

پہلا مسودہ اور ڈھانچہ

کوڈ کے خلاف درستگی کی جانچ

آرکیٹیکچرل/سیکیورٹی کا فیصلہ

اختیارات اور فوائد اور نقصانات کی فہرست

حتمی فیصلہ اور ذمہ داری

قاعدہ آسان ہے: AI آؤٹ پٹ کا خطرہ اس نقصان کے برابر ہے اگر اس آؤٹ پٹ میں کوئی غلطی ہوتی ہے۔ متغیر نام کو غلط طریقے سے تجویز کرنا بے ضرر ہے۔ غلط تصدیق (یہ جانچنا کہ صارف واقعی وہی ہے جس کا وہ دعویٰ کرتے ہیں) پورے نظام کو کمزور بنا دیتا ہے۔ لہذا آؤٹ پٹ استعمال کرنے سے پہلے پوچھنے کا پہلا سوال یہ ہے: "اگر یہ غلط ہے تو کیا ہوتا ہے اور کون اسے نوٹس کرتا ہے اور کب؟"

احتیاط: AI روانی اور پراعتماد کوڈ تیار کرتا ہے۔ روانی درستگی کی کوئی ضمانت نہیں ہے۔ ایک زبان کا ماڈل قابل اعتبار طور پر ایک فنکشن کا نام پیدا کرسکتا ہے جو حقیقت میں موجود نہیں ہے، ایک غلط پیرامیٹر ترتیب، یا یہاں تک کہ ایک غیر محفوظ نمونہ۔ سافٹ ویئر میں، یہ کاغذ پر نہیں رہتا ہے۔ یہ مرتب کرتا ہے، چلتا ہے، اور پیداوار میں پھٹتا ہے۔

وہ فیصلے جو انجینئر پر چھوڑے جائیں۔

کچھ فیصلے کبھی بھی مکمل طور پر خودکار نہیں ہونے چاہئیں۔ تکنیکی، قانونی اور اخلاقی خطرات لاحق ہیں:

  • پروڈکشن کے لیے منظوری: پروڈکشن میں کوڈ کا اجراء اور اس کی ذمہ داری۔
  • سیکیورٹی اور فن تعمیر: مہنگے فیصلے جیسے توثیق، اجازت، خفیہ کاری اور ڈیٹا ماڈل۔
  • لائسنس اور کاپی رائٹ: تجارتی مصنوعات اور لائسنس کی تعمیل میں تیار کردہ کوڈ کا استعمال۔
  • خفیہ ڈیٹا کے ساتھ کام کرنا: کسٹمر ڈیٹا، سورس کوڈ کے راز اور شناختی معلومات کے ساتھ لین دین۔
انتباہ: یہاں تک کہ اگر AI کہتا ہے کہ "یہ کوڈ محفوظ اور پروڈکشن کے لیے تیار ہے"، تو سیکیورٹی ٹیسٹنگ کے بغیر اسے قبول کرنا، کوڈ کا جائزہ لینا اور حقیقی بوجھ کے تحت توثیق ناقابل قبول ہے۔ حفاظتی اہم کام میں، AI آؤٹ پٹ کبھی بھی قابل انجینئر کی منظوری کا متبادل نہیں ہوتا ہے۔ کوئی بھی آؤٹ پٹ جو کسی فیصلے کی طرف لے جاتا ہے اسے نافذ کرنے سے پہلے بااختیار انجینئر کے ذریعہ آزادانہ طور پر تصدیق شدہ اور منظور شدہ ہونا ضروری ہے۔

توثیق کا نظم و ضبط: تین پرتوں کا کنٹرول

AI آؤٹ پٹ کو آنکھ بند کرنے کے بجائے سینئر جائزہ لینے والے کی طرح استعمال کرنے کے لیے کنٹرول کی تین پرتیں لگائیں۔ یہ بنیادی اضطراری ہے جسے ہم پورے ماڈیول میں دہرائیں گے۔

  1. تالیف اور جامد جانچ: کیا کوڈ اصل میں مرتب/چلتا ہے؟ کیا قسم کی غلطیاں، غیر استعمال شدہ متغیرات، غیر موجود APIs ہیں؟ جامد تجزیہ ٹول (وہ ٹول جو کوڈ کو چلائے بغیر جانچتا ہے) کیا کہتا ہے؟
  2. آزاد پنروتپادن (ٹیسٹنگ): کوڈ کو چھوٹے، معلوم ان پٹ کے ساتھ چلائیں اور دیکھیں کہ آیا آپ کو متوقع آؤٹ پٹ ملتا ہے۔ ایج کیسز آزمائیں (نال، صفر، منفی، بہت بڑا)۔
  3. ماخذ کی توثیق: ہر API، لائبریری ورژن، اور زبان کی خصوصیت جو AI استعمال کرتی ہے سرکاری دستاویزات سے تصدیق ہونی چاہیے۔

تصدیقی پرامپٹ (آؤٹ پٹ کو چیک کرنا آسان بناتا ہے): "تمام بیرونی لائبریریوں، طریقوں اور زبان کی خصوصیات کی فہرست بنائیں جو آپ اپنے کوڈ میں استعمال کرتے ہیں۔ ہر ایک کے لیے اس بات کی نشاندہی کریں کہ یہ کس ورژن میں دستیاب ہے اور اس پر 'دستاویزات سے تصدیق ہونی چاہیے' کا لیبل لگائیں۔ کوئی بھی APIs نہ بنائیں جس کے بارے میں آپ کو یقین نہیں ہے۔

اپنے اپنے کوڈ پرامپٹ پر تنقید کریں: "آپ نے ابھی لکھے ہوئے کوڈ کو تنقیدی نظر سے دیکھیں، جیسے کسی سینئر انجینئر نے آپ کی خدمات حاصل کی ہیں۔ ان تین عنوانات کے تحت ٹھوس آئٹمز دیں: (1) منطق/ایج کیس کی غلطیاں، (2) حفاظتی خطرات، (3) کارکردگی یا پڑھنے کی اہلیت کے مسائل۔ ہر آئٹم کے لیے، 'مسئلہ کیوں ہے' لکھیں اور 'اگر تجویز کیا گیا تو کوئی مسئلہ تلاش نہیں کیا جا سکتا ہے'۔ اسے سجانے کی کوشش نہ کرو۔"

کمزور پرامپٹ / مضبوط اشارہ

کمزور:"مجھے صارف کی توثیق کا فنکشن لکھیں۔"(نتیجہ: واضح نہیں کہ کون سی زبان، کون سا اصول، کون سا غلطی کا رویہ؛ عام کوڈ، اکثر غیر محفوظ یا سیاق و سباق سے ہٹ کر۔)STRONG:"Python 3.11 کے لیے ایک ای میل کی توثیق کا فنکشن لکھیں۔ ان پٹ: سٹرنگ۔ آؤٹ پٹ: درست اگر درست ہے تو، غلط نہیں، ایف سی: غلط نہیں تعمیل کی ضرورت ہے، بنیادی فارمیٹ کا استعمال نہ کریں ایک 5 نمونہ فنکشن بلاک کے نیچے: درست، خالی، ڈبل '@'، صرف خالی جگہوں پر مشتمل ہے۔"

فرق سیاق و سباق میں ہے۔ طاقتور فوری؛ اس میں زبان، ورژن، ان پٹ آؤٹ پٹ معاہدہ، رکاوٹیں، اور ٹیسٹ کی توقع شامل ہے۔ یہ واحد نظم و ضبط فریب اور غیر محفوظ کوڈ کے خطرے کو بہت حد تک کم کرتا ہے۔

چھوٹے کیسز

کیس 1 - تیار شدہ طریقہ۔ ایک ڈویلپر نے AI سے سنا ہے کہ ڈیٹ لائبریری میں date.addBusinessDays(5) نامی ایک طریقہ موجود ہے اور اس کی وضاحت پر اعتماد طریقے سے کی گئی ہے۔ دستاویزات کو دیکھ کر، وہ دیکھتا ہے کہ ایسا کوئی طریقہ نہیں ہے، صحیح طریقہ ایک دستی لوپ ہے. 10 منٹ کی تصدیق کے ساتھ پروڈکشن میں جانے سے پہلے ہیلوسینیشن کو پکڑ لیا جاتا ہے۔

کیس 2 - کنارے کی حالت کا نقصان۔ AI ایک "کیلکولیٹ ایوریج" فنکشن تیار کرتا ہے۔ ڈیٹا کی 1,000 قطاروں کے ساتھ جانچنے پر یہ کام کرتا ہے۔ تاہم، جب فہرست خالی ہوتی ہے، تو یہ صفر کی غلطی سے تقسیم کرتی ہے۔ چونکہ انجینئر نے خالی ان پٹ ٹیسٹ شامل کیا ہے، اس لیے وہ لائیو ہونے سے پہلے غلطی کو دیکھتا اور اسے ٹھیک کرتا ہے۔ سنگل ایج کنڈیشن ٹیسٹ صبح 3 بجے پروڈکشن الارم کو روکتا ہے۔

کیس 3 - رازداری کا خطرہ۔ ایک ماہر ایک حقیقی ڈیٹا بیس کنکشن سٹرنگ اور API کلید کے ساتھ ایک فائل کو عوامی ٹول میں پیسٹ کرنے والا ہے۔ ادارے کی پالیسی کو یاد رکھتا ہے؛ یہ راز کو <REDACTED> سے بدل دیتا ہے، کوڈ کو ایک نمائندہ مثال کے طور پر کم کر دیتا ہے، اور اس سے پوچھتا ہے۔ اس طرح اسے 5 منٹ میں مدد مل جاتی ہے لیکن اس کی شناخت کی معلومات سامنے نہیں آتیں۔

خفیہ کوڈ اور شناختی معلومات کے ساتھ کام کرنے کا اصول

سافٹ ویئر کا سب سے حساس حصہ؛ سورس کوڈ کے راز، شناخت کی معلومات (API کلید، پاس ورڈ، ٹوکن) اور کسٹمر/ذاتی ڈیٹا۔ بنیادی اصول: اشتراک کرنے سے پہلے صاف کریں، اگر ممکن ہو تو نمائندہ مثال کے ساتھ مسئلہ کا صرف خلاصہ پوچھیں۔

گمنام پرامپٹ پیٹرن: "مندرجہ ذیل فنکشن میں ایک خرابی ہے۔ میں نے حقیقی کاروباری منطق اور چھپے ہوئے مستقل کو نمائندہ اقدار (API کلید، ٹیبل کے نام، فیلڈ کے نام جنرک) سے تبدیل کر دیا ہے۔ مسئلہ: مجھے ان پٹ X میں خامی Y ملتی ہے۔ بس اس نمائندہ کوڈ میں منطق کی غلطی تلاش کریں اور درست شدہ ورژن کی وضاحت کریں۔" [نمائندہ کوڈ]۔

ٹپ: اگر شک ہو تو یہ ٹیسٹ لیں: "اگر میں نے اسے کسی فورم میں عوامی طور پر لکھا تو کیا میری تنظیم مشکل میں پڑ جائے گی؟" یہاں تک کہ اگر جواب واضح نہیں ہے تو پہلے اسے صاف کریں۔ بعد میں لیک کا پیچھا کرنے سے دوبارہ ترتیب دینا ہمیشہ سستا ہوتا ہے۔

عام غلطیاں

  • مرتب / جانچ کے بغیر آؤٹ پٹ کا استعمال کرنا۔ "AI نے لکھا" کوئی جواز نہیں ہے۔ کوڈ کے ہر ٹکڑے کو چلا کر تصدیق کی جاتی ہے۔
  • سیاق و سباق کے بغیر درخواستیں کرنا۔ اگر زبان، ورژن، ان پٹ آؤٹ پٹ اور رکاوٹیں نہیں دی جاتی ہیں، تو کوڈ عام اور اکثر غیر محفوظ ہو جاتا ہے۔
  • بغیر سوچے سمجھے خفیہ معلومات کا اشتراک کرنا۔ API کلید، پاس ورڈ اور کسٹمر ڈیٹا کو صاف کیے بغیر جاری نہیں کیا جانا چاہیے۔
  • درستگی کے ساتھ درست زبان کو الجھانا۔ AI جتنا زیادہ اعتماد کے ساتھ بولتا ہے، آپ کو اتنا ہی محتاط رہنا چاہیے۔ پراعتماد لہجہ ثبوت نہیں ہے۔
  • فیصلہ AI کو سونپنا۔ پروڈکشن، سیکورٹی اور فن تعمیر میں ڈالنے کا فیصلہ انجینئر کے پاس رہتا ہے۔ AI صرف مواد تیار کرتا ہے۔

خلاصہ میں

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

درخواست کا کام

اپنے کام سے یا کسی خیالی پروجیکٹ سے ایک چھوٹا کوڈنگ ٹاسک منتخب کریں (مثال کے طور پر توثیق کا فنکشن)۔ پہلے ایک کمزور پرامپٹ لکھیں اور آؤٹ پٹ حاصل کریں۔ پھر اس یونٹ سے طاقتور فوری پیٹرن کا اطلاق کریں: زبان/ورژن، ان پٹ آؤٹ پٹ معاہدہ، رکاوٹیں، اور ٹیسٹ کی توقع شامل کریں۔ دونوں پرنٹ آؤٹ کو ساتھ ساتھ رکھیں اور فرق لکھیں۔ پھر مضبوط آؤٹ پٹ کو مرتب کریں اور اسے کم از کم تین ایج کیسز (نال، صفر/منفی، غیر متوقع شکل) کے ساتھ ٹیسٹ کریں اور نوٹ کریں کہ آپ کو کس ٹیسٹ میں کیا ملتا ہے۔

چیک لسٹ

  • میں نے پرامپٹ میں زبان، ورژن اور ان پٹ آؤٹ پٹ معاہدہ شامل کیا۔
  • [ ] میں نے لکھا "اسے مت بنائیں، مجھے بتائیں اگر آپ کو یقین نہیں ہے" اور دائرہ کار کی پابندی۔
  • میں نے کوڈ مرتب کیا/چلا، جامد انتباہات کی جانچ کی۔
  • میں نے کم از کم تین ایج کیسز کے ساتھ تجربہ کیا۔
  • میں نے سرکاری دستاویزات سے استعمال شدہ APIs کی تصدیق کی۔
  • میں نے کسی خفیہ کوڈ/ اسناد یا استعمال شدہ انٹرپرائز ٹول کو صاف کر دیا ہے۔
  • [ ] میں نے تصدیق کی کہ پیداوار اور حفاظت میں ڈالنے کا فیصلہ انسان کے پاس ہے۔