SynCode:基于语法增强的 LLM 生成
机器学习
2024-11-07 v4 形式语言与自动机理论
编程语言
软件工程
摘要
LLM 广泛应用于复杂的 AI 应用中。这些应用凸显了 LLM 输出需要 adhering 到特定格式的需求,以便与系统中的其他组件集成。通常,格式规则(例如,对于 JSON、YAML 等数据序列化格式或编程语言中的代码)表示为上下文无关文法(CFG)。由于 LLM 的幻觉和不可靠性,指示 LLM 遵守指定语法成为一个日益重要的挑战。我们提出了 SynCode,一个用于 LLM 高效且通用语法解码的新颖框架,以应对这一挑战。SynCode 确保了相对于形式语言的 CFG 的可靠性和完备性,有效地保留有效 token 同时过滤掉无效 token。SynCode 使用离线构建的高效查找表,即 DFA 掩码存储,该表源自语言文法的 DFA,以实现高效生成。SynCode 无缝集成到任何由 CFG 定义的语言中,专注于生成 JSON、Python 和 Go 输出的实验证明了这一点。我们评估 SynCode 在 JSON 生成中有效性的实验表明,SynCode 消除了所有语法错误,并显著优于 state-of-the-art 基线。此外,我们的结果强调 SynCode 如何显著减少生成的 Python 和 Go 代码中 96.07% 的语法错误,展示了其在增强 LLM 生成语法精度方面的实质性影响。我们的代码可在 https://github.com/uiuc-focal-lab/syncode 获取。
引用
@article{arxiv.2403.01632,
title = {SynCode: LLM Generation with Grammar Augmentation},
author = {Shubham Ugare and Tarun Suresh and Hangoo Kang and Sasa Misailovic and Gagandeep Singh},
journal= {arXiv preprint arXiv:2403.01632},
year = {2024}
}