Januari 2024 - ICE-Score telah diterima di EACL 2024 ???
Eksperimen kami terutama dibangun di atas repositori codegen-metrics dan code-bert-score. Untuk mereplikasi semua eksperimen, ikuti petunjuknya untuk menyiapkan lingkungan.
Untuk menjalankan compute_results.ipynb
dan modul di folder llm-code-eval
, gunakan perintah berikut untuk menginstal semua dependensi:
pip install -r requirements.txt
data/
berisi semua data olahan yang digunakan dalam makalah.
data/conala/
berisi kumpulan data CoNaLa dengan semua hasil evaluasi otomatis.data/humaneval/
berisi kumpulan data HumanEval dengan semua hasil evaluasi otomatis.data/humaneval/humaneval_java_grade.json
: Java terpecahdata/humaneval/humaneval_cpp_grade.json
: pemisahan C++data/humaneval/humaneval_python_grade.json
: Pemisahan Pythondata/humaneval/humaneval_js_grade.json
: Pemisahan JavaScript experiment_source/
berisi skrip untuk mengumpulkan semua hasil evaluasi otomatis. Mereka memerlukan modifikasi khusus untuk dijalankan di mesin Anda. Perhatikan bahwa untuk skrip mana pun yang menggunakan metrics_evaluation.metrics
, Anda perlu menggunakan implementasi di folder metrics_evaluation
dari codegen-metrics.
llm_code_eval
berisi implementasi produk minimum yang layak (MVP) dari proyek ini. Anda dapat menggunakannya untuk mengevaluasi cuplikan kode apa pun yang dihasilkan. Silakan lihat Use Large Language Models To Downstream Tasks Of Source Code
untuk lebih jelasnya.
Kami menerapkan produk minimum yang layak (MVP) untuk proyek ini. Untuk menginstal proyek, silakan gunakan perintah berikut:
pip install -e .
Anda dapat menggunakannya untuk mengevaluasi cuplikan kode apa pun yang dihasilkan, dengan masukan problem
, output
, task
, aspect
dan model
, seperti contoh berikut:
from llm_code_eval import evaluate
score = evaluate ( problem = "Given a list of integers, return the sum of all the integers." ,
output = "sum = 0 n for i in range(len(list)): n t sum += list[i] n return sum" ,
task = "code-gen" , aspect = "usefulness" , model = "gpt-3.5-turbo" )
print ( score )
Jika Anda ingin mengevaluasi dengan kode referensi, Anda dapat menggunakan opsi reference
pada contoh berikut:
from llm_code_eval import evaluate
score = evaluate ( problem = "Given a list of integers, return the sum of all the integers." ,
output = "sum = 0 n for i in range(len(list)): n t sum += list[i] n return sum" ,
reference = "sum = 0 n for i in range(len(list)): n t sum += list[i] n return sum" ,
task = "code-gen" , aspect = "usefulness" , model = "gpt-3.5-turbo" )
print ( score )
Anda juga dapat menggunakan opsi cot=True
untuk mengaktifkan evaluasi rangkaian pemikiran zero-shot dalam contoh berikut:
from llm_code_eval import evaluate
score , eval_step = evaluate ( problem = "Given a list of integers, return the sum of all the integers." ,
output = "sum = 0 n for i in range(len(list)): n t sum += list[i] n return sum" ,
task = "code-gen" , aspect = "usefulness" , model = "gpt-3.5-turbo" , cot = True )
print ( score )
print ( eval_step )
@inproceedings{zhuo2024ice,
title={ICE-Score: Instructing Large Language Models to Evaluate Code},
author={Zhuo, Terry Yue},
booktitle={Findings of the Association for Computational Linguistics: EACL 2024},
pages={2232--2242},
year={2024}
}
Kami berterima kasih kepada JetBrains Research dan NeuLab atas kode dan data sumber terbukanya.