Januar 2024 – ICE-Score wurde in die EACL 2024 aufgenommen ???
Unser Experiment basiert hauptsächlich auf den Codegen-Metriken- und Code-Bert-Score-Repositorys. Um alle Experimente zu reproduzieren, befolgen Sie bitte deren Anweisungen zum Einrichten der Umgebung.
Um compute_results.ipynb
und Module im Ordner llm-code-eval
auszuführen, verwenden Sie den folgenden Befehl, um alle Abhängigkeiten zu installieren:
pip install -r requirements.txt
data/
enthält alle verarbeiteten Daten, die in der Arbeit verwendet werden.
data/conala/
enthält den CoNaLa-Datensatz mit allen automatischen Auswertungsergebnissen.data/humaneval/
enthält den HumanEval-Datensatz mit allen automatischen Auswertungsergebnissen.data/humaneval/humaneval_java_grade.json
: Java-Splitdata/humaneval/humaneval_cpp_grade.json
: C++-Splitdata/humaneval/humaneval_python_grade.json
: Python-Splitdata/humaneval/humaneval_js_grade.json
: JavaScript-Split experiment_source/
enthält die Skripte zum Sammeln aller automatischen Auswertungsergebnisse. Sie erfordern bestimmte Änderungen, damit sie auf Ihrem Computer ausgeführt werden können. Beachten Sie, dass Sie für jedes dieser Skripte, metrics_evaluation.metrics
verwenden, die Implementierungen im Ordner metrics_evaluation
von codegen-metrics verwenden müssen.
llm_code_eval
enthält die Implementierung eines Minimum Viable Product (MVP) dieses Projekts. Sie können damit jedes generierte Code-Snippet auswerten. Weitere Einzelheiten finden Sie im Use Large Language Models To Downstream Tasks Of Source Code
.
Für dieses Projekt implementieren wir ein Minimum Viable Product (MVP). Um das Projekt zu installieren, verwenden Sie bitte den folgenden Befehl:
pip install -e .
Sie können damit jedes generierte Code-Snippet mit den Eingaben problem
“, output
, task
, aspect
“ und model
auswerten, wie im folgenden Beispiel:
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 )
Wenn Sie mit Referenzcode auswerten möchten, können Sie im folgenden Beispiel die Option der reference
nutzen:
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 )
Sie können auch die Option cot=True
verwenden, um die Zero-Shot-Gedankenkettenauswertung im folgenden Beispiel zu aktivieren:
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}
}
Wir danken JetBrains Research und NeuLab für ihren Open-Source-Code und ihre Daten.