智能检索增强:解决大型代码生成模型中的API幻觉问题

On Mitigating Code LLM Hallucinations with API Documentation

摘要

本文探讨了在软件工程环境中,特别是云服务、网页和移动开发等领域中,大型语言模型(Code LLMs)在生成代码时出现的API幻觉问题。为了量化这一现象,研究者引入了CloudAPIBench基准,该基准不仅评估API幻觉的发生频率,还提供了公共领域中API出现频率的注释,使研究能够在不同频率水平上进行。研究发现,Code LLMs在处理低频API时表现不佳,例如GPT-4o在低频API调用中仅能达到38.58%的有效率。为了改善这一情况,研究提出了文档增强生成(DAG)方法,该方法显著提高了低频API的性能(达到47.94%),但在使用次优检索器时对高频API产生了负面影响(绝对下降39.02%)。为解决这一问题,研究者建议智能触发DAG,通过检查API索引或利用Code LLMs的置信度分数,仅在必要时进行检索。实验表明,这种方法在CloudAPIBench上对GPT-4o的性能提升了8.20%,实现了低频和高频API性能的更好平衡。

原理

文档增强生成(DAG)的工作原理是通过检索相关的API文档来辅助Code LLMs生成正确的API调用。具体来说,当Code LLM生成一个API调用时,该调用被用作查询来检索相似API的文档。检索到的文档经过处理后附加到原始提示中,然后重新触发模型进行推理。这种方法的关键在于检索的准确性和文档内容的有效性。研究者通过实验发现,详细的API规范信息对于减少幻觉尤为重要,而全文档虽然性能最优,但效率极低。此外,DAG在处理高频API时可能会引入不相关的信息,导致性能下降,因此需要智能选择何时触发DAG。

流程

  1. 初始生成:Code LLM根据输入提示生成一个假设的API调用。
  2. 文档检索:生成的API调用被用作查询,从预先构建的API文档索引中检索相关文档。
  3. 文档处理与增强:检索到的文档经过处理,如提取关键信息或总结,然后附加到原始提示中。
  4. 重新生成:使用增强后的提示重新触发Code LLM进行生成,期望得到更准确的API调用。
  5. 评估与迭代:生成的结果通过特定的评估指标(如有效API调用率)进行评估,根据结果调整检索策略和文档处理方法,进行迭代优化。

应用

该研究提出的方法不仅适用于云服务API,还可以扩展到其他领域的API调用生成,如移动应用开发、数据分析等。随着AI在软件开发中的应用越来越广泛,减少API幻觉对于提高代码质量和开发效率具有重要意义。此外,该方法还可以帮助开发者更好地理解和使用不熟悉的API,加速学习和开发过程。未来,这种方法可能会集成到各种开发工具和平台中,成为自动化代码生成的标准组件。