成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

阿里巴巴提出CODEXGRAPH:打破大模型與代碼庫的壁壘,引領(lǐng)軟件工程新革命 精華

發(fā)布于 2024-8-13 01:30
瀏覽
0收藏

在現(xiàn)代軟件工程中,大型語言模型(LLMs)在處理獨立的代碼任務(wù)方面表現(xiàn)出色,例如HumanEval和MBPP,但在處理整個代碼庫時卻遇到了困難。這一挑戰(zhàn)促使研究人員探索在代碼庫規(guī)模上增強(qiáng)LLM與代碼庫的交互。目前的解決方案依賴于基于相似性的檢索或手動工具和API,每種方法都有明顯的缺點。基于相似性的檢索在復(fù)雜任務(wù)中往往回憶率低,而手動工具和API通常是特定任務(wù)的,需要專家知識,降低了它們在多樣化代碼任務(wù)和現(xiàn)實世界應(yīng)用中的通用性。

為了克服這些限制,我們引入了CODEXGRAPH,一個系統(tǒng),將LLM代理與從代碼庫中提取的圖數(shù)據(jù)庫接口集成在一起。通過利用圖數(shù)據(jù)庫的結(jié)構(gòu)屬性和圖查詢語言的靈活性,CODEXGRAPH使LLM代理能夠構(gòu)建和執(zhí)行查詢,允許進(jìn)行精確的、代碼結(jié)構(gòu)感知的上下文檢索和代碼導(dǎo)航。我們通過三個基準(zhǔn)來評估CODEXGRAPH的性能:CrossCodeEval、SWE-bench和EvoCodeBench。此外,我們開發(fā)了五個現(xiàn)實世界的編碼應(yīng)用。通過統(tǒng)一的圖數(shù)據(jù)庫模式,CODEXGRAPH在學(xué)術(shù)和現(xiàn)實世界環(huán)境中展示了競爭性能和潛力,展示了其在軟件工程中的多功能性和有效性。

阿里巴巴提出CODEXGRAPH:打破大模型與代碼庫的壁壘,引領(lǐng)軟件工程新革命-AI.x社區(qū)

論文標(biāo)題:CODEXGRAPH: Bridging Large Language Models and Code Repositories via Code Graph Databases

機(jī)構(gòu)

  1. National University of Singapore
  2. Alibaba Group
  3. Xi’an Jiaotong University

論文鏈接:https://arxiv.org/pdf/2408.03910

項目地址:??https://github.com/modelscope/modelscope-agent/tree/master/apps/codexgraph_agent??

CODEXGRAPH系統(tǒng)介紹

CODEXGRAPH是一個創(chuàng)新的系統(tǒng),旨在通過圖數(shù)據(jù)庫接口將代碼庫與大型語言模型(LLM)橋接起來。該系統(tǒng)利用從代碼庫中提取的代碼圖,通過靜態(tài)分析技術(shù),將代碼符號和關(guān)系索引并存儲為圖數(shù)據(jù)庫中的節(jié)點和邊。這些節(jié)點和邊根據(jù)預(yù)定義的模式進(jìn)行組織,節(jié)點代表如模塊、類和函數(shù)等代碼符號,邊則表示這些符號之間的關(guān)系,如包含、繼承和使用等。

CODEXGRAPH的核心功能是使LLM代理能夠構(gòu)建和執(zhí)行圖查詢,從而實現(xiàn)精確的代碼結(jié)構(gòu)感知上下文檢索和代碼導(dǎo)航。這種結(jié)構(gòu)的利用大大增強(qiáng)了LLM在處理復(fù)雜代碼庫任務(wù)時的性能,使其能夠有效地擴(kuò)展到更大的代碼庫任務(wù)中。

詳細(xì)解析:構(gòu)建代碼圖數(shù)據(jù)庫

1. 從代碼庫中提取代碼圖

構(gòu)建代碼圖數(shù)據(jù)庫的第一步是從目標(biāo)代碼庫中提取代碼圖。這一過程通常涉及靜態(tài)分析技術(shù),掃描代碼庫中的每個文件,識別出代碼中的符號及其相互關(guān)系,并將這些信息作為節(jié)點和邊加入到圖數(shù)據(jù)庫中。例如,一個函數(shù)或類會被創(chuàng)建為一個節(jié)點,而函數(shù)調(diào)用或類繼承則被視為邊。

2. 定義節(jié)點和邊的類型及其屬性

在CODEXGRAPH系統(tǒng)中,節(jié)點和邊的類型及其屬性是根據(jù)代碼的結(jié)構(gòu)和語義預(yù)先定義的。節(jié)點類型包括模塊、類、方法、函數(shù)、字段和全局變量等,每種類型的節(jié)點都有相應(yīng)的屬性,如名稱、文件路徑、代碼和簽名等。邊的類型則表示代碼元素之間的不同關(guān)系,如包含、繼承和使用等。這些定義確保了圖數(shù)據(jù)庫能夠準(zhǔn)確地反映代碼庫的結(jié)構(gòu)。

