核心概念
本文提出了一種名為 LPW 的大型語言模型程式設計工作流程,該流程通過在程式碼實作之前生成並驗證解決方案計畫,來提高程式碼生成的準確性,並通過將執行結果與計畫驗證進行比較來改進除錯過程。
論文資訊
Lei, C., Chang, Y., Lipovetzky, N., & Ehinger, K. A. (2024). Planning-Driven Programming: A Large Language Model Programming Workflow. arXiv preprint arXiv:2411.14503.
研究目標
本研究旨在解決大型語言模型 (LLM) 在程式碼生成方面效率低下和推理能力有限的問題,特別是在初始程式碼生成和後續程式碼優化方面。
方法
研究提出了一種名為 LPW 的 LLM 程式設計工作流程,該流程包含兩個階段:解決方案生成階段和程式碼實作階段。在解決方案生成階段,LLM 首先制定一個解決方案計畫,將問題分解成可管理的子問題,然後通過可見測試案例驗證生成的解決方案計畫。在程式碼實作階段,LLM 根據解決方案計畫及其驗證結果生成程式碼草稿。如果生成的程式碼未通過可見測試,則計畫驗證將作為預期的自然語言解決方案,用於指導修正錯誤的過程。此外,研究還提出了一種 LPW 的採樣變體 SLPW,它首先生成多個解決方案計畫和計畫驗證,為每個計畫及其驗證生成一個程式,並根據需要優化每個程式,直到其中一個程式成功通過可見測試。
主要發現
實驗結果表明,與現有方法相比,LPW 和 SLPW 在 HumanEval、MBPP、APPS 和 CodeContest 等多個基準測試中顯著提高了程式碼生成的準確性。
主要結論
LPW 和 SLPW 為基於 LLM 的程式碼生成提供了一種有效的工作流程,通過在程式碼實作之前驗證解決方案計畫的正確性,並利用計畫驗證來指導程式碼優化,從而提高了程式碼生成的效率和準確性。
研究意義
本研究為基於 LLM 的程式碼生成提供了一種新的思路,即借鑒傳統軟體開發模型的思想,將分析和設計步驟放在程式碼實作之前,從而提高程式碼生成的效率和準確性。
局限性和未來研究方向
未來的研究可以探索如何進一步提高 LPW 和 SLPW 在處理更複雜程式設計問題時的性能,例如如何處理涉及多個函數或類的程式設計問題。此外,還可以研究如何將 LPW 和 SLPW 應用於其他程式設計語言和程式設計任務。
统计
與最先進的 LLM 除錯器 LDB 相比,LPW 在所有基準測試中使用 GPT-3.5 作為骨幹網路時,Pass@1 準確率提高了約 4%,在使用 Llama-3 作為骨幹網路時,MBPP 的 Pass@1 準確率最高提高了 16.4%。
使用 GPT-3.5 時,SLPW 在所有基準測試中均比 LPW 提高了約 1%,並在 HumanEval、HumanEval-ET、MBPP 和 MBPP-ET 上分別達到了 89.6%、77.4%、77.2% 和 58.2% 的最佳準確率。
在使用 Phi-3 作為骨幹網路時,SLPW 在 MBPP 上比 LPW 的準確率最高提高了 5.6%,在 HumanEval 上比基準線提高了 45.1%。
在使用 GPT-4o 骨幹網路時,LPW 和 SLPW 在所有基準測試中均優於 LDB,SLPW 在所有基準測試中均達到了新的最先進的 Pass@1 準確率,特別是在 HumanEval 上達到了 98.2%。
對於 APPS 和 CodeContests,LPW 和 SLPW 的準確率分別超過 62% 和 34%,比使用 GPT-4o 骨幹網路的 LDB 分別高出約 10% 和 5%。