2024 年 1 月- ICE スコアが 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
: 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 のオープンソース コードとデータに感謝します。