Eliciting Instruction-tuned Code Language Models' Capabilities to Utilize Auxiliary Function for Code Generation

📄 arXiv: 2409.13928v1 📥 PDF

作者: Seonghyeon Lee, Suyeon Kim, Joonwon Jang, Heejae Chon, Dongha Lee, Hwanjo Yu

分类: cs.SE, cs.AI, cs.CL

发布日期: 2024-09-20

备注: EMNLP 2024 Findings Short


💡 一句话要点

研究指令调优代码语言模型利用辅助函数进行代码生成的能力

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

关键词: 代码生成 指令调优 辅助函数 语言模型 提示工程

📋 核心要点

  1. 现有代码生成模型在利用外部辅助函数方面存在不足,限制了其解决复杂问题的能力。
  2. 论文提出通过在查询中添加辅助函数或提供响应前缀,引导指令调优模型有效利用辅助函数。
  3. 实验表明,该方法能显著提升开源代码生成模型的性能,甚至超越了GPT-4o等专有模型。

📝 摘要(中文)

本文研究了指令调优的代码预训练语言模型在能够访问辅助函数以实现函数功能时的代码生成行为。我们设计了几种方法,通过将辅助函数添加到查询中或提供响应前缀,使模型能够利用辅助函数,并将这种能力与指令遵循能力相结合。实验结果表明,将基础模型的辅助函数利用能力与指令遵循能力相结合是有效的。特别是,采用我们方法的开源语言模型的性能超过了最近强大的专有语言模型,如gpt-4o。

🔬 方法详解

问题定义:现有代码生成模型,特别是指令调优的模型,在面对需要利用外部辅助函数才能完成的任务时,表现往往不佳。它们难以有效地理解和利用提供的辅助函数,导致生成的代码质量不高,甚至无法完成任务。这限制了它们在复杂编程场景中的应用。

核心思路:论文的核心思路是通过特定的提示工程(prompt engineering)方法,显式地引导指令调优的代码语言模型去利用辅助函数。具体来说,就是通过在输入查询中直接包含辅助函数的代码,或者在模型生成代码之前,提供一个包含辅助函数信息的响应前缀,来增强模型对辅助函数的感知和利用能力。

技术框架:该方法主要包含两个阶段:首先,准备包含辅助函数的代码生成任务。然后,通过两种方式将辅助函数的信息融入到模型的输入中:(1) 将辅助函数直接添加到查询中,作为上下文信息;(2) 提供一个包含辅助函数信息的响应前缀,引导模型在生成代码时利用这些信息。模型接收到这些输入后,会生成相应的代码。最后,通过评估生成的代码是否正确解决了问题来衡量模型利用辅助函数的能力。

关键创新:该方法的关键创新在于它探索了如何通过简单的提示工程,有效地激发指令调优代码语言模型利用辅助函数的能力。与以往的研究不同,该方法没有修改模型的结构或训练方式,而是专注于如何更好地利用现有的模型能力。

关键设计:论文设计了两种主要的提示方式:(1) Query Augmentation: 将辅助函数的代码直接添加到用户的查询中,作为模型的上下文信息。例如,用户查询是“实现一个计算两个数之和的函数”,同时提供一个辅助函数“add(a, b)”,模型需要利用这个辅助函数来完成任务。(2) Response Prefix: 在模型生成代码之前,提供一个包含辅助函数信息的响应前缀。例如,前缀可以是“为了实现这个函数,你可以使用以下辅助函数:add(a, b)”。论文没有涉及具体的损失函数或网络结构修改,而是专注于如何设计有效的提示。

🖼️ 关键图片

fig_0

📊 实验亮点

实验结果表明,通过提出的方法,开源代码语言模型在利用辅助函数进行代码生成方面的性能得到了显著提升,甚至超越了GPT-4o等强大的专有模型。具体性能提升数据未知,但结论表明该方法具有很强的实用价值。

🎯 应用场景

该研究成果可应用于智能代码助手、自动化代码生成、软件开发工具等领域。通过提升代码模型利用辅助函数的能力,可以显著提高开发效率,降低开发成本,并促进复杂软件系统的构建。未来,该技术有望应用于更广泛的编程教育和自动化软件工程场景。

📄 摘要(原文)

We study the code generation behavior of instruction-tuned models built on top of code pre-trained language models when they could access an auxiliary function to implement a function. We design several ways to provide auxiliary functions to the models by adding them to the query or providing a response prefix to incorporate the ability to utilize auxiliary functions with the instruction-following capability. Our experimental results show the effectiveness of combining the base models' auxiliary function utilization ability with the instruction following ability. In particular, the performance of adopting our approaches with the open-sourced language models surpasses that of the recent powerful proprietary language models, i.e., gpt-4o.