AceCoder:利用现有代码增强代码生成
软件工程
2023-09-08 v3 人工智能
摘要
大语言模型(LLMs)在代码生成中已展现出巨大成功。LLMs 以提示(prompt)为输入并输出代码。一个关键问题是如何制作提示(即提示技术)。现有提示技术为自然语言生成而设计,在代码生成中准确率较低。本文中,我们提出一种名为 AceCoder 的新提示技术。我们的动机在于代码生成面临两个独特挑战(即需求理解与代码实现)。AceCoder 包含两种新颖机制(即引导式代码生成与示例检索)来解决这些挑战。(1)引导式代码生成要求 LLMs 首先分析需求并输出中间预备产物(如测试用例)。该预备产物用于澄清需求并告知 LLMs“写什么”。(2)示例检索在提示中选择相似程序作为示例,其提供大量相关内容(如算法、API)并教导 LLMs“怎么写”。我们将 AceCoder 应用于三个 LLMs(如 Codex)并使用 Pass@k 在三个公开基准上评估。结果表明 AceCoder 能显著提升 LLMs 在代码生成上的性能。(1)在 Pass@1 方面,AceCoder 在 MBPP 上比最先进基线高出至多 56.4%,在 MBJP 中高出 70.7%,在 MBJSP 中高出 88.4%。(2)AceCoder 在不同规模(即 6B 至 13B)与不同语言(即 Python、Java 和 JavaScript)的 LLMs 中均有效。(3)人工评估显示人类开发者更偏好 AceCoder 生成的程序。
引用
@article{arxiv.2303.17780,
title = {AceCoder: Utilizing Existing Code to Enhance Code Generation},
author = {Jia Li and Yunfei Zhao and Yongmin Li and Ge Li and Zhi Jin},
journal= {arXiv preprint arXiv:2303.17780},
year = {2023}
}