Improving LLM Code Generation with Grammar Augmentation

2024年03月03日
  • 简介
    我们提出了SynCode框架,这是一种有效且通用的用于大型语言模型(LLMs)中进行代码语法解码的新方法。SynCode利用编程语言的语法,利用离线构建的名为DFA掩码存储的高效查找表,该表基于语言语法终端。我们证明了SynCode在给定编程语言的上下文无关文法(CFG)的情况下的正确性和完整性,展示了它保留语法上有效的标记并拒绝无效标记的能力。该框架可以与任何由CFG定义的语言无缝集成,例如Python和Go的CFG实验。结果表明,当SynCode与最先进的LLMs结合使用时,语法错误减少了96.07%,展示了它对提高代码生成的语法精度的重大影响。我们的代码可在https://github.com/uiuc-focal-lab/syncode上获得。
  • 图表
  • 解决问题
    SynCode论文旨在提出一种新的框架,通过利用编程语言的语法,结合大型语言模型实现高效且通用的代码语法解码。该框架的目的是提高代码生成的语法精度。
  • 关键思路
    SynCode框架的关键思路是利用编程语言的上下文无关文法(CFG)构建离线查找表,称为DFA掩码存储器,以实现有效的语法解码。该框架可以与任何由CFG定义的编程语言无缝集成,并且能够保留语法上有效的令牌,同时拒绝无效的令牌。
  • 其它亮点
    论文通过实验验证了SynCode框架的有效性和通用性,测试了Python和Go的CFG,并与最先进的LLMs相结合,取得了96.07%的语法错误减少。论文还提供了代码和数据集,方便其他研究人员进行进一步研究。
  • 相关研究
    在最近的相关研究中,有一些关于代码生成的研究,例如CodeBERT和GPT-2。此外,还有一些关于语法解析的研究,例如Neural Earley Parser和Neural CFG Parser。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论