واحد 12 / 12

مرزها: امنیت، حریم خصوصی، مجوز و اخلاق

سود:

  • توانایی تشخیص و تأیید اینکه AI ممکن است APIهای جعلی، کد ناامن و محتوای دارای حق چاپ تولید کند
  • توانایی مدیریت استفاده از هوش مصنوعی در محدوده محرمانه بودن کد منبع، داده های شخصی و خط مشی شرکت
  • درک اینکه مسئولیت نهایی برای رعایت مجوز، امنیت و اخلاقیات بر عهده مهندس است.

امتحان ماژول

1. به عنوان یک مهندس کامپیوتر، هنگام کار با ابزار تولید کد هوش مصنوعی، مسئولیت نهایی کدام یک از موارد زیر همیشه باید بر عهده انسان باشد؟

  • الف) تایید نهایی صحت، امنیت و بررسی و تست کدهای وارد شده به تولید✔
  • ب) ایجاد اولین اسکلت کد برای یک تابع
  • ج) تهیه فهرستی از پیشنهادات برای نام متغیرها
  • د) تهیه پیش نویس متن برای نظرات کد

توضیحات: هوش مصنوعی; این می تواند کارهایی مانند اسکلت کد، پیش نویس تست و مستندسازی را سرعت بخشد. با این حال، این وظیفه مهندس است که کد تولید شده را بررسی، آزمایش و تأیید کند تا از صحت، ایمن بودن و مطابقت با الزامات اطمینان حاصل کند و آن را در مرحله تولید قرار دهد. این را نمی توان بدون تأیید مستقل به هوش مصنوعی واگذار کرد.

2. هوش مصنوعی یک تابع برای شما تولید کرده است و به نظر می رسد که در مسیر خوشی کار می کند. بهترین مرحله قبل از تولید آن چیست؟

  • الف) از آنجایی که به نظر می رسد عملکرد کار می کند، آن را مستقیماً در تولید قرار دهید
  • ب) با نوشتن و اجرای تست‌های واحد کوچک که شامل موارد لبه هستند، رفتار را تأیید کنید
  • ج) فقط به تعداد خطوط تابع نگاه کنید
  • د) توصیفی تر کردن نام تابع

توضیح: ظاهر شدن در محل کار به معنای حق بودن نیست. نوشتن و اجرای تست‌های واحد کوچک که موارد لبه مانند ورودی خالی، صفر، منفی، مقدار بسیار بزرگ و عدم تطابق را پوشش می‌دهد، رفتار واقعی تابع را بدون انتقال آن به محیط زنده تأیید می‌کند.

3. هوش مصنوعی روشی به نام 'array.sortStable()' را پیشنهاد کرد که در زبان شما وجود ندارد و آن را به روشی واضح توضیح داد. اولین اقدام صحیح چیست؟

  • الف) استفاده مستقیم از روش زیرا هوش مصنوعی به نظر مطمئن است
  • ب) روش را خودتان تعریف کنید و از نام آن دقیقا استفاده کنید
  • ج) تأیید وجود روش از اسناد رسمی زبان/کتابخانه ✔
  • د) هشدار کامپایلر را ببندید و ادامه دهید

توضیح: مدل‌های زبانی می‌توانند به طور قابل قبولی نام کتابخانه، بسته یا روشی را بسازند که در واقع وجود ندارد (توهم). هر API پیشنهادی باید به طور کلمه به کلمه در برابر اسناد رسمی و جاری زبان یا کتابخانه تأیید شود. اگر در سند درج نشده باشد، نباید از آن استفاده شود.

4. شما می خواهید کد منبع محرمانه شرکت خود و یک کلید API تعبیه شده را در یک ابزار هوش مصنوعی عمومی قرار دهید و درخواست کمک کنید. صحیح ترین رویکرد کدام است؟

  • الف) کد را همانطور که با کلید API برای سرعت جایگذاری کنید
  • ب) فقط کافی است نام شرکت را حذف کنید و بقیه موارد را به اشتراک بگذارید
  • ج) به اشتراک گذاری کد و سپس درخواست از هوش مصنوعی برای حذف آن
  • د) حذف اسرار و منطق پنهان و تقلیل مشکل به نمونه معرف یا استفاده از ابزار نهادی ✔

توضیحات: کد منبع مخفی و اعتبار (کلید API، رمز عبور، رشته اتصال)؛ از نظر راز و امنیت شرکت خطرناک است. لازم است اسرار و منطق تجاری پنهان را از بین ببرید و مشکل را به یک مثال ناشناس/نماینده کاهش دهید یا از ابزار اشتراک گذاری سازمانی/غیر داده استفاده کنید.

5. هوش مصنوعی گفت که پیچیدگی تابع جستجویی که او نوشت O(n) بود. اما دو حلقه تو در تو در کد وجود دارد. رفتار مهندسی صحیح چیست؟

  • الف) کد را به صورت دستی آنالیز کنید و پیچیدگی را خودتان استخراج کنید و در صورت لزوم اندازه گیری کنید ✔
  • ب) O(n) را بپذیرید و ادامه دهید زیرا AI گفت
  • ج) فرض اینکه تعداد چرخه ها ربطی به عملکرد ندارد
  • د) فقط نام تابع را تغییر دهید

