Showing LLM-Generated Code Selectively Based on Confidence of LLMs
作者: Jia Li, Yuqi Zhu, Yongmin Li, Ge Li, Zhi Jin
分类: cs.SE, cs.CL
发布日期: 2024-10-04
💡 一句话要点
HonestCoder:基于置信度选择性展示LLM生成代码,提升开发者效率并降低安全风险
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成 大型语言模型 置信度估计 多模态相似度 软件开发 代码可靠性 自动化测试
📋 核心要点
- 现有LLM代码生成易出错,开发者阅读和调试耗时,存在安全风险,亟需提升LLM生成代码的可靠性。
- HonestCoder通过评估LLM对生成代码的置信度,选择性地向开发者展示代码,减少错误代码的暴露。
- 在TruthCodeBench基准测试中,HonestCoder在AUROC和AUCPR指标上显著优于现有方法,且时间开销小。
📝 摘要(中文)
大型语言模型(LLM)在代码生成方面表现出令人印象深刻的能力,但它们也可能生成错误的程序。阅读程序所需的时间是编写程序的十倍。向开发者展示这些错误的程序会浪费他们的精力,并给软件带来安全风险。为了解决上述限制,我们提出了一种新颖的基于LLM的代码生成方法HonestCoder。HonestCoder基于LLM的置信度选择性地向开发者展示生成的程序。置信度为生成程序的正确性提供了有价值的见解。为了实现这一目标,我们提出了一种新方法来估计LLM在代码生成中的置信度,通过测量LLM生成的程序之间的多模态相似性来估计置信度。我们收集并发布了一个名为TruthCodeBench的多语言基准,它由2,265个样本组成,涵盖两种流行的编程语言(即Python和Java)。我们将HonestCoder应用于四种流行的LLM(例如DeepSeek-Coder和Code Llama),并在TruthCodeBench上对其进行评估。实验表明,HonestCoder可以有效地估计LLM的置信度,并准确地确定生成程序的正确性。例如,HonestCoder在AUROC方面优于最先进的基线27.79%,在AUCPR方面优于63.74%。HonestCoder可以减少向开发者展示的错误程序的数量。与八个基线相比,它可以向开发者展示更多正确的程序和更少的错误程序。与不加选择地展示代码相比,HonestCoder仅增加了少量的时间开销(每个需求大约0.4秒)。我们讨论了促进LLM在软件开发中应用的未来方向。我们希望这项工作能够激发关于衡量LLM在执行代码相关任务时输出可靠性的广泛讨论。
🔬 方法详解
问题定义:论文旨在解决LLM生成代码时可能存在的错误问题,以及由此带来的开发者效率降低和安全风险。现有方法无法有效区分LLM生成代码的正确性,导致开发者需要花费大量时间阅读和调试错误代码。
核心思路:论文的核心思路是利用LLM自身对生成代码的置信度来判断代码的正确性。高置信度的代码更有可能是正确的,因此应该优先展示给开发者,而低置信度的代码则应该避免展示,从而减少开发者阅读错误代码的时间。
技术框架:HonestCoder的技术框架主要包括以下几个阶段:1) LLM生成多个候选代码片段;2) 计算这些代码片段之间的多模态相似度,包括代码的文本相似度和执行结果相似度;3) 基于多模态相似度估计LLM对生成代码的置信度;4) 根据置信度对代码进行排序,并选择性地展示给开发者。
关键创新:论文的关键创新在于提出了一种新的基于多模态相似度来估计LLM置信度的方法。该方法综合考虑了代码的文本特征和执行结果,能够更准确地反映LLM对生成代码的把握程度。与现有方法相比,HonestCoder不需要额外的训练数据或人工标注,可以直接应用于各种LLM。
关键设计:在多模态相似度计算方面,论文采用了多种技术,例如,使用代码编辑距离计算文本相似度,使用单元测试结果的匹配程度计算执行结果相似度。此外,论文还设计了一种置信度融合策略,将不同模态的相似度信息进行整合,得到最终的置信度评分。
🖼️ 关键图片
📊 实验亮点
实验结果表明,HonestCoder在TruthCodeBench基准测试中取得了显著的性能提升。在AUROC指标上,HonestCoder优于最先进的基线方法27.79%,在AUCPR指标上优于63.74%。此外,HonestCoder在减少错误代码展示数量方面也表现出色,同时仅引入了很小的时间开销(每个需求约0.4秒)。
🎯 应用场景
HonestCoder可应用于各种软件开发场景,例如智能IDE、代码审查工具和自动化测试平台。通过选择性地展示LLM生成的代码,可以显著提高开发者的工作效率,减少错误代码的引入,并降低软件安全风险。该研究有助于推动LLM在软件开发领域的广泛应用。
📄 摘要(原文)
Large Language Models (LLMs) have shown impressive abilities in code generation, but they may generate erroneous programs. Reading a program takes ten times longer than writing it. Showing these erroneous programs to developers will waste developers' energies and introduce security risks to software. To address the above limitations, we propose HonestCoder, a novel LLM-based code generation approach. HonestCoder selectively shows the generated programs to developers based on LLMs' confidence. The confidence provides valuable insights into the correctness of generated programs. To achieve this goal, we propose a novel approach to estimate LLMs' confidence in code generation. It estimates confidence by measuring the multi-modal similarity between LLMs-generated programs. We collect and release a multilingual benchmark named TruthCodeBench, which consists of 2,265 samples and covers two popular programming languages (i.e., Python and Java). We apply HonestCoder to four popular LLMs (e.g., DeepSeek-Coder and Code Llama) and evaluate it on TruthCodeBench. Based on the experiments, we obtain the following insights. (1) HonestCoder can effectively estimate LLMs' confidence and accurately determine the correctness of generated programs. For example, HonestCoder outperforms the state-of-the-art baseline by 27.79% in AUROC and 63.74% in AUCPR. (2) HonestCoder can decrease the number of erroneous programs shown to developers. Compared to eight baselines, it can show more correct programs and fewer erroneous programs to developers. (3) Compared to showing code indiscriminately, HonestCoder only adds slight time overhead (approximately 0.4 seconds per requirement). (4) We discuss future directions to facilitate the application of LLMs in software development. We hope this work can motivate broad discussions about measuring the reliability of LLMs' outputs in performing code-related tasks.