وحدة 1 / 12

مقدمة في الذكاء الاصطناعي ومجال التحقق في هندسة الكمبيوتر

المكاسب:

  • القدرة على التمييز بين أين يوفر الذكاء الاصطناعي السرعة الحقيقية في دورة حياة تطوير البرمجيات وأين يبقى القرار والمسؤولية مع المهندس
  • القدرة على تطبيق نظام هندسي ثلاثي الطبقات يتحقق من كل كود وتصميم يتم إنتاجه من خلال التجميع والاختبار والمراجعة.
  • اعتد على مسح السياق للاستفادة من الذكاء الاصطناعي دون مشاركة كود المصدر السري وبيانات الاعتماد وبيانات العملاء

عندما تنظر إلى يوم مهندس الكمبيوتر، فإن الصورة متشابهة في معظم الفرق: فهم طلب العمل، والتصميم، وكتابة التعليمات البرمجية، وقراءة التعليمات البرمجية لشخص آخر، وتصحيح الأخطاء (عملية اكتشاف سبب عمل البرنامج بشكل غير صحيح وإصلاحه)، وكتابة الاختبارات، وإعداد الوثائق، ومراجعة التعليمات البرمجية، وحضور الاجتماعات. وبعبارة أخرى، فإن الوقت المخصص لـ "الحكم الهندسي" الحقيقي، أي ما إذا كان الحل صحيحًا وآمنًا ومستدامًا، يتم سحقه في ظل العمل المتكرر. وهنا يأتي دور الذكاء الاصطناعي (اختصارًا AI؛ البرنامج الذي يعمل على النص والتعليمات البرمجية باستخدام نموذج لغة كبير). الذكاء الاصطناعي لا يتخذ القرار نيابةً عنك؛ إنه يجهزك لاتخاذ القرار، وينتج هيكلًا عظميًا للكود، ويضيق نطاق الخطأ ويضع مسودة جاهزة أمامك. خلال هذه الوحدة، سنضع الذكاء الاصطناعي ليس باعتباره "مبرمجًا آليًا" ولكن كشريك برمجي ثنائي منضبط يتم تجميع مخرجاته واختبارها ومراجعتها في كل مرة.

في هذه الوحدة الأولى، نوضح ثلاثة أشياء: في أي مراحل دورة حياة تطوير البرمجيات (المراحل التي يمر بها البرنامج من الفكرة إلى الإنتاج: التحليل والتصميم والترميز والاختبار والنشر والصيانة) يضيف الذكاء الاصطناعي قيمة حقيقية؛ ما هي القرارات التي يجب أن تظل للمهندس بشكل صارم؟ وما هو نظام التحقق والسرية الذي يجب عليك الالتزام به عند القيام بذلك. بدون تثبيت هذا السقف بشكل صحيح، يمكن أن تصبح التقنيات المستخدمة في الوحدات اللاحقة خطيرة؛ لأن خطأ في البرنامج يصل إلى ملايين المستخدمين في نفس الوقت ويمكن أن يتحول إلى ثغرة أمنية.

المفاهيم: الهلوسة: تلفيق الذكاء الاصطناعي المقنع لطريقة أو مكتبة أو واجهة برمجة تطبيقات أو سلوك غير موجود في الواقع. السياق: المدخلات التي تقدمها للذكاء الاصطناعي (الكود، رسالة الخطأ، المتطلبات، القيود). التحقق: التحقق من المخرجات بطريقة مستقلة (التجميع والاختبار والتوثيق). هذه المفاهيم الثلاثة هي العمود الفقري للوحدة بأكملها.

في أي الشركات يوجد مسرع الذكاء الاصطناعي، وفي أي الشركات يكون الأمر محفوفًا بالمخاطر؟

تقع وظائف البرمجيات على نطاق ذي شقين من حيث النتائج. في أحد الأطراف توجد أعمال تحضيرية قابلة للعكس ومنخفضة المخاطر؛ وعلى الجانب الآخر، هناك مهام يصعب إرجاعها تدخل إلى بيئة الإنتاج وقد تتسبب في فقدان البيانات أو ثغرات أمنية أو انقطاعات. تختلف قيمة الذكاء الاصطناعي حسب المكان الذي تقف فيه في هذا الطيف.

نوع العمل

مساهمة الذكاء الاصطناعي

دور المهندس

هيكل عظمي للكود/النموذجي

توليد سريع للبنية المتكررة

