2024년 1월 - ICE-Score가 EACL 2024에 승인되었습니다 ???
우리의 실험은 주로 codegen-metrics 및 code-bert-score 저장소를 기반으로 합니다. 모든 실험을 재현하려면 지침에 따라 환경을 설정하세요.
llm-code-eval
폴더에서 compute_results.ipynb
및 모듈을 실행하려면 다음 명령을 사용하여 모든 종속성을 설치하십시오.
pip install -r requirements.txt
data/
논문에 사용된 모든 처리된 데이터를 담고 있습니다.
data/conala/
에는 모든 자동 평가 결과가 포함된 CoNaLa 데이터세트가 포함되어 있습니다.data/humaneval/
에는 모든 자동 평가 결과가 포함된 HumanEval 데이터세트가 포함되어 있습니다.data/humaneval/humaneval_java_grade.json
: Java 분할data/humaneval/humaneval_cpp_grade.json
: C++ 분할data/humaneval/humaneval_python_grade.json
: Python 분할data/humaneval/humaneval_js_grade.json
: JavaScript 분할 experiment_source/
에는 모든 자동 평가 결과를 수집하는 스크립트가 포함되어 있습니다. 컴퓨터에서 실행하려면 특정 수정이 필요합니다. metrics_evaluation.metrics
사용하는 이러한 스크립트의 경우 codegen-metrics의 metrics_evaluation
폴더에 있는 구현을 사용해야 합니다.
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에게 감사드립니다.