凯发k8(中国)天生赢家,凯发k8天生赢家·一触即发,凯发天生赢家一触即发首页奶茶官网

  • 凯发k8(中国)天生赢家
  • 大模型首次直接理解代码图_不用Agent修bug登顶SWE-Bench开源榜

    发布时间2025-07-20 10:33:41 来源:小编 阅读次数:

      

    大模型首次直接理解代码图_不用Agent修bug登顶SWE-Bench开源榜

      最后★◆■★■,CGM的技术论文、核心代码■■★★■◆、模型权重与训练数据均已开源■◆◆■,感兴趣的同学可进一步了解详情■★★。

      使用小型编码器(CodeT5+)对每个节点进行编码◆◆★◆■★,压缩为单个“节点token◆■★■■◆”,每个节点内按照至多512个token的文本块切分。

      CGM仅需4步就能快速定位、生成补丁,省去了Agent方案中复杂的编排过程,效率直线up★★★■。

      大模型趋势以来◆■★,AI编程迅速崛起,尤其是在写函数这类小任务上的表现出色,比如在HumanEval等基准测试上,许多模型的准确率已经超过90%。

      核心模块数量从10个进一步精简到了4个■■◆:改写器→检索器→重排器→生成器(CGM模型)。

      CGM采用类似Vision-Language Model(VLM)的跨模态建模方式■■。它将传统LLM的文本理解能力与代码仓库的结构图(Graph)结合,形成一种图-语言多模态模型。模型核心融合了两个模态★■■■■:

      更关键的是,它基于开源模型就能实现◆■★■◆,不局限于特定模型◆■■◆◆■。为企业和开发者提供了一个灵活■■■★★、透明且可控的方案。

      通过一个适配器(一个两层MLP)将编码后的节点表征映射到LLM输入嵌入空间中。相当于将LLM上下文扩展512倍,能更好处理海量的代码仓库上下文。

      最后,为了进一步提升实际应用能力★■■★◆★,CGM构建了一个无Agent轻量化框架Graph-RAG。

      为此研究团队提出:能否只用开源模型、不依赖Agent,解决仓库级任务?CGM由此而来■◆◆■■。

      研究团队在多个主流基准上系统评估了 CGM 的性能◆■★★,涵盖两个主要任务类别★◆■■■■:(1)代码修复和(2)代码补全。

      改写器(Rewriter)★■:改写问题描述◆■,提取关键词与相关文件;检索器(Retriever):通过语义与结构检索,从代码图中抽取连通子图;重排器(Reranker):排序检索结果★◆◆,选择最关键文件用于生成;生成器(Reader):结合子图与提示生成最终修复代码。

      为了训练CGM有效捕捉代码图的语义和结构信息,团队设计了一个“图生代码 (Graph-to-Code)◆■★”任务。从大型代码图中随机采样出子图(限制节点数量以控制输出代码长度)★■◆★■,模型需要根据这些输入的子图(仅包含节点类型和连接关系,不含完整的代码内容)来重建出原始的代码片段。

      此外,研究团队在不同基座模型上(CodeLlama-7B和DeepSeek-Coder-7B)分别部署了CGM,并与近期RAG系统进行比较。结果显示◆◆,CGM具备很好通用性,可以适配多种基座模型,并且表现超越传统RAG方法。

      他们首创将仓库代码图模态融入大模型(Code Graph Model, CGM),让大语言模型能直接理解代码图,更高效修复bug、补全代码。

      总结来看,CGM不依赖复杂Agent系统◆◆★★★◆,首次实现了在大模型中融合代码图模态◆■★◆◆,让AI像人类一样get仓库里文本和代码之间的复杂依赖关系,“真正理解一个项目■◆★◆★”

      图模态■★■:将仓库构建为结构化图,节点包括函数、类、文件、包等7种类型★◆■◆,边表示调用、包含■★、继承等依赖;语言模态■◆★:用户输入的自然语言描述和代码提示,驱动模型生成patch或回答■■■。

      然而真实的软件工程远比写一个函数复杂得多。像Bug修复、功能增强这样的任务,通常需要跨文件、跨模块操作★★■■,并要求模型理解项目中复杂的结构、依赖关系和类的继承体系。

      在复杂代码生成任务中■◆★■◆,CGM在ComplexCodeEval和CrossCodeEval上也显著领先于同尺寸开源模型◆■★,特别是在需要跨文件推理和补全的场景下效果突出★◆★◆。

      行为路径不可控★◆◆■,容易积累推理误差◆★★;依赖GPT-4◆★◆★、Claude等闭源模型,难以私有部署或定制;工程成本高,效率不高★◆■■。

      现在的主流方法通常是使用基于闭源模型的Agent。它们可以模拟人类程序员行为,如观察代码、调用工具、多轮交互等完成任务。

      彻底摆脱对黑盒模型(如GPT-4或Claude 3★■.7等)和复杂Agent工作流程的依赖,实现更加可控★★★、透明■◆◆★■★、安全的SE自动化。

      模型学习基于两项输入生成代码补丁:(i) 一个相关的代码子图;(ii) 一段文本提示,指明根据补丁可能需要修改的实际文件。为了提升模型的鲁棒性,特意在提示中引入了10%的噪声输入■★■★:例如,提示中可能包含一个实际上无需修改的不相关文件,或者遗漏至少一个本应被修改的关键文件。在训练中引入这种受控的噪声有助于模型更好地泛化到实际输入信息不完整或包含干扰的场景。

      然后采用层级化方法,保持重建代码的结构一致性和可读性。按照拓扑排序与行号顺序拼接仓库上下文■◆◆■■■:高级别节点(如REPO■◆★★■◆、PACKAGE)置于输出序列或文件的起始;文件节点通过拓扑排序确定顺序;文件内节点(如CLASS★◆◆★★★、FUNCTION)则按行号顺序拼接。

      来自蚂蚁的开源新模型◆★,在SWE-bench Lite上超越所有开源方案,性能媲美闭源模型。

      而且■★,CGM完全基于开源模型。要知道,开源模型在SWE-bench上的表现通常不够好■★◆★★,此前几乎所有SOTA级方案都是基于闭源模型实现★■◆★★■。而CGM基于Qwen模型◆■,做到了比肩闭源模型的水平■■◆■★★。

      模型输入为代码图和文本形式的prompt,将在LLM中对结构-语义进行双模态对齐★■■■◆■。

      这些结果表明CGM能够处理跨语言◆■◆★◆、跨项目的大规模仓库级Bug修复任务,展现出强大的结构理解与泛化能力★★◆■★。

      大模型首次直接理解代码图_不用Agent修bug,登顶SWE-Bench开源榜

      使用图感知注意力掩码(Graph-aware Attention Mask)。替代LLM中原有的因果注意力,使注意力机制只作用于相邻节点间◆★★■■。类似于GNN的消息传递机制,能够让LLM直接感知和利用代码的结构依赖关系★■。