Январь 2024 г. — ICE-Score принят в EACL 2024 ???
Наш эксперимент в основном построен на репозиториях codegen-metrics и code-bert-score. Чтобы повторить все эксперименты, следуйте инструкциям по настройке среды.
Чтобы запустить compute_results.ipynb
и модули в папке llm-code-eval
, используйте следующую команду для установки всех зависимостей:
pip install -r requirements.txt
data/
содержит все обработанные данные, использованные в статье.
data/conala/
содержит набор данных CoNaLa со всеми результатами автоматической оценки.data/humaneval/
содержит набор данных HumanEval со всеми результатами автоматической оценки.data/humaneval/humaneval_java_grade.json
: разделение Javadata/humaneval/humaneval_cpp_grade.json
: разделение C++data/humaneval/humaneval_python_grade.json
: разделение Pythondata/humaneval/humaneval_js_grade.json
: разделение JavaScript experiment_source/
содержит сценарии для сбора всех результатов автоматической оценки. Для их запуска на вашем компьютере требуются определенные модификации. Обратите внимание, что для любого из этих сценариев, использующих metrics_evaluation.metrics
, вам необходимо использовать реализации в папке metrics_evaluation
из codegen-metrics.
llm_code_eval
содержит реализацию минимально жизнеспособного продукта (MVP) этого проекта. Вы можете использовать его для оценки любого сгенерированного фрагмента кода. Более подробную информацию можно найти в Use Large Language Models To Downstream Tasks Of Source Code
.
Мы реализуем минимально жизнеспособный продукт (MVP) для этого проекта. Для установки проекта используйте следующую команду:
pip install -e .
Вы можете использовать его для оценки любого сгенерированного фрагмента кода с входными данными problem
, output
, task
, aspect
и model
, как показано в следующем примере:
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 )
Если вы хотите выполнить оценку с помощью ссылочного кода, вы можете использовать опцию reference
в следующем примере:
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 )
Вы также можете использовать опцию cot=True
, чтобы включить нулевую оценку цепочки мыслей в следующем примере:
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}
}
Мы благодарим JetBrains Research и NeuLab за их открытый исходный код и данные.