面向库导向代码生成的组合式 API 推荐
摘要
大型语言模型(LLM)在代码生成方面取得了卓越的性能。然而,在生成面向库的代码时,其性能仍不尽如人意,特别是对于未出现在 LLM 训练数据中的库。先前的工作利用 API 推荐技术来帮助 LLM 使用库:它检索与用户需求相关的 API,然后利用它们作为上下文来提示 LLM。然而,开发需求可能是粗粒度的,需要组合多个细粒度 API。这种粒度不一致使得 API 推荐成为一项具有挑战性的任务。为此,我们提出了 CAPIR(Compositional API Recommendation),它采用“分而治之”的策略为粗粒度需求推荐 API。具体而言,CAPIR 采用基于 LLM 的分解器将粗粒度任务描述分解为几个详细的子任务。然后,CAPIR 应用基于嵌入的检索器来识别与每个子任务相关的 API。此外,CAPIR 利用基于 LLM 的重排序器过滤掉冗余的 API 并提供最终推荐。为了促进对粗粒度需求下 API 推荐方法的评估,我们提出了两个具有挑战性的基准测试:RAPID(Recommend APIs based on Documentation)和 LOCG(Library-Oriented Code Generation)。在这些基准测试上的实验结果表明,与现有基线相比,CAPIR 具有有效性。具体而言,在 RAPID 的 Torchdata-AR 数据集上,与最先进的 API 推荐方法相比,CAPIR 将 recall@5 从 18.7% 提高到 43.2%,将 precision@5 从 15.5% 提高到 37.1%。在 LOCG 的 Torchdata-Code 数据集上,与没有 API 推荐的代码生成相比,CAPIR 将 pass@100 从 16.0% 提高到 28.0%。
引用
@article{arxiv.2402.19431,
title = {Compositional API Recommendation for Library-Oriented Code Generation},
author = {Zexiong Ma and Shengnan An and Bing Xie and Zeqi Lin},
journal= {arXiv preprint arXiv:2402.19431},
year = {2024}
}