وحدة 1 / 12

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

المكاسب:

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

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

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

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

ماذا يفعل مساعد الترميز في الواقع؟

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

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

خريطة نقاط القوة والضعف

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

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

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

نوع المهمة

دور الذكاء الاصطناعي

دور الرجل

إنتاج طبق معياري/هيكل عظمي

تنتج مشروع

تتكيف والمراجعات

وصف الكود

يعطي ملخصا سريعا

يتحقق من الجزء المهم في الكود

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

تشير الحالة

يؤكد التغطية والدقة

المنطق الأمني الحرج

فكرة مفيدة

القرار والمسؤولية تقع بالكامل على عاتق البشر.

استخدام واجهة برمجة التطبيقات/المكتبة

يولد العينة

التحقق من الوجود والإصدار

القرار المعماري

أنواع من الخيارات

يختار ويدافع عن معرفة السياق

خطوة بخطوة: دورة العمل الأساسية

  1. توضيح المهمة. إذا لم تتمكن من كتابة ما تريد في جملة واحدة، فلن يتمكن النموذج أيضًا من ذلك. كلما تسرب عدم اليقين في وقت مبكر إلى المدخلات، كلما زاد نموه في المخرجات.
  2. إعطاء السياق. أضف الكود ذي الصلة ورسالة الخطأ الكاملة وإصدار اللغة/الإطار والقيود إلى الموجه. لا تقل "أصلح هذا"، قل "Python 3.11، FastAPI 0.110؛ هذه الوظيفة تعطي خطأ 500، وتنفجر عندما يكون نص الطلب فارغًا".
  3. فرض الدور والشكل. إطار عمل مثل "أنت أحد كبار مطوري Go؛ ما عليك سوى تقديم الكود والسبب المنطقي المكون من جملتين" يركز على المخرجات.
  4. اطلب الصغيرة. قم بتقسيمها إلى خطوات بدلاً من طلب واحد ضخم؛ التحقق من كل خطوة على حدة. تعتبر التغييرات الرئيسية محفوفة بالمخاطر لأنه من الصعب التحقق منها وعرضة لإخفاء الأخطاء.
  5. يؤكد. قم بتشغيله واختباره وقراءته بصريًا. رمز الذكاء الاصطناعي الذي لم يتم التحقق منه هو "رسم تخطيطي" وليس "حلاً". هذه هي الخطوة غير القابلة للتفاوض في الدورة.

ثلاث حالات صغيرة

الحالة 1 - توفير الوقت حقيقي ولكنه متواضع. عندما قام فريق بهيكلة نقاط نهاية CRUD (إنشاء - قراءة - تحديث - حذف) جديدة باستخدام الذكاء الاصطناعي، انخفض وقت المسودة الأولى من حوالي 40 دقيقة إلى 8 دقائق. ومع ذلك، مع المراجعة والاختبار، كان الوقت الإجمالي 25 دقيقة؛ وبالتالي فإن المكسب الحقيقي هو من 40 إلى 25، أي حوالي 38%. وهذا المعدل، الذي تم قياسه بدلاً من توقع "لقد تسارعنا 10 مرات"، يعد مكسبًا مستدامًا.

الحالة 2 – الهلوسة مكلفة. استخدم أحد المطورين استدعاء Requests.get_json()‎ المقترح بواسطة الذكاء الاصطناعي دون التحقق من الصحة؛ لم يكن هناك مثل هذه الطريقة (على وجه التحديد Response.json()). تم فقدان 20 دقيقة عندما لم يتم تجميع الكود. سؤال بسيط "هل هذه الطريقة موجودة بالفعل؟" التحقق من شأنه أن يعيد ضبط الخسارة.

الحالة 3 - السياق الجيد يضاعف المخرجات. بالنسبة لنفس الخطأ، كتب أحد المطورين ببساطة "أتلقى خطأً" وقام الآخر بإضافة تتبع المكدس الكامل والإصدار وعينة الإدخال. الأخير حصل على الحل الصحيح من المحاولة الأولى؛ الأول قضى ثلاث دورات. الفرق لم يكن في النموذج بل في المدخلات.

أربعة قوالب قابلة للنسخ

موجه بدء تشغيل قوي للأغراض العامة:

الدور: أنت مطور {{language}} ذو خبرة. المهمة: {{what_want}} السياق: - الإطار/الإصدار: {{framework_and_version}} - القيود: {{قواعد الأداء والأسلوب والتبعية}} القواعد: - لا تستخدم مكتبة/وظيفة غير موجودة؛ إذا لم تكن متأكدًا، ضع علامة "تحقق". - أولاً، قم بإعطاء خطة قصيرة، ثم الكود، ثم جملتين من التبرير. - إنتاج كود عمل قابل للاختبار.

لتصفية عدم اليقين مرة أخرى في النموذج:

قبل حل المهمة أدناه، قم بإدراج ما لا يقل عن 3 نقاط تجدها مفقودة أو غير واضحة كأسئلة. لا تكتب الكود قبل أن أرد.المهمة: {{task}}

للتحقق من الإخراج ذاتيًا:

لقد قمت بإنتاج الكود التالي. الآن قم بتغيير دورك ونقد هذا الرمز: - قم بإدراج 3 حالات (حالات الحافة) التي قد لا تعمل. - هل هناك أي واجهات برمجة التطبيقات/الوظائف التي كان من الممكن أن تقوم بإنشائها؟ علامة.- أعط النسخة المصححة.الرمز:{{code}}

لتقسيم القرار إلى خيارات:

اقترح 2-3 طرق حل لمشكلة {{problem}}. لكل منها: وصف قصير، زائد/ناقص، متى تختار. أعط في شكل جدول. لا تختار لي؛ فقط قم بتوضيح الخيار.

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

ضعيف: "أصلح الخلل في هذا الرمز." (أي خطأ؟ أي لغة؟ ما هو السلوك المتوقع؟)
Strong: "Python 3.11 / FastAPI 0.110. تُرجع نقطة النهاية التالية 500 مع KeyError عندما يصبح نص الطلب فارغًا؛ أريدها أن تُرجع 400 ورسالة ذات معنى على نص فارغ. اشرح السبب أولاً، ثم قم بإعطاء الوظيفة المصححة، ثم اكتب اختبارًا لهذا السيناريو. [رمز]"

نسخة قوية؛ فهو يعطي اللغة والإصدار والخطأ الفعلي والسلوك المتوقع وتنسيق الإخراج. لم يعد النموذج بحاجة إلى التنبؤ.

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

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

باختصار

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

مهمة التطبيق

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

قائمة مرجعية

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