To See is Not to Master: Teaching LLMs to Use Private Libraries for Code Generation
作者: Yitong Zhang, Chengze Li, Ruize Chen, Guowei Yang, Xiaoran Jia, Yijie Ren, Jia Li
分类: cs.SE, cs.AI, cs.CL
发布日期: 2026-03-16
备注: 12 pages
🔗 代码/项目: GITHUB
💡 一句话要点
PriCoder:通过数据合成提升LLM在私有库API代码生成中的能力
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 私有库API 数据合成 图演化 图剪枝 自动化编程 模型训练
📋 核心要点
- 现有方法在私有库API代码生成中,仅依赖检索API文档并注入上下文,不足以让LLM有效调用API。
- PriCoder通过自动合成数据来训练LLM,利用渐进式图演化和多维图剪枝提升数据多样性和质量。
- 实验表明,PriCoder在私有库代码生成任务上显著提升了LLM的性能,pass@1指标提升超过20%。
📝 摘要(中文)
大型语言模型(LLM)在代码生成方面展现出强大的潜力,但在面向私有库的代码生成方面仍然存在局限性,该任务的目标是使用私有库中的API生成代码。现有方法主要依赖于检索私有库API文档并在推理时将相关知识注入到上下文中。然而,我们的研究表明,这还不够:即使给定准确的所需知识,LLM仍然难以有效地调用私有库API。为了解决这个限制,我们提出了一种名为PriCoder的方法,该方法通过自动合成的数据来教导LLM调用私有库API。具体来说,PriCoder将私有库数据合成建模为图的构建,并在两个图算子之间交替进行:(1)渐进式图演化,通过从基本样本逐步合成更多样化的训练样本来提高数据多样性,以及(2)多维图剪枝,通过严格的过滤管道来提高数据质量。为了支持严格的评估,我们基于最近发布的、测试模型不熟悉的库构建了两个新的基准。在三个主流LLM上的实验表明,PriCoder显着提高了面向私有库的代码生成能力,在许多设置中pass@1指标上获得了超过20%的提升,同时对通用代码生成能力的影响可以忽略不计。我们的代码和基准可在https://github.com/contact-eniacode/PriCoder公开获取。
🔬 方法详解
问题定义:论文旨在解决大型语言模型(LLM)在面向私有库的代码生成任务中的不足。现有方法主要依赖于检索私有库API文档,并在推理时将相关知识注入到上下文中,但即使提供了准确的API信息,LLM仍然难以有效地调用这些API,导致代码生成质量不高。
核心思路:PriCoder的核心思路是通过自动合成高质量的训练数据,来教导LLM如何正确地使用私有库API。通过构建一个图结构来表示API之间的关系,并使用图演化和图剪枝两种操作来生成多样且高质量的训练样本,从而提升LLM在私有库代码生成任务上的性能。
技术框架:PriCoder的技术框架主要包括以下几个阶段:1) 图构建:将私有库的API及其之间的关系表示为一个图。2) 渐进式图演化:通过逐步添加新的节点和边,从基本样本生成更多样化的训练样本,增加数据的多样性。3) 多维图剪枝:通过一系列过滤规则,去除质量较差的训练样本,保证数据的质量。4) 模型训练:使用合成的数据训练LLM,使其学会如何调用私有库API。
关键创新:PriCoder的关键创新在于其自动合成训练数据的方法,特别是渐进式图演化和多维图剪枝两种操作。与传统方法依赖人工标注或简单的数据增强不同,PriCoder能够自动生成高质量、多样化的训练数据,从而更有效地提升LLM在私有库代码生成任务上的性能。
关键设计:在渐进式图演化中,论文设计了特定的规则来添加新的节点和边,例如基于API的类型和参数之间的关系。在多维图剪枝中,论文设计了一系列过滤规则,例如基于代码的语法正确性、语义一致性以及与API文档的匹配程度等。具体的损失函数和网络结构细节未在摘要中明确提及,属于未知信息。
🖼️ 关键图片
📊 实验亮点
实验结果表明,PriCoder在三个主流LLM上显著提高了私有库代码生成的性能,pass@1指标提升超过20%。同时,PriCoder对通用代码生成能力的影响可以忽略不计,表明该方法在提升特定领域性能的同时,不会损害LLM的通用能力。这些结果验证了PriCoder方法的有效性。
🎯 应用场景
PriCoder技术可应用于各种需要使用私有库或特定领域API的代码生成场景,例如企业内部的软件开发、特定行业的自动化脚本生成等。通过自动合成训练数据,可以降低对人工标注数据的依赖,加速LLM在特定领域的应用,并提高代码生成的效率和质量。该研究对推动LLM在实际软件开发中的应用具有重要意义。
📄 摘要(原文)
Large Language Models (LLMs) have shown strong potential for code generation, yet they remain limited in private-library-oriented code generation, where the goal is to generate code using APIs from private libraries. Existing approaches mainly rely on retrieving private-library API documentation and injecting relevant knowledge into the context at inference time. However, our study shows that this is insufficient: even given accurate required knowledge, LLMs still struggle to invoke private-library APIs effectively. To address this limitation, we propose PriCoder, an approach that teaches LLMs to invoke private-library APIs through automatically synthesized data. Specifically, PriCoder models private-library data synthesis as the construction of a graph, and alternates between two graph operators: (1) Progressive Graph Evolution, which improves data diversity by progressively synthesizing more diverse training samples from basic ones, and (2) Multidimensional Graph Pruning, which improves data quality through a rigorous filtering pipeline. To support rigorous evaluation, we construct two new benchmarks based on recently released libraries that are unfamiliar to the tested models. Experiments on three mainstream LLMs show that PriCoder substantially improves private-library-oriented code generation, yielding gains of over 20% in pass@1 in many settings, while causing negligible impact on general code generation capability. Our code and benchmarks are publicly available at https://github.com/contact-eniacode/PriCoder.