3. 索引和存儲過程的優(yōu)化

為了提高查詢效率和響應(yīng)速度,CODEXGRAPH在構(gòu)建代碼圖數(shù)據(jù)庫時進(jìn)行了索引和存儲優(yōu)化。首先,通過淺層索引快速捕捉代碼庫中的符號和關(guān)系,然后使用深度優(yōu)先搜索(DFS)等方法處理跨文件的復(fù)雜關(guān)系,確保圖中的邊完整無誤。此外,節(jié)點中不直接存儲代碼片段,而是存儲指向代碼片段的索引,這樣既節(jié)省了存儲空間,也加快了數(shù)據(jù)的檢索速度。

通過這些精心設(shè)計的步驟,CODEXGRAPH能夠高效地管理和查詢大規(guī)模代碼庫,支持復(fù)雜的代碼分析任務(wù),為開發(fā)人員和研究人員提供了一個強(qiáng)大的工具。

阿里巴巴提出CODEXGRAPH:打破大模型與代碼庫的壁壘,引領(lǐng)軟件工程新革命-AI.x社區(qū)

LLM代理與代碼圖數(shù)據(jù)庫的交互

在CODEXGRAPH系統(tǒng)中,LLM代理與代碼圖數(shù)據(jù)庫的交互是通過構(gòu)建和執(zhí)行圖查詢來實現(xiàn)的。這一過程充分利用了圖數(shù)據(jù)庫的結(jié)構(gòu)特性和圖查詢語言的靈活性,使得LLM代理能夠在代碼庫中進(jìn)行精確的、結(jié)構(gòu)感知的上下文檢索和代碼導(dǎo)航。

1. 代碼結(jié)構(gòu)感知搜索

CODEXGRAPH利用圖查詢語言的靈活性,構(gòu)建復(fù)雜且綜合的搜索條件。通過這種方式,LLM代理能夠有效地在代碼圖中導(dǎo)航各種節(jié)點和邊,執(zhí)行如“查找某個模塊下包含特定方法的類”或“檢索定義了某個類及其包含函數(shù)的模塊”的查詢。這種代碼結(jié)構(gòu)感知的搜索方式,提供了一種難以通過基于相似性的檢索方法或傳統(tǒng)的代碼特定工具和API實現(xiàn)的代碼檢索級別。

2. 寫后翻譯

在CODEXGRAPH中,LLM代理首先基于用戶提供的問題理解上下文并生成自然語言查詢,這些查詢隨后被專門的翻譯LLM代理轉(zhuǎn)換為形式化的圖查詢。這種分工使得主LLM代理可以專注于高層次的推理,同時確保圖查詢的語法正確性和優(yōu)化。通過這種“寫后翻譯”的策略,CODEXGRAPH提高了查詢的成功率,并改善了系統(tǒng)檢索相關(guān)代碼信息的能力。

3. 迭代管道

CODEXGRAPH采用迭代管道進(jìn)行LLM代理與代碼圖數(shù)據(jù)庫的交互,每一輪中,LLM代理根據(jù)用戶的問題和之前收集的信息制定多個查詢。這種迭代方法充分利用了LLM代理的推理能力,從而提高了解決問題的準(zhǔn)確性。

實驗設(shè)置與評估

為了評估CODEXGRAPH的有效性,我們在三個具有代表性的代碼庫級基準(zhǔn)上進(jìn)行了測試:CrossCodeEval、SWE-bench和EvoCodeBench。通過這些基準(zhǔn),我們可以全面評估CODEXGRAPH在不同的編程任務(wù)中的表現(xiàn)。

阿里巴巴提出CODEXGRAPH:打破大模型與代碼庫的壁壘,引領(lǐng)軟件工程新革命-AI.x社區(qū)

1. 基準(zhǔn)

  • CrossCodeEval: 用于評估多語言跨文件代碼完成的數(shù)據(jù)集。
  • SWE-bench: 評估模型解決GitHub問題的能力。
  • EvoCodeBench: 用于評估代碼生成的基準(zhǔn),包含詳細(xì)的注釋和評估指標(biāo)。

2. 主要結(jié)果

我們在CrossCodeEval Lite(Python)和SWE-bench Lite測試集上報告了CODEXGRAPH的主要結(jié)果,并在EvoCodeBench的完整測試集上進(jìn)行了評估。這些測試集的選擇旨在展示CODEXGRAPH在處理具有不同復(fù)雜度的任務(wù)時的性能。

3. 基線比較

我們將CODEXGRAPH與幾種基線方法進(jìn)行了比較,包括BM25和AUTOCODEROVER,這些基線在代碼任務(wù)中得到了廣泛認(rèn)可。此外,我們還評估了CODEXGRAPH在不同的大型語言模型(如GPT-4o、DeepSeek-Coder-V2和Qwen2-72b-Instruct)上的表現(xiàn),以測試其在處理長文本、使用工具和生成代碼方面的能力。

