Janvier 2024 - ICE-Score a été accepté à l'EACL 2024 ???
Notre expérience est principalement construite sur les référentiels codegen-metrics et code-bert-score. Pour reproduire toutes les expériences, veuillez suivre leurs instructions pour configurer l'environnement.
Pour exécuter compute_results.ipynb
et les modules dans le dossier llm-code-eval
, utilisez la commande suivante pour installer toutes les dépendances :
pip install -r requirements.txt
data/
contient toutes les données traitées utilisées dans le document.
data/conala/
contient l'ensemble de données CoNaLa avec tous les résultats d'évaluation automatique.data/humaneval/
contient l’ensemble de données HumanEval avec tous les résultats d’évaluation automatique.data/humaneval/humaneval_java_grade.json
: division Javadata/humaneval/humaneval_cpp_grade.json
: scission C++data/humaneval/humaneval_python_grade.json
: scission Pythondata/humaneval/humaneval_js_grade.json
: division JavaScript experiment_source/
contient les scripts permettant de collecter tous les résultats d'évaluation automatique. Ils nécessitent des modifications spécifiques pour fonctionner sur votre machine. Notez que pour chacun de ces scripts utilisant metrics_evaluation.metrics
, vous devez utiliser les implémentations dans le dossier metrics_evaluation
de codegen-metrics.
llm_code_eval
contient l'implémentation d'un produit minimum viable (MVP) de ce projet. Vous pouvez l'utiliser pour évaluer n'importe quel extrait de code généré. Veuillez vous référer à Use Large Language Models To Downstream Tasks Of Source Code
pour plus de détails.
Nous implémentons un produit minimum viable (MVP) pour ce projet. Pour installer le projet, veuillez utiliser la commande suivante :
pip install -e .
Vous pouvez l'utiliser pour évaluer n'importe quel extrait de code généré, avec les entrées de problem
, output
, task
, aspect
et model
, comme dans l'exemple suivant :
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 )
Si vous souhaitez évaluer avec un code de référence, vous pouvez utiliser l'option de reference
dans l'exemple suivant :
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 )
Vous pouvez également utiliser l'option cot=True
pour activer l'évaluation de la chaîne de pensée sans tir dans l'exemple suivant :
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}
}
Nous remercions JetBrains Research et NeuLab pour leur code et leurs données open source.