يحتوي هذا المستودع على المواد والبرامج النصية للحديث بعنوان "AI التوليدي في الأمن السيبراني: توليد رمز هجومي من اللغة الطبيعية" من قبل Pietro Liguori ، جامعة نابولي فيديريكو الثاني ، مجموعة الحلوى. الحديث هو جزء من الحرفيين 2024: المدرسة الصيفية حول دور وآثار الذكاء الاصطناعي في التطبيقات الآمنة .
تأكد من تثبيت Python على نظامك. إذا لم يكن الأمر كذلك ، فيمكنك استخدام بيئة افتراضية مع Anaconda لتجنب العمل مباشرة على جهازك. اتبع الخطوات أدناه:
wget لتنزيل المثبت: wget https://repo.anaconda.com/archive/Anaconda3-version-OS.shchmod +x Anaconda3-version-OS.shbash Anaconda3-version-OS.shbashrc الخاص بك: export PATH= " /path_to_anaconda/anaconda3/bin: $PATH "قم بإنشاء بيئة افتراضية Python 3.9 :
conda create -n yourenvname python=3.9yourenvname باسم البيئة المطلوب.تنشيط البيئة :
source activate yourenvnameأنت الآن مستعد لتثبيت التبعيات والعمل في بيئتك الافتراضية.
في مجلد Violent-Python-functions ، لدينا ملفات .in .out .
مجموعة بيانات Python العنيفة هي مجموعة بيانات منسقة يدويًا ، حيث تحتوي العينة على قطعة من رمز Python من برنامج هجوم ، ووصفها المقابل باللغة الطبيعية (اللغة الإنجليزية العادية). قمنا ببناء مجموعة البيانات باستخدام الكتاب الشهير "Python العنيف" من تأليف TJ O'Connor ، والذي يقدم عدة أمثلة على البرامج الهجومية باستخدام لغة Python.
لقد قمنا بتضمين أوصاف على مستوى الوظيفة فقط ، حيث بلغ مجموعها 72 زوجًا من أوصاف NL - وظائف Python.
تثبيت التبعيات :
pip install -r requirements.txt --userاستخراج المجموعة الفرعية :
create_subset.py مع الأمر التالي: python create_subset.pyscripts/results المحتوية على ملفات reference.in reference.out .reference.in على أوصاف NL المستخرجة عشوائياً.reference.out على وظائف Python 10 المقابلة ويعمل كحقيقتنا الأرضية للتقييم.بعد ذلك ، ستقوم بإنشاء 10 مخرجات باستخدام نماذج الذكاء الاصطناعى التوليدي مثل ChatGpt أو Claude Sonnet.
حذر
انتبه إلى هيكل مقتطفات الكود. كما ترون ، فإن رموز بيثون كلها خط واحد . في الواقع ، يتم فصل التعليمات متعددة الخطوط عن بعضها البعض مع n .
توليد المخرجات :
reference.in .output.out في مجلد results .مثال موجه:
Generate Python 10 functions starting from the following 10 natural language (NL) descriptions:
1. [NL description]
2. [NL description]
...
10. [NL description]
Each function should be generated in a single line, for a total of 10 lines.
Different instructions of the same function should be separated by the special character "n".
Do not use empty lines to separate functions.
حساب مقاييس تشابه الإخراج :
scripts reference.out قم بتشغيل Python Script output_similarity_metrics.py لحساب مقاييس تشابه الإخراج بين تنبؤات النموذج ( output.out . python output_similarity_metrics.py hypothesis_filehypothesis_file هي results/output.out . سيتم إنشاء المقاييس في ملف results/output_metrics.txt .
scripts ، قم بتنفيذ البرنامج النصي boxplot_metrics.py لتصور تقلب المقاييس المحفوظة في results/output_metrics.txt : python boxplot_metrics.pyفيما يلي صورة توضح تباين مقاييس تشابه الإخراج مع boxplot:

results/output2.out .output_similarity_metrics.py لحساب مقاييس تشابه الإخراج بين تنبؤات النموذج ( output2.out ) ومرجع الحقيقة الأرضية ( reference.out ): python output_similarity_metrics.py results/output2.outcompare_models.py لإظهار المقارنة بين طرازين الأداء عبر مقاينين python compare_models.pyفيما يلي مثال على الإخراج:

في هذا الجزء ، سنكرر عملية توليد الكود باستخدام نماذج الذكاء الاصطناعى ، ولكن هذه المرة تطبيق تقنية هندسية سريعة تمت مناقشتها أثناء الحديث. الهدف من ذلك هو مراقبة ما إذا كانت هذه التقنية تعمل على تحسين جودة الكود الذي تم إنشاؤه.
تطبيق هندسة سريعة :
reference.in . يمكن العثور على أمثلة على المطالبات في مجلد scripts/prompt_examples .
توليد المخرجات :
output_prompt_pattern.out في مجلد scripts/results ، حيث يكون prompt_pattern هو معرف تريد استخدامه لتحديد النمط المعتمد (على سبيل المثال ، output_persona.out ، output_few_shot.out ).حساب مقاييس تشابه الإخراج :
scripts ، قم بتشغيل البرنامج النصي لحساب مقاييس تشابه الإخراج بين تنبؤات النموذج ( output_prompt_pattern.out ) ومرجع الحقيقة الأرضية ( reference.out ): python output_similarity_metrics.py hypothesis_file عندما يكون hypothesis_file هو الملف الذي تم إنشاؤه بنمط موجه (على سبيل المثال ، results/output_few_shot.out ).
scripts/results/output_prompt_engineering_metrics.txt (على سبيل المثال ، scripts/results/output_few_shot_metrics.txt ).قارن النتائج :
scripts ، قم بتنفيذ البرنامج النصي plot_metrics_comparison.py لمقارنة النتائج: python plot_metrics_comparison.py file_metricsfile_metrics هي scripts/results/output_prompt_engineering_metrics.txt .فيما يلي صورة توضح مقارنة المقاييس بين المخرجات التي تم إنشاؤها دون هندسة موجبة ومع هندسة مطالبة قليلة:

اتبع هذه الخطوات لتطبيق هندسة سريعة وتقييم تأثيرها على جودة توليد الكود.
في مجلد saved_outputs ، ستجد أمثلة تم إنشاؤها مع ChatGPT-4O. توضح هذه الأمثلة كيف تبدو مخرجات النموذج مع تطبيق تقنيات هندسة مختلفة.
تم تطوير هذا المستودع والمواد بواسطة: