13 天前

CodeT:基于生成测试的代码生成

Bei Chen, Fengji Zhang, Anh Nguyen, Daoguang Zan, Zeqi Lin, Jian-Guang Lou, Weizhu Chen
CodeT:基于生成测试的代码生成
摘要

针对给定编程问题生成代码解决方案的任务,可借助Codex等预训练语言模型实现,这些模型能够生成多个多样化的代码样本。然而,该任务面临的一个主要挑战是如何从模型生成的多个候选解中筛选出最合适的解决方案。评估代码解决方案的质量与正确性的自然方式是将其在一组测试用例上运行,但手动构建这些测试用例通常成本高昂且耗时。本文提出一种新方法——CodeT,该方法利用相同的预训练语言模型自动为生成的代码样本构造测试用例,从而显著降低人工投入,并提升测试场景的覆盖范围。随后,CodeT使用生成的测试用例执行代码样本,并采用双层执行一致性验证机制,综合考量代码输出与生成测试用例的一致性,以及不同代码样本之间输出的一致性。我们在四个基准数据集(HumanEval、MBPP、APPS 和 CodeContests)上,基于五种不同规模与能力的预训练语言模型进行了全面实验。实验结果表明,与以往方法相比,CodeT在代码解决方案选择任务上实现了显著性能提升,在不同模型与基准上均展现出卓越且一致的增益。例如,在HumanEval数据集上,CodeT将pass@1指标提升至65.8%,相较于code-davinci-002模型实现了18.8%的绝对提升,并超越此前最先进方法超过20%的绝对性能增益。