System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本說明書一個或多個實施例涉及大語言模型與代碼生成,尤其涉及一種基于代碼圖的代碼生成方法及裝置。
技術介紹
1、隨著信息技術的飛速發展,軟件行業正面臨著前所未有的挑戰,其中包括軟件項目復雜度的持續攀升和市場需求的快速迭代。在這種背景下,業界開發了多種可以輔助開發人員進行代碼編寫的工具。例如,近年來在代碼生成場景中被廣泛應用的,以chatgpt為代表的大語言模型(large?language?model,llm)。
2、代碼生成技術是指,模型根據輸入的問題、需求自動生成程序代碼,從而可以提高開發人員的編碼效率。早期的代碼生成技術主要針對簡單業務場景,在單一代碼文件中,生成實現單一功能的小規模代碼,例如生成排序算法、生成sql查詢片段,等等。
3、然而,隨著軟件項目的復雜度不斷攀升,源代碼文件中包含的功能模塊之間的引用、調用關系變得錯綜復雜,傳統的代碼生成技術難以理解現代軟件項目中的代碼結構,從而在識別和定位需要進行修改的代碼文件時產生誤差,進而影響了代碼生成的準確性。
4、因此,希望能有一種方案,可以通過技術手段,提高模型對代碼結構的理解能力,從而準確定位需要進行改動的代碼文件,提高代碼生成的準確率。
技術實現思路
1、本說明書的一個或多個實施例描述了一種基于代碼圖的代碼生成方法及裝置,以解決現有大語言模型難以理解代碼倉庫中代碼結構的問題,提高大語言模型對目標代碼文件的定位能力,從而更好地完成倉庫級別的代碼生成任務。
2、根據第一方面,提
3、接收針對代碼倉庫中代碼的第一問題文本。
4、根據所述第一問題文本,在預先構建的代碼圖中進行相關性檢索,確定第一上下文子圖,所述代碼圖包含代表所述代碼倉庫中代碼元素的節點,以及代表節點之間代碼關系的有向邊。
5、對所述第一上下文子圖進行圖表征處理,得到各個節點映射至大語言模型嵌入空間的映射表征。
6、在所述大語言模型的嵌入層中,將所述第一問題文本進行編碼,得到文本表征。
7、在所述大語言模型的推理層中,基于所述映射表征和所述文本表征進行目標推理,得到針對所述第一問題文本的目標代碼文本。
8、根據一種實現方式,所述代碼元素包括以下中的至少一種:代碼模塊、代碼文件、類定義、方法聲明、變量聲明;所述代碼關系包括以下中的至少一種:層級關系、導入關系、引用關系、繼承關系、調用關系。
9、根據一種實現方式,所述第一問題文本,包括以下中的一種:代碼定位、修復錯誤、增加新功能、更新依賴。
10、根據一種實現方式,所述確定第一上下文子圖,包括:
11、基于所述相關性檢索得到的若干關聯節點,進行目標搜索,所述目標搜索包括,對于任意關聯節點,在代碼圖中沿有向邊進行預設跳數范圍內的搜索,得到若干擴展節點;
12、根據所述若干關聯節點及各自對應的擴展節點,構建所述第一上下文子圖。
13、根據一種實現方式,所述在預先構建的代碼圖中進行相關性檢索,包括:
14、從所述第一問題文本中,提取若干第一標識,所述第一標識包括,代碼元素名稱和/或功能描述詞;在所述代碼圖中,基于文本模糊匹配,檢索得到若干關聯節點,所述關聯節點的代碼元素名稱與第一標識之間的文本相似度高于預設閾值。
15、根據一種實現方式,所述在預先構建的代碼圖中進行相關性檢索,包括:
16、將所述第一問題文本輸入第一模型進行推斷,得到第一擴展文本,所述第一擴展文本包括與第一問題文本相關的代碼元素的功能描述文本;將所述第一擴展文本以及所述代碼圖輸入第二模型進行編碼,得到第一擴展文本對應的第一編碼、代碼圖中各個節點的源代碼所對應的語義編碼;在所述代碼圖中,檢索得到若干關聯節點,所述關聯節點對應的語義編碼與第一編碼之間的表征相似度高于預設閾值。
17、在上述實現方式的一個場景中,所述第二模型為cge-large模型。
18、根據一種實現方式,所述方法還包括:
19、對于所述第一上下文子圖中的文件節點,基于其與第一問題文本的相關度排序,確定若干第一代碼文件。所述目標推理,包括:在所述大語言模型的推理層中,基于所述第一代碼文件、所述映射表征和所述文本表征進行目標推理。
20、在上述實現方式的一個場景中,所述確定若干第一代碼文件,包括:
21、將所述第一上下文子圖中的文件節點與思維鏈提示文本輸入第三模型進行推理,選出所述若干第一代碼文件;所述思維鏈提示文本用于指示第三模型,分多個步驟進行推理,以逐步確定與第一問題文本相關度排序最高的k個文件節點所對應的代碼文件。
22、根據一種實現方式,所述對所述第一上下文子圖進行圖表征處理,包括:
23、將所述第一上下文子圖中各個節點包含的代碼文本內容進行表征處理,得到各個節點各自對應的編碼表征;將各個編碼表征輸入映射網絡進行映射處理,得到所述映射表征。
24、在上述實現方式的一個場景中,所述代碼圖包括第一節點,第一節點包含的目標代碼文本內容為長文本;所述將所述第一上下文子圖中各個節點包含的代碼文本內容進行表征處理,包括:
25、對目標代碼文本內容進行文本分割,得到多個文本塊。
26、對各個文本塊進行表征處理,得到各文本塊對應的文本塊編碼表征。
27、基于各文本塊編碼表征,確定第一節點的編碼表征。
28、根據一種實現方式,所述目標推理,包括:
29、使用所述大語言模型,以所述代碼圖的鄰接矩陣作為注意力掩碼,進行基于注意力的編碼處理。
30、根據一種實現方式,所述方法還包括:
31、若所述目標代碼文本中包含對歷史代碼的目標修改,則將所述目標修改打包并提交。
32、根據一種實現方式,所述代碼關系包括結構關系與語義關系,所述代碼圖通過以下步驟進行構建:
33、根據所述代碼倉庫包含的第一源代碼,構建第一抽象語法樹。
34、遍歷所述第一抽象語法樹,將其中代表代碼元素的各個節點以及代表節點之間結構關系的有向邊,加入所述代碼圖。
35、對所述第一源代碼包含的代碼元素進行語義分析,得到若干第一語義關系。
36、在所述代碼圖中,根據第一語義關系,將源節點與目標節點通過有向邊連接。
37、根據第二方面,提供了一種基于代碼圖的代碼生成裝置,所述裝置包括:
38、接收模塊,配置為,接收針對代碼倉庫中代碼的第一問題文本。
39、檢索模塊,配置為,根據所述第一問題文本,在預先構建的代碼圖中進行相關性檢索,確定第一上下文子圖,所述代碼圖包含代表所述代碼倉庫中代碼元素的節點,以及代表節點之間代碼關系的有向邊。
40、第一編碼模塊,配置為,對所述第一上下文子圖進行圖表征處理,得到各個節點映射至大語言模型嵌入空間的映射表征。本文檔來自技高網...
【技術保護點】
1.一種基于代碼圖的代碼生成方法,包括:
2.根據權利要求1所述的方法,其中,所述代碼元素包括以下中的至少一種:代碼模塊、代碼文件、類定義、方法聲明、變量聲明;所述代碼關系包括以下中的至少一種:層級關系、導入關系、引用關系、繼承關系、調用關系。
3.根據權利要求1所述的方法,其中,所述第一問題文本,包括以下中的一種:代碼定位、修復錯誤、增加新功能、更新依賴。
4.根據權利要求1所述的方法,其中,所述確定第一上下文子圖,包括:
5.根據權利要求1所述的方法,其中,所述在預先構建的代碼圖中進行相關性檢索,包括:
6.根據權利要求1所述的方法,其中,所述在預先構建的代碼圖中進行相關性檢索,包括:
7.根據權利要求6所述的方法,其中,所述第二模型為CGE-Large模型。
8.根據權利要求1所述的方法,還包括:
9.根據權利要求8所述的方法,其中,所述確定若干第一代碼文件,包括:
10.根據權利要求1所述的方法,其中,所述對所述第一上下文子圖進行圖表征處理,包括:
11
12.根據權利要求1所述的方法,其中,所述目標推理,包括:
13.根據權利要求1所述的方法,其中,所述方法還包括:
14.根據權利要求1所述的方法,其中,所述代碼關系包括結構關系與語義關系,所述代碼圖通過以下步驟進行構建:
15.一種基于代碼圖的代碼生成裝置,所述裝置包括:
16.一種計算機程序產品,包括計算機程序/指令,該計算機程序/指令被處理器執行時實現權利要求1-14中任一項所述方法的步驟。
17.一種計算設備,包括存儲器和處理器,其特征在于,所述存儲器中存儲有可執行代碼,所述處理器執行所述可執行代碼時,實現權利要求1-14中任一項所述的方法。
...【技術特征摘要】
1.一種基于代碼圖的代碼生成方法,包括:
2.根據權利要求1所述的方法,其中,所述代碼元素包括以下中的至少一種:代碼模塊、代碼文件、類定義、方法聲明、變量聲明;所述代碼關系包括以下中的至少一種:層級關系、導入關系、引用關系、繼承關系、調用關系。
3.根據權利要求1所述的方法,其中,所述第一問題文本,包括以下中的一種:代碼定位、修復錯誤、增加新功能、更新依賴。
4.根據權利要求1所述的方法,其中,所述確定第一上下文子圖,包括:
5.根據權利要求1所述的方法,其中,所述在預先構建的代碼圖中進行相關性檢索,包括:
6.根據權利要求1所述的方法,其中,所述在預先構建的代碼圖中進行相關性檢索,包括:
7.根據權利要求6所述的方法,其中,所述第二模型為cge-large模型。
8.根據權利要求1所述的方法,還包括:
9.根據權利要求8所述的方法,其中,所述確定若干第一代碼文件,包括:
10....
【專利技術屬性】
技術研發人員:陶洪元,劉丙昌,湯震浩,章穎,余航,李建國,狄鵬,
申請(專利權)人:支付寶杭州信息技術有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。