CodeChain:通过具代表性子模块的自修订链实现模块化代码生成
人工智能
2024-03-15 v3 计算与语言
编程语言
摘要
大语言模型(LLMs)在解决 HumanEval 或 MBPP 基准中较简单的编程任务上已相当熟练。然而,解决更复杂且具竞赛性质的编程任务对这些模型仍具相当挑战——可能源于其倾向于将解生成为整体代码块,而非分解为逻辑子任务与子模块。另一方面,经验丰富程序员本能地编写具抽象性的模块化代码以解决复杂任务,常复用先前开发模块。为弥补此差距,我们提出 CodeChain,一种通过自修订链引发模块化代码生成的新型推理框架,每步由前几轮生成的具代表性子模块引导。具体而言,CodeChain 首先通过思维链提示指示 LLM 生成模块化代码。随后它通过迭代两步实施自修订链:1)提取并聚类所生成子模块,选簇代表作为更通用可复用实现;2)以这些选定模块实现增强原始思维链提示,并指示 LLM 重新生成新模块化解。我们发现,通过自然鼓励 LLM 复用先前开发并验证的子模块,CodeChain 可显著提升生成解的模塊化程度与正确性,在 APPS 上取得 35% 的相对 pass@1 提升,在 CodeContests 上达 76%。其被证明在 OpenAI LLMs 与 WizardCoder 等开源 LLMs 上均有效。我们还就不同提示方法、簇数、模型规模、程序质量等开展全面消融研究,以提供支撑 CodeChain 成功的有用洞见。
引用
@article{arxiv.2310.08992,
title = {CodeChain: Towards Modular Code Generation Through Chain of Self-revisions with Representative Sub-modules},
author = {Hung Le and Hailin Chen and Amrita Saha and Akash Gokul and Doyen Sahoo and Shafiq Joty},
journal= {arXiv preprint arXiv:2310.08992},
year = {2024}
}
备注
Accepted to ICLR 2024