Enero de 2024 : ¿ICE-Score ha sido aceptado en EACL 2024?
Nuestro experimento se basa principalmente en los repositorios codegen-metrics y code-bert-score. Para replicar todos los experimentos, siga sus instrucciones para configurar el entorno.
Para ejecutar compute_results.ipynb
y los módulos en la carpeta llm-code-eval
, use el siguiente comando para instalar todas las dependencias:
pip install -r requirements.txt
data/
contiene todos los datos procesados utilizados en el artículo.
data/conala/
contiene el conjunto de datos de CoNaLa con todos los resultados de la evaluación automática.data/humaneval/
contiene el conjunto de datos HumanEval con todos los resultados de la evaluación automática.data/humaneval/humaneval_java_grade.json
: división de Javadata/humaneval/humaneval_cpp_grade.json
: división de C++data/humaneval/humaneval_python_grade.json
: división de Pythondata/humaneval/humaneval_js_grade.json
: división de JavaScript experiment_source/
contiene los scripts para recopilar todos los resultados de la evaluación automática. Requieren modificaciones específicas para ejecutarse en su máquina. Tenga en cuenta que para cualquiera de estos scripts que utilicen metrics_evaluation.metrics
, debe utilizar las implementaciones en la carpeta metrics_evaluation
de codegen-metrics.
llm_code_eval
contiene la implementación de un producto mínimo viable (MVP) de este proyecto. Puede utilizarlo para evaluar cualquier fragmento de código generado. Consulte Use Large Language Models To Downstream Tasks Of Source Code
para obtener más detalles.
Implementamos un producto mínimo viable (MVP) para este proyecto. Para instalar el proyecto, utilice el siguiente comando:
pip install -e .
Puede usarlo para evaluar cualquier fragmento de código generado, con las entradas de problem
, output
, task
, aspect
y model
, como en el siguiente ejemplo:
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 desea evaluar con código de referencia, puede utilizar la opción de reference
en el siguiente ejemplo:
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 )
También puede utilizar la opción cot=True
para habilitar la evaluación de cadena de pensamiento de tiro cero en el siguiente ejemplo:
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}
}
Agradecemos a JetBrains Research y NeuLab por su código y datos de fuente abierta.