التحكم في حالة المنطق والحافة

تصحيح الأخطاء

الفرضية وقائمة الأسباب المحتملة

التكاثر وتأكيد السبب الجذري

اختبارات الكتابة

مسودة الاختبار وإنشاء السيناريو

التأكيد الهادف والتحقق من النطاق

إعادة البناء

اقتراح إعادة الهيكلة

الحفاظ على السلوك من خلال الاختبار

التوثيق

المسودة الأولى والهيكل

التحقق من صحة التعليمات البرمجية

القرار المعماري/الأمني

قائمة الخيارات والإيجابيات والسلبيات

القرار النهائي والمسؤولية

القاعدة بسيطة: خطر مخرجات الذكاء الاصطناعي يساوي الضرر الذي سيلحق به إذا ارتكب هذا المخرج خطأً. إن اقتراح اسم متغير بشكل غير صحيح أمر غير ضار؛ المصادقة غير الصحيحة (التحقق من أن المستخدم هو بالفعل من يدعي) تجعل النظام بأكمله عرضة للخطر. لذا فإن السؤال الأول الذي يجب طرحه قبل استخدام المخرجات هو: "ماذا يحدث إذا كان هذا خطأ ومن يلاحظ ذلك ومتى؟"

تحذير: يُنتج الذكاء الاصطناعي تعليمات برمجية سلسة وواثقة. الطلاقة ليست ضمانة للدقة. يمكن لنموذج اللغة أن ينتج بشكل موثوق اسم وظيفة غير موجود بالفعل، أو تسلسل معلمات غير صحيح، أو حتى نمطًا غير آمن. في البرمجيات، لا يبقى هذا على الورق؛ فهو يجمع، ويدير، وينفجر في الإنتاج.

القرارات التي ينبغي أن تترك للمهندس

لا ينبغي أبدا أن تكون بعض القرارات آلية بالكامل؛ يحمل مخاطر فنية وقانونية وأخلاقية:

  • الموافقة على الإنتاج: إطلاق الكود في الإنتاج والمسؤولية عن ذلك.
  • الأمن والهندسة المعمارية: قرارات باهظة الثمن مثل المصادقة والترخيص والتشفير ونموذج البيانات.
  • الترخيص وحقوق النشر: إمكانية استخدام الكود المنتج في المنتج التجاري والامتثال للترخيص.
  • العمل مع البيانات السرية: المعاملات مع بيانات العملاء وأسرار كود المصدر ومعلومات الهوية.
تحذير: حتى لو قال الذكاء الاصطناعي "هذا الرمز آمن وجاهز للإنتاج"، فإن قبول ذلك دون اختبار الأمان ومراجعة الكود والتحقق من صحته تحت التحميل الحقيقي أمر غير مقبول. في الأعمال الحيوية المتعلقة بالسلامة، لا تعد مخرجات الذكاء الاصطناعي بديلاً أبدًا عن موافقة المهندس المختص؛ أي مخرج يؤدي إلى اتخاذ قرار يجب التحقق منه بشكل مستقل والموافقة عليه من قبل المهندس المعتمد قبل التنفيذ.

نظام التحقق: تحكم ثلاثي الطبقات

قم بتطبيق ثلاث طبقات من التحكم لاستخدام مخرجات الذكاء الاصطناعي مثل أحد كبار المراجعين وليس بشكل أعمى. هذا هو المنعكس الأساسي الذي سنكرره خلال الوحدة.

  1. التجميع والتحقق الثابت: هل يتم تجميع/تشغيل الكود بالفعل؟ هل توجد أخطاء في الكتابة، أو متغيرات غير مستخدمة، أو واجهات برمجة تطبيقات غير موجودة؟ ماذا تقول أداة التحليل الثابت (الأداة التي تفحص الكود دون تشغيله)؟
  2. إعادة الإنتاج المستقل (الاختبار): قم بتشغيل الكود بمدخلات صغيرة ومعروفة ومعرفة ما إذا كنت ستحصل على المخرجات المتوقعة. جرب حالات الحافة (خالية، صفر، سلبية، ضخمة).
  3. التحقق من المصدر: يجب التحقق من كل واجهة برمجة التطبيقات وإصدار المكتبة وميزات اللغة التي يستخدمها الذكاء الاصطناعي من الوثائق الرسمية.

