يثير روبوت (ChatGPT) ضجة كبيرة بقدرته على إنتاج الأكواد البرمجية، ومع ذلك، لا يزال أدائه في هذا المجال دون مستوى المبرمجين البشريين، ولكن السؤال المطروح هو: ما مدى جودة هذا الروبوت في اكتشاف أخطائه بنفسه؟
للإجابة عن هذا السؤال أجرى مجموعة من الباحثين في الصين دراسة حديثة لتقييم قدرة ChatGPT على تقييم الأكواد البرمجية التي ينتجها من حيث الصحة والثغرات الأمنية والإصلاحات الناجحة، وكشفت النتائج أن ChatGPT يظهر ثقة مفرطة بصحة الأكواد البرمجية، إذ يقيّمها على أنها أفضل مما هي عليه في الواقع. كما كشفت الدراسة عن أنواع المطالبات والاختبارات التي يمكن أن تحسن قدرات ChatGPT على التحقق الذاتي.
منهجية الدراسة والأداء الأولي لروبوت ChatGPT:
قادت الدراسة (Xing Hu)، الأستاذة المساعدة في جامعة جيجيانغ (Zhejiang)، التي أكدت أهمية ضمان جودة الأكواد البرمجية التي ينتجها ChatGPT مع تزايد استخدامه في تطوير البرمجيات.
واختبرت (Xing Hu) وزملاؤها أولًا قدرة نموذج (GPT-3.5) على إنتاج الأكواد البرمجية باستخدام مجموعات بيانات كبيرة للبرمجة، وأظهرت النتائج قدرة النموذج على إنشاء أكواد برمجية صحيحة (تؤدي الوظيفة المطلوبة) بمعدل نجاح يبلغ متوسطه 57%، وإنشاء أكواد برمجية خالية من الثغرات الأمنية بمعدل نجاح يبلغ 73%، وإصلاح الأكواد البرمجية غير الصحيحة بمعدل نجاح يبلغ 70%. وتظهر هذه النتائج نجاحًا جزئيًا، ولكنها تشير أيضًا إلى وجود أخطاء.
اختبار قدرة ChatGPT على التحقق من دقة الأكواد البرمجية:
أجرى الباحثون مجموعة من الاختبارات على نموذج (GPT-3.5) لتقييم قدرته على التحقق الذاتي من صحة الأكواد البرمجية التي ينتجها باستخدام طريقتين، وهما:
1- المطالبات المباشرة:
يتضمن هذا الأسلوب توجيه أسئلة أو طلبات محددة للنموذج، مثل سؤاله بشكل مباشر هل الأكواد البرمجية تلبي متطلبًا محددًا أم لا؟ وفي هذه الحالة، أخطأ ChatGPT في تقييم صحة الأكواد البرمجية بنسبة بلغت 39%، إذ صرح بأنها صحيحة بينما كانت تحتوي على أخطاء أو لا تلبي المتطلبات المطلوبة، وتشير هذه النسبة إلى أن النموذج يفرط في الثقة بجودة الأكواد البرمجية التي ينتجها.
كما أخطأ في تقييم خلوها من الثغرات الأمنية بنسبة بلغت 25%، وهذا يشكل خطرًا كبيرًا، إذ يمكن أن يؤدي استغلال هذه الثغرات من قِبل المخترقين إلى خسائر فادحة، وعلاوة على ذلك بلغت نسبة الخطأ في تأكيد نجاح إصلاح الأكواد البرمجية 28%، إذ ادعى النموذج أنه نجح في إصلاح الأخطاء والثغرات الأمنية في الأكواد البرمجية، في حين لم يحدث ذلك بشكل كامل.
2- الأسئلة التوجيهية:
تضمن هذا الأسلوب توجيه مجموعة من الأسئلة المحددة حول الكود، ثم الطلب من ChatGPT الموافقة عليها أو رفضها، وتركز هذه الأسئلة في توجيه انتباه ChatGPT إلى جوانب محددة من الكود.
وتختلف هذه الأسئلة عن المطالبات المباشرة في أنها لا تطلب من ChatGPT ببساطة التحقق هل الكود يلبي متطلبًا معينًا أم لا، بل تقدم له تأكيدات محددة حول الكود وتطلب منه الموافقة عليها أو رفضها، فعلى سبيل المثال، بدلًا من سؤال ChatGPT هل هذا الكود صحيح؟، يسأله الباحثون هل توافق على أن هذا الكود لا يتعامل مع الحالة (Y)؟، أو هل توافق على أن هذا الكود يحتوي على ثغرة أمنية من نوع (Z)؟.
وقد أظهرت النتائج أن استخدام هذه الأسئلة التوجيهية، أسفر عن تحسن كبير في قدرة ChatGPT على اكتشاف الأخطاء، مقارنة بالمطالبات المباشرة، إذ ارتفعت نسبة اكتشاف الكود غير الصحيح بمعدل قدره 25% في المتوسط، وشهد تحديد الثغرات الأمنية تحسنًا كبيرًا بنسبة بلغت 69%، كما زادت قدرة ChatGPT على تعرّف محاولات إصلاح الكود التي لم تنجح بنسبة بلغت 33%.
بالإضافة إلى ذلك، كشفت الدراسة عن نتيجة مهمة أخرى تتعلق بمطالبة ChatGPT بإنشاء تقارير اختبار، إذ ساهمت تقارير الاختبار التي أنشأها ChatGPT في اكتشاف عدد أكبر من الثغرات الأمنية في الكود الذي أنشئه، ويشير هذا إلى أن إنشاء تقارير اختبار مفصلة يمكن أن يساعد ChatGPT في التركيز بنحو أفضل في الجوانب الأمنية في الكود، ومن ثم اكتشاف المزيد من نقاط الضعف.
ظاهرة الهلوسة المتناقضة:
أظهرت الدراسة أيضًا أن روبوت (ChatGPT) يعاني بعض حالات الهلوسة المتناقضة ذاتيًا (Self-Contradictory Hallucinations)، وتتجلى هذه الظاهرة عندما يقوم ChatGPT في البداية بإنشاء أكواد برمجية ويصنفها أنها صحيحة أو آمنة، ثم يناقض هذا الاعتقاد لاحقًا أثناء التحقق الذاتي، ويشير هذا التناقض إلى عدم اتساق في عملية التفكير والتحليل لدى النموذج.
نتائج اختبار نموذج (GPT-4):
أجرى الباحثون أيضًا اختبارات باستخدام نموذج (GPT-4)، ووجدوا تحسينات كبيرة في الأداء في إنشاء الأكواد البرمجية وإكمالها وإصلاحها مقارنة بنموذج (GPT-3.5)، ومع ذلك، أكدت البروفيسورة (Xing Hu) أن الاستنتاج العام فيما يتعلق بقدرات التحقق الذاتي لنموذجي GPT-4 و GPT-3.5 يظل متشابهًا.
ويعني ذلك أن مشكلة القدرة على التحقق من دقة الأكواد البرمجية لا تزال قائمة في GPT-4، على الرغم من التحسينات في جوانب أخرى، إذ لا يزال GPT-4 يصنّف بشكل متكرر:
- الأكواد البرمجية غير الصحيحة على أنها صحيحة.
- الأكواد البرمجية المعرضة للخطر على أنها غير معرضة للخطر.
- إصلاحات الكود الفاشلة على أنها ناجحة، خاصة عند استخدام موجه السؤال المباشر.
كما أكدت (Xing Hu) استمرار ظهور حالات من الهلوسة المتناقضة في سلوك GPT-4، مما يشير إلى أن هذه المشكلة لم تُحل بشكل كامل في الإصدار الأحدث.
الخلاصة والتوصيات:
تؤكد نتائج هذه الدراسة أهمية توخي الحذر الشديد عند استخدام ChatGPT في المهام المتعلقة بالبرمجة، وضرورة إجراء تقييم دقيق لمخرجاته.
وشددت البروفيسورة (Xing Hu) على أن الدور الأمثل لروبوت ChatGPT هو أن يكون أداة داعمة للمطورين، وليس بديلًا عنهم، ويجب أن يُنظر إليه كأداة تساعد في تسريع بعض جوانب عملية تطوير البرمجيات، مثل إنشاء نماذج أولية أو اقتراح حلول، لكن القرار النهائي والمسؤولية عن جودة الكود وسلامته تقع على عاتق المطور البشري.