Janeiro de 2024 - ICE-Score foi aceito no EACL 2024 ???
Nosso experimento é construído principalmente nos repositórios codegen-metrics e code-bert-score. Para replicar todos os experimentos, siga as instruções para configurar o ambiente.
Para executar compute_results.ipynb
e módulos na pasta llm-code-eval
, use o seguinte comando para instalar todas as dependências:
pip install -r requirements.txt
data/
contém todos os dados processados usados no artigo.
data/conala/
contém o conjunto de dados CoNaLa com todos os resultados da avaliação automática.data/humaneval/
contém o conjunto de dados HumanEval com todos os resultados da avaliação automática.data/humaneval/humaneval_java_grade.json
: divisão Javadata/humaneval/humaneval_cpp_grade.json
: divisão C++data/humaneval/humaneval_python_grade.json
: Divisão Pythondata/humaneval/humaneval_js_grade.json
: divisão JavaScript experiment_source/
contém os scripts para coletar todos os resultados da avaliação automática. Eles exigem modificações específicas para serem executados em sua máquina. Observe que para qualquer um desses scripts que usam metrics_evaluation.metrics
, você precisa usar as implementações na pasta metrics_evaluation
de codegen-metrics.
llm_code_eval
contém a implementação de um produto mínimo viável (MVP) deste projeto. Você pode usá-lo para avaliar qualquer trecho de código gerado. Consulte Use Large Language Models To Downstream Tasks Of Source Code
para obter mais detalhes.
Implementamos um produto mínimo viável (MVP) para este projeto. Para instalar o projeto, use o seguinte comando:
pip install -e .
Você pode usá-lo para avaliar qualquer trecho de código gerado, com as entradas de problem
, output
, task
, aspect
e model
, como no exemplo a seguir:
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 )
Se quiser avaliar com código de referência, você pode usar a opção de reference
no exemplo a seguir:
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 )
Você também pode usar a opção cot=True
para ativar a avaliação da cadeia de pensamento zero-shot no exemplo a seguir:
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 à JetBrains Research e ao NeuLab por seu código-fonte aberto e dados.