通過這些實驗設(shè)置和評估,我們能夠全面了解CODEXGRAPH在學(xué)術(shù)基準(zhǔn)和實際軟件工程任務(wù)中的表現(xiàn),展示了其在多種編程任務(wù)中的通用性和有效性。

阿里巴巴提出CODEXGRAPH:打破大模型與代碼庫的壁壘,引領(lǐng)軟件工程新革命-AI.x社區(qū)

CODEXGRAPH的實際應(yīng)用場景

1. 代碼調(diào)試和寫代碼注釋

CODEXGRAPH在實際應(yīng)用中表現(xiàn)出極大的靈活性和有效性,特別是在代碼調(diào)試和寫代碼注釋這兩個方面。例如,在代碼調(diào)試應(yīng)用中,CODEXGRAPH能夠通過迭代推理和信息檢索來診斷和解決錯誤,提供針對性的修復(fù)建議。這一過程涉及使用圖查詢語言來分析代碼庫,識別問題原因,并推薦精確的修改措施。

在寫代碼注釋的應(yīng)用中,CODEXGRAPH利用代碼圖數(shù)據(jù)庫理解代碼的結(jié)構(gòu)和行為,從而生成詳盡且準(zhǔn)確的代碼注釋,增強(qiáng)代碼的可讀性和可維護(hù)性。這一功能對于理解復(fù)雜的代碼庫、識別依賴關(guān)系以及探索特定類、方法和函數(shù)的使用尤為有用。

2. 代碼生成和單元測試生成

CODEXGRAPH還擴(kuò)展到了代碼生成和單元測試生成領(lǐng)域。在代碼生成應(yīng)用中,它能夠自動創(chuàng)建代碼以滿足新的需求,擴(kuò)展現(xiàn)有代碼庫的功能。而在單元測試生成應(yīng)用中,CODEXGRAPH能夠為指定的類或函數(shù)生成單元測試,確保功能的徹底驗證。這些功能通過迭代查詢和多跳推理,使CODEXGRAPH能夠在處理大型代碼庫時表現(xiàn)出高效和精確。

討論與總結(jié)

CODEXGRAPH通過將大型語言模型(LLMs)與代碼圖數(shù)據(jù)庫接口結(jié)合,克服了現(xiàn)有方法在靈活性和泛化能力上的限制,特別是在處理復(fù)雜的代碼庫和多樣化的代碼任務(wù)時。通過實現(xiàn)結(jié)構(gòu)化的代碼信息存儲和高效的查詢機(jī)制,CODEXGRAPH不僅提高了代碼任務(wù)的性能,還展示了其在學(xué)術(shù)和實際軟件工程任務(wù)中的廣泛適用性。

此外,CODEXGRAPH的設(shè)計允許進(jìn)行精確且結(jié)構(gòu)化的代碼檢索,這是傳統(tǒng)基于相似性的檢索方法和手動工具/API難以實現(xiàn)的。通過這種方式,CODEXGRAPH極大地提升了代碼理解和操作的效率,為復(fù)雜的代碼庫任務(wù)提供了一種強(qiáng)大且靈活的解決方案。

總之,CODEXGRAPH通過其創(chuàng)新的設(shè)計和實現(xiàn),有效地解決了大型代碼庫中的多樣化代碼任務(wù),展示了其在自動化軟件開發(fā)中提高準(zhǔn)確性和可用性的潛力。未來,隨著對更多編程語言的支持和數(shù)據(jù)庫構(gòu)建效率的進(jìn)一步優(yōu)化,CODEXGRAPH有望在軟件工程領(lǐng)域中發(fā)揮更大的影響。

本文轉(zhuǎn)載自 ??AI論文解讀??,作者:柏企

收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 99福利视频 | 久久久国产一区二区三区 | 1000部精品久久久久久久久 | 国产精品免费高清 | 精品久久久久久久久久久院品网 | 一级毛片中国 | 一级毛片中国 | 在线观看黄色大片 | 欧美亚洲另类在线 | 色婷婷精品国产一区二区三区 | www成人免费视频 | 亚洲一二三在线 | 日韩成人精品在线 | 亚洲欧洲日韩精品 中文字幕 | 欧美精品久久久久 | 亚洲一区二区三区在线播放 | 国产福利91精品一区二区三区 | 中文字幕在线观看视频一区 | 日日骚av | 亚洲免费在线观看 | 亚洲第一天堂无码专区 | 一级毛片在线看 | 在线免费观看黄a | 久久影音先锋 | 亚洲欧美在线观看 | 美女131mm久久爽爽免费 | 日韩精品一区二区三区在线观看 | 中文字字幕一区二区三区四区五区 | 久久免费精品 | 91深夜福利视频 | 久久久这里只有17精品 | 国产乱码精品一区二区三区忘忧草 | 久久精品在线 | 中文字幕成人av | 在线视频一区二区 | 久久av一区二区三区 | 国产精品久久一区二区三区 | 国产日韩欧美一区二区 | 毛片毛片毛片毛片毛片 | 视频精品一区二区三区 | 久草青青 |