CodeUpdateArena: Benchmarking Knowledge Editing on API Updates

📄 arXiv: 2407.06249v3 📥 PDF

作者: Zeyu Leo Liu, Shrey Pandit, Xi Ye, Eunsol Choi, Greg Durrett

分类: cs.CL, cs.SE

发布日期: 2024-07-08 (更新: 2025-04-03)

备注: Under Review


💡 一句话要点

CodeUpdateArena:API更新场景下代码大模型知识编辑的基准测试

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码大模型 知识编辑 API更新 程序合成 基准测试

📋 核心要点

  1. 现有代码大模型知识静态,无法应对API函数持续更新的挑战,阻碍了其在实际编程场景中的应用。
  2. 提出CodeUpdateArena基准测试,通过合成API更新和程序合成示例,评估模型在无文档情况下的知识更新能力。
  3. 实验表明,现有开源代码大模型和知识编辑技术在应对API更新时表现不佳,有显著的提升空间。

📝 摘要(中文)

大型语言模型(LLM)越来越多地被用于合成和推理源代码。然而,这些模型知识的静态性与库和API函数持续演进的事实不符,因为它们调用的API函数会不断添加或更改功能。虽然已经有大量基准测试评估LLM生成代码的能力,但没有先前的工作研究LLM关于代码API函数的知识如何更新。为了填补这一空白,我们提出了CodeUpdateArena,这是一个用于代码领域知识编辑的基准测试。我们的基准测试中的一个实例包含一个合成的API函数更新,以及一个使用更新功能的程序合成示例;我们的目标是更新LLM,使其能够解决这个程序合成示例,而无需在推理时提供更新的文档。与文本中编码的事实的知识编辑相比,这里的成功更具挑战性:代码LLM必须正确地推理修改后的函数的语义,而不仅仅是重现其语法。我们的数据集首先提示GPT-4生成原子和可执行的函数更新。然后,对于每个更新,我们生成程序合成示例,其代码解决方案容易使用该更新。我们的基准测试涵盖了对来自七个不同Python包的54个函数的各种类型的更新,总共有670个程序合成示例。我们的实验表明,将更新的文档添加到开源代码LLM(即DeepSeek,CodeLlama)并不能使它们能够整合更改以解决问题,并且现有的知识编辑技术也有很大的改进空间。我们希望我们的基准测试能够激发代码LLM中知识更新的新方法。

🔬 方法详解

问题定义:现有代码大语言模型(LLM)的知识是静态的,无法反映软件库和API函数的持续演进。当API函数的功能被添加、修改或删除时,LLM无法及时更新其知识,导致生成的代码无法正确使用最新的API。现有的代码生成基准测试主要关注代码的生成能力,而忽略了知识更新的重要性。因此,需要一个专门的基准测试来评估LLM在API更新场景下的知识编辑能力。

核心思路:CodeUpdateArena的核心思路是创建一个包含合成API函数更新和程序合成示例的数据集,用于评估LLM在无文档情况下的知识更新能力。通过模拟真实的API更新场景,可以更有效地评估LLM在实际编程环境中的适应能力。该基准测试的重点在于考察LLM对API语义的理解和推理能力,而不仅仅是语法的记忆。

技术框架:CodeUpdateArena的构建流程包括以下几个主要阶段:1) 使用GPT-4生成原子和可执行的API函数更新。这些更新涵盖了各种类型的修改,例如添加参数、修改返回值等。2) 对于每个API函数更新,生成程序合成示例,这些示例的代码解决方案倾向于使用该更新后的API。3) 将这些API更新和程序合成示例组成一个数据集,用于评估LLM的知识编辑能力。4) 使用不同的LLM和知识编辑方法在数据集上进行实验,并分析结果。

关键创新:CodeUpdateArena的关键创新在于它首次提出了一个专门用于评估代码LLM在API更新场景下的知识编辑能力的基准测试。与现有的知识编辑基准测试不同,CodeUpdateArena更加关注代码的语义理解和推理能力,而不仅仅是文本的记忆。此外,CodeUpdateArena还提供了一个合成API函数更新的框架,可以用于生成各种类型的API更新,从而更全面地评估LLM的知识编辑能力。

关键设计:在生成API函数更新时,论文使用了GPT-4,并对其进行了特定的prompting,以确保生成的更新是原子和可执行的。在生成程序合成示例时,论文采用了启发式方法,以确保生成的示例倾向于使用更新后的API。此外,论文还对数据集进行了详细的统计分析,以确保其具有代表性和多样性。

🖼️ 关键图片

img_0

📊 实验亮点

实验结果表明,即使将API更新的文档添加到开源代码LLM(如DeepSeek和CodeLlama)中,它们仍然难以整合这些更改来解决问题。现有的知识编辑技术也未能有效解决API更新带来的挑战,表明该领域仍有很大的改进空间。该基准测试为未来研究提供了明确的评估标准。

🎯 应用场景

CodeUpdateArena的研究成果可应用于提升代码大模型在软件开发、代码维护和自动化编程等领域的实用性。通过提高模型对API更新的适应能力,可以减少因API变更导致的代码错误,提高开发效率,并促进自动化代码修复和升级。

📄 摘要(原文)

Large language models (LLMs) are increasingly being used to synthesize and reason about source code. However, the static nature of these models' knowledge does not reflect the fact that libraries and API functions they invoke are continuously evolving, with functionality being added or changing. While numerous benchmarks evaluate how LLMs can generate code, no prior work has studied how an LLMs' knowledge about code API functions can be updated. To fill this gap, we present CodeUpdateArena, a benchmark for knowledge editing in the code domain. An instance in our benchmark consists of a synthetic API function update paired with a program synthesis example that uses the updated functionality; our goal is to update an LLM to be able to solve this program synthesis example without providing documentation of the update at inference time. Compared to knowledge editing for facts encoded in text, success here is more challenging: a code LLM must correctly reason about the semantics of the modified function rather than just reproduce its syntax. Our dataset is constructed by first prompting GPT-4 to generate atomic and executable function updates. Then, for each update, we generate program synthesis examples whose code solutions are prone to use the update. Our benchmark covers updates of various types to 54 functions from seven diverse Python packages, with a total of 670 program synthesis examples. Our experiments show that prepending documentation of the update to open-source code LLMs (i.e., DeepSeek, CodeLlama) does not allow them to incorporate changes for problem solving, and existing knowledge editing techniques also have substantial room for improvement. We hope our benchmark will inspire new methods for knowledge updating in code LLMs.