让AI管理大型代码库,开发者福音 | 阿里/新加坡国立/西安交大

时间:2024-08-15 14:30:33编辑:奇闻君

CodexGraph团队 投稿量子位 | 公众号 QbitAI

代码生成和补全任务做不完了?!

不如试试让大语言模型(Large Language Models, LLMs)来帮忙。

不过,如果是处理大规模、多文件的代码库,LLMs就可能犯了难。这时候,往往需要需要Retrieval-Augmented Code Generation(RACG)系统来检索相关的代码信息。

现有解决方案,如基于语义相似度的检索和手动设计的工具与API,虽然在特定任务上有效,但在泛化能力和普适性方面存在局限。

为了缓解现有RACG方法的通用性缺陷,来自新加坡国立大学、阿里巴巴、西安交通大学的研究人员提出了CodexGraph一个以代码图数据库为媒介,连接了语言模型和代码库的系统。

研究团队在三个有代表性的学术benchmarks对CodexGraph进行了评测,同时也基于ModelScope-Agent,将CodexGraph实现在了五个真实代码应用场景。

实验和现实实践显示出了CodexGraph的有效性和通用性。

研究方法

CodexGraph通过代码图数据库接?界? ,创新性地将语?模型与代码库连接,以克服现有?法的不?。

该系统的?作流程主要包括以下?个步骤 :

首先,构建代码图数据库

使?静态分析技术,根据预定义的Schema,将代码库中的代码符号(如模块、 类、 函数等)和它们之间的关系映射为图数据库中的节点和边。

其次,代码结构感知查询。

利?graph query language的灵活性,同时结合图数据库的结构特性,实现对代码图的复杂查询和深度检索。

第三, “Write then translate? 策略。

Primary LM agent ?先分析代码问题,?成?然语?查询。

然后,专门的translation LM agent将这些查询翻译为为格式化的graph query language。

第四,迭代式pipeline。

通过迭代的?式,LM agent根据?户问题和已获取的信息,逐步优化查询和检索结果。

实验

实验部分,CodexGraph在CrossCodeEval、 EvoCodeBench和SWE-bench三个具有代表性的代码库级基准测试上进?了评估。

这些测试覆盖了跨?件代码补全、 代码?成和?动化GitHub问题解决等多个 。

实验结果显示,CodexGraph在所有基准测试中均展现出了优异且稳定的性能,验证了代码图数据库作为语?模型和代码库之间的接?界?的有效性。

原论?的分析进?步指出,CodexGraph在处理不同难度的推理任务时,单?查询与多重查询策略的效果存在差异。

在CrossCodeEval中,多重查询策略更有效;?在SWE- bench中,单?查询策略表现更佳。

此外 ,去除Cypher LM agent会显著增加primary LM agent的推理负担,导致性能下降。

这表明Cypher LM agent在减轻primary LM Agent的推理压?中发挥了关键作?。

真实应?场景?例

基于ModelScope-Agent框架 ,CodexGraph的实际应?价值在多个场景中得到了体现,如:

代码聊天助?(Code Chat)代码调试?具(Code Debugger)单元测试?成器(Code Unit tester)代码?成器(Code Generator)代码注释?具(Code Commenter)

这些应?展?了CodexGraph如何在?产环境中帮助开发者解决实际问题 ,提?代码开发的效率和质量。

总结

以图数据库作为媒介,CodexGraph为语?模型与代码库提供了?个新的交互?式。

它不仅提升了语?模型对复杂代码库的理解能?,还增强了整体的代码检索和导航的准确性。

它的出现为?动化软件?程领域,尤其是在?临RACG挑战时,带来了新的解决?案 ,展?了在多样化代码任务和现实世界应?中的?泛潜?和实际价值。

随着技术的不断发展,CodexGraph有望在未来?持更多编程语? ,并进?步优化其?作流程和索引构建效率。

代码链接 :

https://github.com/modelscope/modelscope-agent/tree/master/apps/codexgraph_agent

arXiv链接 :

https://arxiv.org/pdf/2408.03910

上一篇:五大阶段,细数网络综艺十二年

下一篇:从“大众”走向“分众”,音乐综艺哪家强?