理解和管理大型軟體庫在當代軟體開發中是一個反覆出現的問題。雖然目前的工具在總結小型代碼單元(例如函數)時表現良好,但在處理像文件和套件這樣的庫級工件時卻遇到困難。這些更抽象的總結對於理解整個代碼庫的意圖和行為至關重要,尤其是在企業應用中,技術總結必須與商業目標保持一致。根據各種報告,這一空白導致了效率低下,開發人員花費超過50%的時間來理解現有代碼。這些效率低下對生產力產生了負面影響,並減緩了像電信行業的商業支援系統(BSS)等系統的開發和維護。
傳統的總結方法,包括基於規則和模板驅動的方法,無法滿足大型代碼庫的需求。雖然機器學習的進步,例如神經機器翻譯和基於變壓器的模型,已經改善了小型代碼單元的總結,但它們通常依賴於像CodeSearchNet和CodeXGLUE這樣專注於系統級代碼的數據集。這種狹隘的焦點限制了它們在特定領域和商業背景應用中的有效性。代碼專用的大型語言模型(LLMs),如CodeLlama和StarCoder,提升了性能,但無法將總結與更廣泛的商業意圖對齊。與此同時,封閉源代碼的LLMs,包括GPT,提供了更高的準確性,但引發了隱私問題,使其不適合用於專有企業軟體。這些限制在庫級總結中留下了顯著的空白,特別是對於需要理解技術細節和特定領域細微差別的大型應用。
來自TCS Research的研究人員提出了一種新穎的層次框架,用於總結庫級代碼,專門設計用於商業應用。這一策略旨在通過基於本地的LLM隱私保護和特定領域的相關性基礎,克服當前實踐的限制。該過程包括通過抽象語法樹(AST)解析將大型代碼工件劃分為可處理的單元,如函數、變數和構造函數。單獨的片段分別進行總結,然後將它們的總結合併為文件級和套件級的總結。
這一框架的一個獨特方面是通過自定義提示納入特定領域和問題上下文的知識。通過將總結過程嵌入到電信行業的商業目標和運營環境中,該技術確保總結能夠識別代碼工件的高層次意圖和實用性。這一技術不僅確保總結內容全面,還能根據企業系統(如BSS)的目的進行目標導向,因為理解代碼的目的與其技術性質同樣重要。
該方法利用AST解析從源文件中識別邏輯片段,包括函數、枚舉和變數,這些片段使用自定義提示進行單獨總結。例如,通過檢查函數的輸入、輸出、工作流程、副作用和一般目的來概述函數,而變數和枚舉則根據它們在更大應用中的功能進行描述。這些片段級的總結被聚合成文件級總結,描述該文件在庫中的目的和功能。同樣,文件級總結被聚合成套件級總結,提供庫的結構和功能的完整畫面。為了使總結準確且相關,該結構包括特定領域的描述,包括有關電信和BSS運營環境的內容。這種基礎使得總結不僅能捕捉代碼的技術細節,還能與整體商業目標保持一致,使其非常適合用於企業環境。
研究人員使用一個公開可用的GitHub庫進行了框架的評估,該庫旨在模擬電信BSS的特徵。總結過程的層次結構確保了對所有代碼片段的全面覆蓋,解決了傳統方法中觀察到的遺漏問題。通過系統地總結各個組件,該方法捕捉了所有相關細節,確保了庫的完整和準確表示。將總結基於特定領域和問題上下文的知識顯著提高了其質量,領域相關性提高了超過7%,完整性提高了13%,同時保持了簡潔性和連貫性。使用ROUGE-L、BLEU和BERTScore等指標的性能測試顯示出相對於基線方法的顯著增益,反映了總結的正確性和上下文敏感性。此外,來自電信行業的專業評估驗證了所產生總結的資訊性和相關性,確認了它們與商業目標和技術規範的一致性。這種整體方法在生成符合企業軟體開發特定需求的對齊、深入的總結方面特別有效。
這一層次庫級代碼總結框架代表了理解和維護企業應用的一個重要進步。通過將複雜的代碼庫分解為可理解的單元並納入領域專業知識,該過程保證了準確、相關和以商業為重點的總結。它能有效克服當前技術的不足,使開發人員提高生產力並簡化維護程序。該技術在其他領域如醫療和金融中的應用前景廣闊,未來可能擴展到多模態功能,以進一步增強代碼理解。
查看論文。這項研究的所有功勞都歸於這個項目的研究人員。此外,別忘了在Twitter上關注我們,加入我們的Telegram頻道和LinkedIn小組。不要忘記加入我們的70k+ ML SubReddit。
🚨 [推薦閱讀] Nebius AI Studio擴展了視覺模型、新的語言模型、嵌入和LoRA(推廣)
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!