مطالبة التحقق (تسهل التحقق من المخرجات): "أدرج جميع المكتبات الخارجية والأساليب وميزات اللغة التي تستخدمها في التعليمات البرمجية الخاصة بك. لكل واحدة، حدد الإصدار المتاح فيها وقم بتسميتها "يجب التحقق منها من الوثائق". لا تقم بإنشاء أي واجهات برمجة تطبيقات لست متأكدًا منها؛ إذا لم تكن متأكدًا، فاكتب بوضوح "غير متأكد". قم أيضًا بإدراج أي حالات حافة لم تعالجها كقائمة منفصلة."

قم بنقد موجه التعليمات البرمجية الخاص بك: "انظر بشكل نقدي إلى الكود الذي كتبته للتو، مثل أحد كبار المهندسين الذي قام بتعيينك. قدم عناصر محددة تحت هذه العناوين الثلاثة: (1) أخطاء الحالة المنطقية/الحافة، (2) المخاطر الأمنية، (3) مشاكل الأداء أو قابلية القراءة. لكل عنصر، اكتب "لماذا هي المشكلة" و"الحل المقترح". إذا لم تكن هناك مشكلة، فقل "لم أتمكن من العثور على مشكلة"، ولا تحاول تجميلها."

موجه ضعيف / موجه قوي

ضعيف: "اكتب لي وظيفة مصادقة مستخدم." (النتيجة: غير واضح أي لغة، أي قاعدة، أي سلوك خطأ؛ كود عام، غالبًا ما يكون غير آمن أو خارج السياق.) قوي: "اكتب وظيفة التحقق من صحة البريد الإلكتروني لـ Python 3.11. الإدخال: سلسلة. الإخراج: صحيح إذا كان صالحًا، خطأ بخلاف ذلك. القواعد: سلسلة فارغة خطأ؛ لا يتطلب الامتثال لـ RFC، التنسيق الأساسي كافٍ. لا تستخدم مكتبة خارجية. اختبار مكون من 5 نماذج أدناه كتلة إلحاق الوظيفة: صالحة، فارغة، بدون '@'، مزدوجة '@'، تحتوي على مسافات فقط."

الفرق في السياق. موجه قوي؛ ويتضمن اللغة والإصدار وعقد الإدخال والإخراج والقيود وتوقعات الاختبار. هذا الانضباط الفردي يقلل بشكل كبير من خطر الهلوسة والرموز غير الآمنة.

حالات صغيرة

الحالة 1 - طريقة مفتعلة. سمع أحد المطورين من الذكاء الاصطناعي أن هناك طريقة تسمى date.addBusinessDays(5) في مكتبة التاريخ وتم شرحها بطريقة واثقة. بالنظر إلى الوثائق، يرى أنه لا يوجد مثل هذه الطريقة، والطريقة الصحيحة هي حلقة يدوية. يتم التقاط الهلوسة قبل دخولها مرحلة الإنتاج من خلال التحقق منها لمدة 10 دقائق.

الحالة 2 - فقدان حالة الحافة. وينتج الذكاء الاصطناعي وظيفة "حساب المتوسط"؛ إنه يعمل عند اختباره مع 1000 صف من البيانات. ومع ذلك، عندما تكون القائمة فارغة، فإنها تعطي خطأ القسمة على صفر. منذ أن أضاف المهندس اختبار الإدخال الفارغ، فإنه يرى الخطأ ويصلحه قبل نشره. يمنع اختبار حالة الحافة الواحدة إنذار الإنتاج عند الساعة 3 صباحًا.

الحالة 3 - مخاطر الخصوصية. أحد الخبراء على وشك لصق ملف يحتوي على سلسلة اتصال قاعدة بيانات فعلية ومفتاح API في أداة عامة. يتذكر سياسة المؤسسة. فهو يستبدل الأسرار بـ <REDACTED>، ويختصر الكود إلى مثال تمثيلي، ويطلب ذلك. وهكذا يحصل على المساعدة خلال 5 دقائق، لكن معلومات هويته لا تظهر.

مبدأ العمل مع الرمز السري ومعلومات الهوية

الجزء الأكثر حساسية في البرنامج؛ أسرار كود المصدر ومعلومات الهوية (مفتاح واجهة برمجة التطبيقات وكلمة المرور والرمز المميز) وبيانات العميل/الشخصية. المبدأ الأساسي: قم بالتنظيف قبل المشاركة، واسأل فقط عن جوهر المشكلة مع مثال تمثيلي إن أمكن.