توضیح: پیچیدگی زمانی (Big-O) نشان می دهد که چگونه تعداد عملیات با افزایش ورودی افزایش می یابد. دو حلقه تو در تو معمولاً به معنای O(n^2) هستند. ادعای پیچیدگی هوش مصنوعی باید با تجزیه و تحلیل دستی کد و اندازه‌گیری با افزایش ورودی‌ها در صورت لزوم تأیید شود. تکیه بر ادعا، یک فرض نادرست از عملکرد تولید می کند.

6. کد تولید شده توسط هوش مصنوعی که مستقیماً ورودی کاربر را با الحاق متن به یک پرس و جوی SQL وارد می کند. مشکل اصلی و راه حل درست در اینجا چیست؟

  • الف) اشکالی ندارد؛ ادغام متن سریعترین روش است
  • ب) خطر تزریق SQL وجود دارد. یک پرس و جوی پارامتری (عبارت آماده شده) که ورودی را جدا می کند باید استفاده شود ✔
  • ج) فقط تبدیل کوئری به حروف بزرگ کافی است
  • د) کوتاهتر نوشتن پرس و جو مشکل را حل می کند

توضیحات: افزودن ورودی کاربر به طور مستقیم به متن پرس و جو، یک آسیب پذیری تزریق SQL ایجاد می کند. مهاجم می تواند پرس و جو را با ورودی تغییر دهد. راه حل صحیح استفاده از یک پرس و جوی پارامتری (عبارت آماده) است که ورودی را از متن پرس و جو جدا می کند. این یکی از رایج ترین اشتباهات امنیتی است که در کد هوش مصنوعی فراموش نمی شود.

7. هنگام بررسی یک کد تولید شده توسط هوش مصنوعی زمان محدودی دارید. کدام موضوعات برای اولویت بندی بهتر است؟

  • الف) فقط جزئیات مانند تورفتگی و فاصله را قالب بندی کنید
  • ب) فقط طول نام متغیرها
  • ج) درستی منطقی، آسیب پذیری ها و رفتار حاشیه ای ✔
  • د) فقط تعداد کل خطوط فایل

توضیحات: بالاترین ریسک در بررسی کد. اینها مسائلی هستند که باعث آسیب جدی می شوند، مانند خطاهای منطقی، آسیب پذیری های امنیتی و نشت اطلاعات محرمانه. مشکلات قالب و سبک با ابزارهای خودکار رفع می شوند. توجه اصلی انسان باید به دقت، امنیت و رفتار حاشیه‌ای معطوف شود.

8. شما می خواهید که هوش مصنوعی یک باگ را حل کند. کدام ورودی بهتر به هوش مصنوعی کمک می کند تا علت اصلی را پیدا کند؟

  • الف) فقط گفتن "کد کار نمی کند، آن را تعمیر کنید"
  • ب) فقط نام فایل را بنویسید
  • ج) فقط گفتن نتیجه مورد انتظار، بدون متن خطا
  • د) پیام خطای کامل، ردیابی پشته، کد مربوطه و نمونه حداقل بازتولید را ارائه دهید ✔

توضیح: برای اشکال‌زدایی مؤثر، لازم است به هوش مصنوعی پیام خطای کامل، ردیابی پشته، قطعه کد مربوطه و کوچک‌ترین نمونه قابل تکرار که خطا را ایجاد می‌کند، داده شود. عبارت مبهم "کار نمی کند" هوش مصنوعی را مجبور می کند تا حدس بزند و توصیه های کلی ارائه دهد.

9. تمام تست های واحد تولید شده توسط هوش مصنوعی در اولین اجرا قبول می شوند. در این شرایط کدام ریسک را نباید نادیده گرفت؟

  • الف) آزمایش‌ها ممکن است وضعیت فعلی کد را تأیید کنند، اما رفتار واقعی/مورد انتظار را تأیید نکنند
  • ب) کد کاملاً عاری از خطا است زیرا تمام تست ها با موفقیت انجام شده است
  • ج) اگر تعداد تست ها زیاد باشد کیفیت تضمین می شود
  • د) قبولی در آزمون ثابت می کند که پوشش کامل است

توضیح: آزمایش‌ها ممکن است رفتار فعلی (شاید باگ) کد را تأیید کنند، نه رفتار مورد نظر آن را. یا ممکن است حاوی هیچ ادعای معناداری نباشد و همیشه تصویب می شود. برای مشاهده اینکه تست‌ها انتظارات واقعی را بررسی می‌کنند، باید آگاهانه کد را بشکنید و تأیید کنید که تست قرمز می‌شود.

