Repositori ini berisi materi dan skrip untuk pembicaraan berjudul "AI Generatif dalam Keamanan Cybersurity: Menghasilkan Kode Ofensif dari Bahasa Alami" oleh Pietro Liguori, University of Naples Federico II, Grup Makanan penutup. Pembicaraan adalah bagian dari Artisan 2024: Summer School tentang peran dan efek kecerdasan buatan dalam aplikasi yang aman .
Pastikan Anda menginstal Python di sistem Anda. Jika tidak, Anda dapat menggunakan lingkungan virtual dengan Anaconda untuk menghindari bekerja langsung di mesin Anda. Ikuti langkah -langkah di bawah ini:
wget untuk mengunduh penginstal: wget https://repo.anaconda.com/archive/Anaconda3-version-OS.shchmod +x Anaconda3-version-OS.shbash Anaconda3-version-OS.shbashrc Anda: export PATH= " /path_to_anaconda/anaconda3/bin: $PATH "Buat Python 3.9 Lingkungan Virtual :
conda create -n yourenvname python=3.9yourenvname dengan nama lingkungan yang Anda inginkan.Aktifkan lingkungan :
source activate yourenvnameAnda sekarang siap untuk menginstal dependensi dan bekerja di dalam lingkungan virtual Anda.
Dalam folder Violent-Python-functions , kami memiliki file .in dan .out yang berisi deskripsi NL (bahasa alami) dan masing-masing fungsi Python yang sesuai.
Dataset Python yang kejam adalah dataset yang dikuratori secara manual, di mana sampel berisi sepotong kode Python dari perangkat lunak ofensif, dan deskripsi yang sesuai dalam bahasa alami (bahasa Inggris biasa). Kami membangun dataset menggunakan buku populer "Violent Python" oleh TJ O'Connor, yang menyajikan beberapa contoh program ofensif menggunakan bahasa Python.
Kami hanya menyertakan deskripsi tingkat fungsi, total 72 pasang deskripsi NL - fungsi Python.
Instal dependensi :
pip install -r requirements.txt --userEkstraksi subset :
create_subset.py dengan perintah berikut: python create_subset.pyscripts/results yang berisi reference.in dan file reference.out .reference.in berisi 10 deskripsi NL yang diekstraksi secara acak.reference.out berisi 10 fungsi Python yang sesuai dan berfungsi sebagai kebenaran dasar kami untuk evaluasi.Selanjutnya, Anda akan menghasilkan 10 output menggunakan model AI generatif seperti ChatGPT atau Claude Sonnet.
Peringatan
Perhatikan struktur cuplikan kode. Seperti yang Anda lihat, semua kode Python adalah satu baris . Bahkan, instruksi multi-line dipisahkan satu sama lain dengan n .
Menghasilkan output :
reference.in untuk menghasilkan 10 output menggunakan model AI.output.out di folder results .Contoh prompt:
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.
Hitung metrik kesamaan output :
scripts , jalankan skrip python output_similarity_metrics.py untuk menghitung metrik kesamaan output antara prediksi model ( output.out ) dan referensi kebenaran tanah ( reference.out ): python output_similarity_metrics.py hypothesis_filehypothesis_file adalah file results/output.out . Metrik akan dihasilkan dalam file results/output_metrics.txt .
scripts , jalankan skrip boxplot_metrics.py untuk memvisualisasikan variabilitas metrik yang disimpan dalam results/output_metrics.txt : python boxplot_metrics.pyDi bawah ini adalah gambar yang menunjukkan variabilitas metrik kesamaan output dengan boxplot:

results/output2.out .output_similarity_metrics.py untuk menghitung metrik kesamaan output antara prediksi model ( output2.out ) dan referensi kebenaran darat ( reference.out ): python output_similarity_metrics.py results/output2.outcompare_models.py untuk menunjukkan perbandingan dua model kinerja di dua metrik python compare_models.pyDi bawah ini adalah contoh output:

Pada bagian ini, kami akan mengulangi proses pembuatan kode menggunakan model AI, tetapi kali ini menerapkan teknik rekayasa cepat yang dibahas selama pembicaraan. Tujuannya adalah untuk mengamati apakah teknik ini meningkatkan kualitas kode yang dihasilkan.
Menerapkan rekayasa cepat :
reference.in . Contoh prompt dapat ditemukan di folder scripts/prompt_examples .
Menghasilkan output :
output_prompt_pattern.out di folder scripts/results , di mana prompt_pattern adalah pengidentifikasi yang ingin Anda gunakan untuk menentukan pola yang diadopsi (misalnya, output_persona.out , output_few_shot.out ).Hitung metrik kesamaan output :
scripts , jalankan skrip untuk menghitung metrik kesamaan output antara prediksi model ( output_prompt_pattern.out ) dan referensi kebenaran tanah ( reference.out ): python output_similarity_metrics.py hypothesis_file di mana hypothesis_file adalah file yang dihasilkan dengan pola prompt (misalnya, results/output_few_shot.out file).
scripts/results/output_prompt_engineering_metrics.txt file (misalnya, scripts/results/output_few_shot_metrics.txt file).Bandingkan Hasil :
scripts , jalankan skrip plot_metrics_comparison.py untuk membandingkan hasilnya: python plot_metrics_comparison.py file_metricsfile_metrics adalah scripts/results/output_prompt_engineering_metrics.txt file.Di bawah ini adalah gambar yang menunjukkan perbandingan metrik antara output yang dihasilkan tanpa rekayasa prompt dan dengan rekayasa cepat beberapa shot:

Ikuti langkah -langkah ini untuk menerapkan rekayasa cepat dan mengevaluasi dampaknya pada kualitas pembuatan kode.
Di folder saved_outputs , Anda akan menemukan contoh yang dihasilkan dengan chatgpt-4o. Contoh -contoh ini menggambarkan bagaimana output model terlihat dengan berbagai teknik rekayasa cepat yang diterapkan.
Repositori ini dan materi dikembangkan oleh: