核心概念
本文提出了一個名為CODEJUDGE的框架,利用大型語言模型來評估程式碼生成,無需測試用例。CODEJUDGE通過引導語言模型進行"慢思考",以達到可靠的程式碼評估。
摘要
本文提出了CODEJUDGE,一個利用大型語言模型(LLM)評估程式碼生成的框架。CODEJUDGE支持兩種評估方式:1)判斷生成的程式碼是否正確,2)估計生成的程式碼與用戶預期的程式碼的一致程度。
為了引導LLM進行可靠的"慢思考"評估,CODEJUDGE設計了兩種方法:
-
分析後總結法:先要求LLM逐步分析程式碼的功能,然後再總結出是否正確的二元判斷。
-
基於錯誤分類的定位法:提供LLM一個常見程式碼錯誤的分類,要求LLM識別生成程式碼中的錯誤類型,並根據錯誤嚴重程度計算程式碼正確性得分。
CODEJUDGE在五種編程語言和四個數據集上進行了實驗,結果顯示CODEJUDGE在大多數情況下顯著優於現有方法。即使使用較小的模型(Llama-3-8B-Instruct),CODEJUDGE也優於使用GPT-3.5的現有方法。此外,即使沒有參考程式碼,CODEJUDGE也能取得合理的評估性能,優於所有依賴參考程式碼的現有方法。
統計資料
使用大型語言模型評估程式碼生成的可靠性是一個未解決的問題。
現有的基於測試用例和基於標記的評估方法存在局限性。
本文提出的CODEJUDGE框架可以在無需測試用例的情況下,利用LLM進行可靠的程式碼評估。
引述
"LLMs often generate partially correct code, which provides a good starting point or hints to developers."
"CODEJUDGE significantly outperformed existing methods in most settings."
"Even when using a relatively small model (Llama-3-8B-Instruct), CODEJUDGE still outperforms ICE-Score, which uses GPT-3.5-Turbo."