
招待程序员的另一项研究!开放的手,耶鲁大学,加州大学和斯坦福大学研究团队已推出了专门用于代码定位的图形索引LLM代理框架。这项研究由ACL 2025。文档标题:locagent:具有代码位置的图形指南的LLM代理文档:https://arxiv.org/abs/2503.09089代码链接:https://github.com/github.com/github.com/gersteinlab/locagent1。我认为所有程序员都拥有了这一经验。当他看到错误报告时,他用审讯信号想到了自己的脸:“这个变化应该在哪里?”传统方法是基于关键字(太粗糙)的巧合或将完整的代码基础直接投入LLM(效率低下),并允许代理商通过盲目目录(太笨拙)。问题的核心是,在自然语言中解释的问题与代码的位置之间经常有几层呼叫关系。例如,用户将喂食“ XSS漏洞”,b真正需要更改的内容可能是一个深层验证器功能。换句话说,代码的定位是指必须在大型代码库中更改的代码位置的确切发现。在软件开发和维护中,代码问题的精确放置是提高开发效率的关键(图1显示了四个常见的代码维修方案)。图1:指定代码库(左)和问题的描述(包括四个示例方案)时,代码的位置必须标识必须更改的相关代码的位置,包括特定文件,类和功能(右)。 Locagent旨在允许LLM代理自动化此过程。对概率语言口号的描述(例如错误报告)通常具有显着的语义差异和真实故障途径的结构距离(如图2所示)。这不仅要求模型对错误存储库有详细的了解用自然语言编写的RT,但还需要大型代码库和复杂的依赖性。还需要推理和跟踪的能力。图2:图中的红色节点在问题描述中明确表示所述的函数,而黄节点表示必须在实践中更改的函数(patch)。任务的难度定义为“提及函数的代码图”的最短路由长度(HOPS编号)到目标补丁功能,并且该任务的难度是示例图中的两个跳跃。 2。Locagent:安装LLM的“代码映射”。团队解决方案研究非常聪明。首先,以图形方式分析整个代码库,包括包含,呼叫,继承和在文件,类和特征之间进行导入。然后,该团队为Agent LLM提供了简洁统一图形的原始接口,该界面承认了无效的探索代码基础。分析非均匀G的代码库时大规模语言模型可以有效地使用地图“移动”代码,实现MultiHop推理并逐渐接近目标代码。图3:图3显示了图3中的位置框架的一般描述。Locagent首先在非均匀的图形表示中分析代码基础,该图包含多种类型的代码实体及其依赖项。据此,该系统建立了一个层次稀缺索引,以支持搜索有效的内容和探索性的搜索。这些索引允许Locent结合图形结构和工具界面,以执行由代理推广的步骤搜索过程,以准确地完成代码定位任务。 2.1代码过程过程代码表示结构的表示:为了统一代码库的结构和语义信息,Locagent基于抽象语法(AST)树对代码库进行分析,并构建非均匀的GRApHS作为结构化指数。 llm。该图形结构的优点是,即使将两个代码片段分为不同的模块,它们也会在呼叫或继承关系时在图中“关闭”。例如,在先前的目录导航方法中,由两个子目录分开的模块被认为是无关紧要的,但是一个称为le A模块B的函数通过疯狂的图中的呼叫边缘连接,接近图形的结构。对于代码定位任务,此“邻域”很重要,因为许多问题不仅限于单个文件夹,而且可以通过呼叫链覆盖多个模块。 2.2要咨询代理工具接口并创建代码图,LocAgent提供了一个统一的工具接口,从而使LLM代理可以轻松咨询结构和图表代码内容。它主要包括三个API:搜索度:此工具基于层次实体率,并使用关键字搜索相关的ENTI在代码库中纽带。如果上部索引中没有巧合,则系统可以自动寻找从确切的巧合到分散搜索的使用以下图层索引以查找最接近的巧合:对于每个evrecredecredecredecredecone,搜索Penny都会返回代码片段的摘要(如图4所示,如图4所示,如有必要的崩溃,预览和完整的代码,可以扩展到三级。图4:为代理代码有效相互作用而设计的各种输出格式的示例。恢复:如果代理确定代码实体可能是目标,则该工具可用于提取有关实体的完整信息。输入实体ID后,恢复能力会生成详细的属性,例如文件路由,启动和完成行号以及完整的代码内容。图形遍历:此工具首次搜索代码图中的类型识别宽度。代理可以指定初始Al实体ID以及参数,例如地址,步骤数(HOP),实体类型和rcross -section的类型。该工具从图的起点开始获得指定数量的步骤,并返回已通过的子图的结构。在配置不同的类型过滤时,代理具有探索的灵活性,例如“在呼叫的整个呼叫中追踪两个步骤”或“显示特定类型的继承水平”。 TraverseGraph是回报率提到的,即在类似于树的结构文本中形成了vergraph(见图5)。图5:图形工具遍历的退出示例。 2.3代理商促进的推理阶段使用了“ CUNA,CUNA”的快速设计策略,并使用LLM代理将代码定位任务分为一系列步骤,并模拟人类纯化的想法以解决渐进目标。可以将整个问题解决过程总结为FOllowing频繁。了解问题和关键字提取:代理首先分析输入问题的描述,打破各个方面的信息,并提取与问题相关的关键字。这些关键字等于指出后续搜索的初始地址。将关键词链接到代码实体。对于提取的每个关键字,代理调用seartentity工具以在代码索引中查找巧合代码实体。 MultiHop推断要生成故障链接:代理商试图连接信号以得出错误表示故障的原因。首先,确定问题激活的初始输入点(例如触发错误的API或函数),然后从这些点开始,然后用代码图反复调查。呼吁在整个关系或呼叫的依赖中搜索相关方向。使用检索性查看特定密钥节点的实现详细信息。如果有必要的是,我们将向您的搜索重新引入新的关键字。使用这些工具几次,代理逐渐发展出从问题的症状到可能的根本原因的逻辑途径。阻止对象代码:在对问题的整体理解之后,代理将找到对象代码的所有实体(可能是某些特征或类),必须根据“故障链接”中暴露的可疑链接进行修改。然后,代理通过相关性对这些候选实体的离职进行分类,提供文件路线和简短的推理说明。对于用户来说,使用所有疯狂非常简洁。只需输入自然语言问题的描述,然后自动获取LLMEL,代理人按照上述完成一系列搜索,旅行和ITCTURA,最后提供了代码定位的结果。 3。实验结果:Zhenxiang警告Locent,绩效和分析产生真实的数据集是印象深刻的VE。现有的参考数据集用于研究(SWE-Bench Lite),而设备最近构建的LOC比较了几种参考方法的代码的效果。 (1)出色的SWE-Bench Lite代码位置是在GitHub问题构建的仓库级别上的代码维修数据集。它也通常用于代码定位评估。它包括300个相应的问题和维修代码,其中大多数是错误报告。基于此参考点,Locatent达到了最佳绳索定位的当前精度。这要比甲基粘存在明显好。传统矢量搜索方法有了重大改进。 BM25在ACC@5文件级别只有61.7%,但是高级代码嵌入模型(例如CodeRankbed)达到84.7%。 Locatent的最大准确度为92.7%,在功能水平定位中的方法明显好于这些方法。整个多步骤推理代理类方法超过基于过程的固定方法。基于固定过程(如没有代理)的方法通常允许您基于字面的巧合找到有限数量的候选者。逐渐引入代理进行探索后,可以考虑更广泛的范围,并且定位效果更好。关于三个粒度:档案,模块和功能,locatent完全超过了基于GPT-4O或Claude-3.5的现有药物。使用Claude-3.5,LocagentReach在SWE-Bench Lite ACC@5中获得94%。这与任何其他定位功能级别的方法一样好。与QWEN2.5-32B型号(调整)相匹配的Locagent的性能大致与Claude-3.5相同的SWE板台,就LITE文件级别的5个主的准确性而言。第一个是92.7%,第二个为94.2%,差距很小。但是,使用小的QWEN2.5-7B模型(良好调整),精确率略有降低(约为88.3%,高于大多数基线),它们的性能可以解决GPT-4O效应。 Inophware LOC银行包含560个真正的GitHub问题,涵盖了四个类别:错误校正,新特征,安全漏洞和性能优化。任务的类型更加平衡,更接近实际工程场景。 4。开源好处:也可以使用小型型号。这项研究最令人兴奋的是,经过调整后,开源模型可以实现大型商业模型的影响。两个版本,1。QWEN2.5-7B提供了调整后的版本:与GPT-4O相当的收益,单个处理成本仅为$ 0.05。 2.qwen2.5-32b精细调整版本:接近Claude-3.5的水平,成本降低了86%。对于需要大规模实施的公司,这只是降低成本和提高效率的神奇工具。具体而言,在QWEN2.5-7B型号中进行了精心调整,四种LOC银行的Locagent的剧本文件5为76.8%,而theaverial file 5ACC 15功能水平为46.9%。 Locaude-3.5的额外组合将平均文件水平准确度提高到81.1%,几乎详尽地超过了四类任务中的其他方法。 5。实际应用:最准确的代码定位不仅可以直接提高问题解决率。 GitHub发射UTOFIX任务,使用LocaNent的路线@10的成功率比参考方法高12%。这意味着技术不仅是一种“定位工具”,而且是一种强大的工具,可以真正提高整个软件维护过程的效率。团队从不同的角度分析了它,以探索您的稳定性,盈利能力,关键组成部分的作用及其在复杂任务中随后应用中的实际价值。 (1)为了更深入地了解Locatent的功能,团队根据任务的难度分析了其性能,因为很难评估EX的鲁棒性内部和多摩托。由于代码图中功能距离(HOPS)的距离(HOPS数),团队测量了“难度”。也就是说,这是问题描述与应真正更改的功能之间的最短路线。直观地,Hop = 0表示问题直接指的是应更改的函数的名称。 Hop = 1意味着功能和跳跃越多是问题中提到的目标函数,将自己定位的困难就越困难。实验结果:最多的啤酒花降低了所有方法中定位的准确性。毕竟,必须推断出更多的直观的STHE相关性。但是,各种方法的鲁棒性很明显。高难度下的代理类方法的性能降解显着低于搜索类方法。特别是,当啤酒花数量增加时,Locagent可以保持相对较高的精度,这使得它更多强壮的。相反,当需要更多的跳跃时,传统的搜索方法几乎失败。即使在咨询中显示了目标功能的名称,在功能级别上的定位也可能会导致咨询(因为它无法处理完整的咨询并分解过程的详细信息)。 (2)在结构化图形索引和工具调用的帮助下比较效果和成本,Locagent只能以6-9个交互作用来完成代码定位任务。高效。设备使用开源模型Además实现与大型商业模型相当的结果,大大降低了推理成本并获得了实际实施和实施的可行性。具体而言,当使用Claude-3.5等商业API模型时,每个问题的平均处理成本约为0.66美元。在使用本地部署的QWEN2.5-32B模型时,成本降至约0.09美元,这导致86%的降低。如果采用了最小的7b模型,则处理成本可能低至0.05美元,从而使您保持比大多数方法更好的性能。就功能和成本关系级别的精确度而言,QWEN-2.5-7B调用是最有利可图的解决方案,比所有商业模型都更有效。 QWEN-2.5-32B是第二个,明显好于Claude-3.5。这是将IT与局限框架结合使用时,它表明开源模型不仅在绩效上具有竞争力,而且在经济实施方面也具有竞争力。 (3)应用效果:高质量定位可显着提高问题解决率。为了评估代码定位对真实软件维护任务的影响,团队进一步分析了局限性效果以自动解决GitHub问题。结果表明,提高定位的精度显着提高了解决问题的成功率,并且最精确的位置离子结果显着提高了自动代码更改的质量和稳定性。这一发现证实了Locent不仅在定位方面效果很好,而且还有效地促进了下游任务的一般性能,并且具有真正的工程价值。 6。Yestechnical Gnified:结构化指数 +智能推断,Locagent的成功揭示了重要的趋势。范式从“暴力计算”变为“明智的决策”。传统方法意味着将整个代码基础直接启动到LLM,以实现蛮力的巧合,或者允许代理商盲目地通过预先建立的规则通过董事会。这些是“计算机密集型”解决方案。通过结构化的中间表示(例如图形指数和M采用高级别的推理任务和决策制定)来构建复杂的问题。在这个“代理搜索”范式的核心是聪明的决策。结构中间表示,例如图形和树,使信息更易于推断,使代理可以根据特定问题动态调整其搜索策略,而不是遵循预先建立的路线。这代表了“几个人为设计的抹布管”向“如何创建AI-AI的决策和独立搜索”的过渡。该范式将结构化和代码索引与LLM代理结合在一起,可以成为未来AI工程应用程序的标准模型。这不再是让LLM进行更多的计算,而是要让LLM做出更明智的决定。程序员的净化体验将继续领导另一个重要的更新。