نمط موجه مجهول: "يوجد خطأ في الوظيفة التالية. لقد استبدلت منطق العمل الفعلي والثوابت المخفية بقيم تمثيلية (مفتاح واجهة برمجة التطبيقات، وأسماء الجداول، وأسماء الحقول العامة). المشكلة: أحصل على الخطأ Y في الإدخال X. ما عليك سوى العثور على الخطأ المنطقي في هذا الرمز التمثيلي وشرح الإصدار المصحح. [الكود التمثيلي]"

نصيحة: إذا كنت في شك، قم بإجراء هذا الاختبار: "هل ستواجه مؤسستي مشكلة إذا كتبت هذا علنًا في أحد المنتديات؟" حتى لو كانت الإجابة غير واضحة، قم بتوضيحها أولاً. تعد إعادة الضبط دائمًا أرخص من مطاردة التسرب لاحقًا.

الأخطاء الشائعة

  • استخدام الإخراج دون تجميع/اختبار. "كتب الذكاء الاصطناعي" ليس مبررا؛ يتم التحقق من كل جزء من التعليمات البرمجية عن طريق تشغيله.
  • تقديم الطلبات دون سياق. إذا لم يتم تحديد اللغة والإصدار والمدخلات والمخرجات والقيود، تصبح التعليمات البرمجية عامة وغير آمنة في كثير من الأحيان.
  • مشاركة المعلومات السرية دون تفكير. لا ينبغي تحرير مفتاح API وكلمة المرور وبيانات العميل دون مسحها.
  • الخلط بين اللغة الدقيقة والدقة. كلما زادت ثقة الذكاء الاصطناعي في التحدث، كلما كان عليك أن تكون أكثر حذرًا؛ النبرة الواثقة ليست دليلاً.
  • تفويض القرار إلى منظمة العفو الدولية. يبقى قرار وضع الإنتاج والأمن والهندسة المعمارية في يد المهندس؛ الذكاء الاصطناعي ينتج المواد فقط.

باختصار

يعمل الذكاء الاصطناعي على تسريع الأجزاء المتكررة والمستهلكة للوقت من عمل البرنامج: التعليمات البرمجية الهيكلية، وصياغة الاختبار، وتضييق نطاق الأخطاء، والتوثيق. لكن القرار والمسؤولية تبقى للمهندس. يجب أن يمر كل مخرج بثلاث طبقات من التحكم (ترجمة/ثابت، اختبار، مصدر). تعد كتابة المطالبات مع السياق ومسح المعلومات المخفية من العادات الأساسية التي سنكررها في كل وحدة من هذه الوحدة. عندما تستخدم الذكاء الاصطناعي بانضباط، فإنك تكتسب السرعة؛ فعندما تستخدمه دون انضباط، فإنك تحمل أخطاء ونقاط ضعف في الإنتاج.

مهمة التطبيق

اختر مهمة ترميز صغيرة من عملك الخاص أو من مشروع وهمي (مثل وظيفة التحقق من الصحة). اكتب أولاً موجهًا ضعيفًا واحصل على الإخراج. ثم قم بتطبيق نمط المطالبة القوي من هذه الوحدة: أضف اللغة/الإصدار، وعقد الإدخال والإخراج، والقيود، وتوقعات الاختبار. ضع المطبوعتين جنبًا إلى جنب واكتب الفرق. ثم قم بتجميع المخرجات القوية واختبارها باستخدام ثلاث حالات حافة على الأقل (تنسيق فارغ، صفر/سلبي، غير متوقع) ولاحظ ما تجده في أي اختبار.

قائمة مرجعية

  • [ ] أضفت اللغة والإصدار وعقد الإدخال والإخراج إلى الموجه.
  • [ ] كتبت "لا تختلق الأمر، أخبرني إذا لم تكن متأكدًا" وقيد النطاق.
  • [ ] لقد قمت بتجميع/تشغيل الكود، والتحقق من وجود تحذيرات ثابتة.
  • [ ] لقد اختبرت مع ثلاث حالات حافة على الأقل.
  • [ ] لقد تحققت من واجهات برمجة التطبيقات المستخدمة من الوثائق الرسمية.
  • [ ] قمت بمسح أي رمز سري/بيانات اعتماد أو استخدمت أداة مؤسسية.
  • [ ] وأكدت أن قرار طرحه في الإنتاج والأمن يبقى في يد الإنسان.