Selective Prompt Anchoring for Code Generation
作者: Yuan Tian, Tianyi Zhang
分类: cs.LG, cs.AI, cs.CL, cs.SE
发布日期: 2024-08-17 (更新: 2025-07-26)
备注: Accepted by ICML'25
🔗 代码/项目: GITHUB
💡 一句话要点
提出选择性Prompt锚定(SPA)方法,解决代码生成中LLM对用户意图关注不足的问题。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 注意力机制 Prompt工程 软件开发
📋 核心要点
- 现有大型语言模型在代码生成中存在注意力稀释问题,随着生成代码token增多,对用户prompt的关注度降低。
- 论文提出选择性Prompt锚定(SPA)方法,通过引导LLM更多关注用户意图来缓解注意力稀释问题。
- 实验结果表明,SPA在多个基准测试中显著提升了代码生成的Pass@1指标,最高提升达12.9%。
📝 摘要(中文)
大型语言模型(LLM)的最新进展通过从自然语言自动生成代码,改变了软件开发。然而,生成完全正确的、符合用户意图的代码仍然面临挑战。我们的研究表明,随着生成的代码token数量增加,LLM往往会减少对用户prompt的关注。我们假设这种注意力稀释问题是代码生成错误的一个重要原因。为了缓解这个问题,我们提出了选择性Prompt锚定(SPA),以引导代码LLM在生成代码时更多地关注用户意图。我们使用六个基础LLM在六个基准测试上评估了SPA。结果表明,SPA将Pass@1提高了高达12.9%,在所有设置中始终优于SOTA代码生成方法。我们的代码可在https://github.com/magic-YuanTian/Selective-Prompt-Anchoring 获取。
🔬 方法详解
问题定义:论文旨在解决大型语言模型(LLM)在代码生成过程中,随着生成代码长度的增加,对用户prompt的关注度逐渐降低的问题。这种“注意力稀释”现象导致生成的代码难以完全符合用户意图,产生错误。现有方法未能有效解决LLM在长序列生成中对prompt信息利用不足的痛点。
核心思路:论文的核心思路是提出选择性Prompt锚定(SPA)机制,在代码生成过程中,有选择性地“锚定”用户prompt,引导LLM在生成后续代码时更加关注用户意图。通过这种方式,可以缓解注意力稀释问题,提高生成代码的准确性和一致性。
技术框架:SPA方法的核心在于如何选择性地锚定prompt。具体流程可能包含以下步骤:1) 对用户prompt进行编码,得到prompt的向量表示。2) 在代码生成过程中,定期或根据特定策略(例如,每生成N个token)计算当前生成状态与prompt向量表示的相似度。3) 如果相似度低于某个阈值,则对prompt进行“锚定”,即在LLM的输入中显式地加入prompt信息,以增强LLM对prompt的关注。4) 继续进行代码生成,重复步骤2和3,直到生成完成。
关键创新:该方法最重要的创新点在于“选择性”锚定prompt的策略。与简单地重复prompt或始终将prompt作为输入不同,SPA根据LLM对prompt的关注程度动态地调整prompt的使用。这种选择性机制可以避免过度重复prompt带来的冗余和干扰,同时确保LLM在需要时能够及时地关注用户意图。
关键设计:关键设计可能包括:1) 相似度度量方式的选择(例如,余弦相似度、点积等)。2) 相似度阈值的设定,该阈值决定了何时进行prompt锚定。3) 锚定prompt的方式,例如,可以将prompt向量表示直接加入到LLM的输入中,或者使用注意力机制来增强LLM对prompt的关注。4) 锚定频率的控制,例如,可以设置每生成多少个token进行一次相似度计算和锚定判断。
🖼️ 关键图片
📊 实验亮点
实验结果表明,SPA方法在六个基准测试中均优于SOTA代码生成方法,Pass@1指标最高提升达12.9%。这表明SPA能够有效缓解注意力稀释问题,提高代码生成的准确性和用户意图对齐度。该方法在不同LLM上的泛化能力也得到了验证。
🎯 应用场景
该研究成果可应用于各种代码自动生成场景,例如智能IDE、自动化测试、软件维护等。通过提高代码生成的准确性和用户意图对齐度,可以显著提升软件开发的效率和质量。未来,该方法有望扩展到其他长文本生成任务,例如文档撰写、机器翻译等,具有广阔的应用前景。
📄 摘要(原文)
Recent advances in large language models (LLMs) have transformed software development by automatically generating code from natural language. Yet challenges remain in generating fully correct code that aligns with user intent. Our study reveals that LLMs tend to pay less attention to user prompts as more code tokens are generated. We hypothesize that this attention dilution issue is an important reason for code generation errors. To mitigate this issue, we propose Selective Prompt Anchoring (SPA) to guide code LLMs to pay more attention to user intent when generating code. We evaluate SPA using six base LLMs across six benchmarks. Our results demonstrate that SPA enhances Pass@1 by up to 12.9%, consistently outperforming SOTA code generation methods in all settings. Our code is available at https://github.com/magic-YuanTian/Selective-Prompt-Anchoring.