10. هوش مصنوعی یک بلوک کد آماده برای یک مشکل برای شما تولید کرده است. شما مشکوک هستید که ممکن است کد به صورت کلمه به کلمه از یک پروژه منبع باز کپی شده باشد. کدام رویکرد صحیح است؟

  • الف) استفاده از مجوز بدون فکر چون کد کار می کند
  • ب) بررسی منبع/مجوز کد، بازنویسی در صورت لزوم و مطابقت با خط مشی شرکت ✔
  • ج) فقط نام متغیرها را تغییر دهید و مشکل را حل شده در نظر بگیرید
  • د) با فرض اینکه صدور مجوز فقط مربوط به شرکت های بزرگ باشد

توضیحات: هوش مصنوعی می‌تواند کد دارای حق چاپ/مجوز را در داده‌های آموزشی به کلمه بازتولید کند. نقض مجوز در یک محصول تجاری خطرات قانونی جدی ایجاد می کند. لازم است منبع و مجوز کد را بررسی کنید، در صورت نیاز آن را به زبان خودتان بازنویسی کنید و با سیاست صدور مجوز موسسه مطابقت داشته باشید.

11. هوش مصنوعی پیشنهاد کرد که فوراً برای پروژه خود به معماری میکروسرویس تغییر دهید. مناسب ترین رویکرد مهندسی هنگام ارزیابی این پیشنهاد چیست؟

  • الف) فوراً کل سیستم را به میکروسرویس ها تقسیم کنید زیرا هوش مصنوعی پیشنهاد می کند
  • ب) با فرض اینکه میکروسرویس همیشه بهترین انتخاب است
  • ج) پیشنهاد را با توجه به نیاز واقعی، بار، ساختار تیم و تعادل مثبت و منفی ارزیابی کنید ✔
  • د) تصمیم گیری صرفاً بر اساس محبوبیت معماری

توضیح: تصمیمات معماری به زمینه بستگی دارد. خدمات ریز برای نیازهایی مانند مقیاس و جداسازی تیم ارزش می افزایند، اما هزینه هایی مانند پیچیدگی عملیاتی، اشکال زدایی توزیع شده و هزینه را به همراه دارند. پیشنهاد را با توجه به نیاز واقعی، بار، ساختار تیم و تعادل مزایا و معایب ارزیابی کنید. توصیه های عمومی را نباید کورکورانه دنبال کرد.

12. هوش مصنوعی یک اسناد README و API ساده برای کد شما تولید کرد. اما برخی از نقاط پایانی و پارامترها در کد مطابقت ندارند. رفتار صحیح چیست؟

  • الف) انتشار سند آنگونه که هست به دلیل روان بودن متن
  • ب) فقط عنوان را درست کنید و بقیه را همان طور که هست بگذارید
  • ج) افزودن سند به انبار بدون مطالعه
  • د) هر نقطه پایانی و پارامتر را با کد واقعی مقایسه کنید و هر کدام را که مطابقت ندارند برطرف کنید

توضیحات: اسناد باید انعکاسی دقیق از کد واقعی باشد. سند نادرست توسعه دهندگانی را که آن را خوانده اند مجبور به استفاده نادرست از آن می کند. هر نقطه پایانی، پارامتر و مقدار بازگشتی باید در برابر کد واقعی تأیید شود و هرگونه عدم تطابق باید اصلاح شود.

13. هنگام درخواست کد از هوش مصنوعی، کدام رویکرد ورودی برای خروجی با بالاترین کیفیت مناسب است؟

  • الف) ارائه واضح زبان/نسخه، قرارداد ورودی-خروجی، محدودیت‌ها و موقعیت‌های خطا ✔
  • ب) فقط گفتن "برای من کد کاری بنویس"
  • ج) کوتاه ترین درخواست را بدون ذکر زمینه بنویسید
  • د) فقط مشخص کنید که چند خط کد وجود دارد

توضیحات: اعلان قدرتمند. این شامل زبان و نسخه استفاده شده، قرارداد ورودی-خروجی، محدودیت‌های عملکرد و سبک، شرایط خطا، و دستورالعمل «فقط در محدوده درخواستی بمانید». درخواست بدون متن "برای من یک تابع بنویس" عمومی است و اغلب کد نامناسبی تولید می کند.

14. هوش مصنوعی یک پیکربندی برای خط لوله CI/CD (ادغام/ استقرار مداوم) شما ایجاد کرد و رمز عبور پایگاه داده را در متن ساده در آن جاسازی کرد. رفع صحیح کدام است؟

  • الف) گذاشتن رمز عبور به صورت متن ساده چون کار می کند
  • ب) انتقال اسرار از طریق متغیر محیطی یا ابزار مدیریت مخفی، بدون قرار دادن متن ساده در مخزن ✔
  • ج) رمز عبور را فقط به خط نظر منتقل کنید
  • د) با تغییر نام فایل مشکل حل می شود

توضیح: نوشتن اسرار مانند رمزهای عبور و کلیدها به صورت متن ساده در فایل پیکربندی خطر لو رفتن کنترل نسخه و دسترسی غیرمجاز را به همراه دارد. اسرار؛ این باید توسط متغیرهای محیطی یا یک مدیر اسرار ویژه پنهان شود و هرگز نباید به صورت متن ساده وارد مخزن شود.