← أحدث الأبحاث
💻 computer science

Natural Language based Specification and Verification

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

المؤلفون الأصليون: Zhaorui Li, Chengyu Song

نُشر 2026-05-13
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Zhaorui Li, Chengyu Song

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل أنك تحاول إثبات أن آلة ضخمة ومعقدة (مثل محرك سيارة أو برنامج حاسوبي) لن تتعطل أبداً أو تتسبب في حادث.

المشكلة: الآلة "الأكبر من أن تُقرأ"

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

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

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

الحل: NLForge (نهج "الملاحظة الملخصة")

يقدم البحث أداة جديدة تسمى NLForge. بدلاً من مطالبة الذكاء الاصطناعي بقراءة الآلة بأكملها دفعة واحدة، يستخدم NLForge استراتيجية تسمى التحقق التركيبي (compositional verification).

فكر في الأمر كفريق من المفتشين يفحص ناطحة سحاب ضخمة:

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

السر الكامن: الملاحظات باللغة الطبيعية

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

يطلب NLForge من الذكاء الاصطناعي كتابة هذه "الملاحظات" بلغة إنجليزية بسيطة.

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

ما توصلوا إليه

اختبر الباحثون هذا على مجموعة من تحديات الكود الصعبة (من مسابقة تسمى SV-COMP).

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

الخلاصة

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

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

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →