System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及人工智能,尤其涉及一種基于大語言模型的多源信息融合的代碼生成方法及系統。
技術介紹
1、隨著人工智能技術的飛速發展,代碼補全已成為程序員日常開發中不可或缺的輔助工具。
2、現有的傳統代碼補全技術仍面臨一系列挑戰。首先,缺乏對程序上下文語義的深入理解,往往只關注當前輸入的語法結構,而忽視了代碼在整個項目中的作用和意義,這導致生成的補全建議不夠精準。其次,這些技術通常依賴于預先定義的補全規則和模板,這限制了其靈活性和擴展性,在面對新的編程范式、框架或庫時顯得力不從心。此外,現有代碼補全技術往往局限于當前文件的上下文信息,無法充分利用項目中其他相關文件的代碼信息,導致生成的補全建議缺乏全局視角。最后,這些技術沒有很好地利用外部知識源,如文檔、網頁等,以提供更加符合特定任務需求的補全建議。
3、因此,現在亟需一種基于大語言模型的多源信息融合的代碼生成方法及系統來解決上述問題。
技術實現思路
1、針對現有技術存在的問題,本專利技術提供一種基于大語言模型的多源信息融合的代碼生成方法及系統。
2、本專利技術提供一種基于大語言模型的多源信息融合的代碼生成方法,包括:
3、根據待補全代碼的代碼結構內容,從第一代碼文件路徑和多個第二代碼文件路徑中的代碼文件中獲取所述待補全代碼對應的應用程序編程接口信息和代碼關系信息,其中,所述第一代碼文件路徑為所述待補全代碼所在代碼文件對應的文件路徑,所述第二代碼文件路徑為在編寫所述待補全代碼之前的歷史代碼
4、根據所述應用程序編程接口信息和所述代碼關系信息,從目標代碼庫中匹配得到待定上下文代碼片段;
5、將所述待定上下文代碼片段輸入至代碼評價模型,得到由所述代碼評價模型輸出的目標補全代碼片段,其中,所述代碼評價模型是基于標注有代碼上下文信息的樣本代碼和所述樣本代碼對應的樣本補全代碼進行訓練得到的;
6、根據所述待補全代碼對應的代碼輸入光標位置信息,獲取所述待補全代碼的前序代碼和后綴代碼,并根據所述前序代碼、所述后綴代碼和所述目標補全代碼片段,生成代碼補全提示詞。
7、根據本專利技術提供的一種基于大語言模型的多源信息融合的代碼生成方法,所述根據待補全代碼的代碼結構內容,從第一代碼文件路徑和多個第二代碼文件路徑中的代碼文件中獲取所述待補全代碼對應的應用程序編程接口信息和代碼關系信息,包括:
8、根據所述代碼結構內容,獲取所述待補全代碼對應的代碼調用信息、代碼塊信息和文件名信息;
9、基于抽象語法樹,根據所述代碼調用信息對所述第一代碼文件路徑中的代碼文件進行分析,得到所述待補全代碼所需的目標應用程序編程接口類型對應的所述應用程序編程接口信息;
10、基于所述抽象語法樹,根據所述代碼塊信息和所述文件名信息,獲取所述第一代碼文件路徑和所述多個第二代碼文件路徑對應的代碼文件內的代碼片段與所述待補全代碼之間的所述代碼關系信息。
11、根據本專利技術提供的一種基于大語言模型的多源信息融合的代碼生成方法,所述基于所述抽象語法樹,根據所述代碼塊信息和所述文件名信息,獲取所述第一代碼文件路徑和所述多個第二代碼文件路徑對應的代碼文件內的代碼片段與所述待補全代碼之間的所述代碼關系信息,包括:
12、基于所述抽象語法樹,提取所述代碼塊信息中的代碼元素信息,其中,所述代碼元素信息中至少包括關鍵變量信息、函數調用信息和類實例化信息;
13、根據所述待補全代碼對應的代碼模塊名稱,構建代碼模塊名稱路徑名稱信息;
14、基于字符串相似度算法,根據所述待補全代碼對應的文件名信息,從第一代碼文件路徑和所述多個第二代碼文件路徑中獲取相似文件名信息;
15、基于所述抽象語法樹,根據所述待補全代碼對應的繼承鏈信息,獲取父類代碼信息;
16、根據所述代碼元素信息、所述代碼模塊名稱路徑名稱信息、所述相似文件名信息和所述父類代碼信息,構建得到所述代碼關系信息。
17、根據本專利技術提供的一種基于大語言模型的多源信息融合的代碼生成方法,所述目標代碼庫包括本地代碼庫和第三方代碼庫;
18、所述根據所述應用程序編程接口信息和所述代碼關系信息,從目標代碼庫中匹配得到待定上下文代碼片段,包括:
19、根據所述代碼關系信息,從各個所述第二代碼文件路徑對應的代碼文件中匹配得到第一關系代碼片段,其中,所述第一關系代碼片段為在所述第二代碼文件路徑中,與所述待補全代碼之間存在關聯關系的代碼片段;
20、基于檢索增強生成,根據所述代碼關系信息和所述應用程序編程接口信息,從所述本地代碼庫和所述第三方代碼庫匹配得到第二關系代碼片段;
21、根據所述第一關系代碼片段和所述第二關系代碼片段,獲取所述待定上下文代碼片段。
22、根據本專利技術提供的一種基于大語言模型的多源信息融合的代碼生成方法,所述方法還包括:
23、若所述第二關系代碼片段是通過所述第三方代碼庫匹配得到的,則基于自然語言處理技術,根據所述第三方代碼庫對應的代碼描述文檔,構建所述第二關系代碼片段對應的文檔摘要內容;
24、所述根據所述第一關系代碼片段和所述第二關系代碼片段,獲取所述待定上下文代碼片段,包括:
25、根據所述第一關系代碼片段、所述第二關系代碼片段和所述文檔摘要內容,獲取所述待定上下文代碼片段。
26、根據本專利技術提供的一種基于大語言模型的多源信息融合的代碼生成方法,所述代碼評價模型通過以下步驟訓練得到:
27、對樣本代碼中的代碼上下文內容進行標注,得到所述標注有代碼上下文信息的樣本代碼;
28、獲取正向樣本補全代碼和負向樣本補全代碼,并將所述正向樣本補全代碼和所述負向樣本補全代碼,與所述標注有代碼上下文信息的樣本代碼構建為樣本對,得到樣本訓練集;
29、通過所述樣本訓練集,對神經網絡模型進行訓練,得到所述代碼評價模型,其中,在所述神經網絡模型的訓練過程中,損失函數是基于條件交叉互信息構建得到的。
30、本專利技術還提供一種基于大語言模型的多源信息融合的代碼生成系統,包括:
31、代碼解析模塊,用于根據待補全代碼的代碼結構內容,從第一代碼文件路徑和多個第二代碼文件路徑中的代碼文件中獲取所述待補全代碼對應的應用程序編程接口信息和代碼關系信息,其中,所述第一代碼文件路徑為所述待補全代碼所在代碼文件對應的文件路徑,所述第二代碼文件路徑為在編寫所述待補全代碼之前的歷史代碼文件對應的文件路徑;
32、代碼片段檢索模塊,用于根據所述應用程序編程接口信息和所述代碼關系信息,從目標代碼庫中匹配得到待定上下文代碼片段;
33、代碼評價模塊,用于將所述待定上下文代碼片段輸入至代碼評價模型,得到由所述代碼評價模型輸出的目標補全代碼片段,其中,所述代碼評價模型是基于標注有代碼上下文信息的樣本代碼和所述樣本代碼對應的樣本補全代本文檔來自技高網...
【技術保護點】
1.一種基于大語言模型的多源信息融合的代碼生成方法,其特征在于,包括:
2.根據權利要求1所述的基于大語言模型的多源信息融合的代碼生成方法,其特征在于,所述根據待補全代碼的代碼結構內容,從第一代碼文件路徑和多個第二代碼文件路徑中的代碼文件中獲取所述待補全代碼對應的應用程序編程接口信息和代碼關系信息,包括:
3.根據權利要求2所述的基于大語言模型的多源信息融合的代碼生成方法,其特征在于,所述基于所述抽象語法樹,根據所述代碼塊信息和所述文件名信息,獲取所述第一代碼文件路徑和所述多個第二代碼文件路徑對應的代碼文件內的代碼片段與所述待補全代碼之間的所述代碼關系信息,包括:
4.根據權利要求3所述的基于大語言模型的多源信息融合的代碼生成方法,其特征在于,所述目標代碼庫包括本地代碼庫和第三方代碼庫;
5.根據權利要求4所述的基于大語言模型的多源信息融合的代碼生成方法,其特征在于,所述方法還包括:
6.根據權利要求1所述的基于大語言模型的多源信息融合的代碼生成方法,其特征在于,所述代碼評價模型通過以下步驟訓練得到:
7.一
8.一種電子設備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時實現如權利要求1至6任一項所述基于大語言模型的多源信息融合的代碼生成方法。
9.一種非暫態計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1至6任一項所述基于大語言模型的多源信息融合的代碼生成方法。
10.一種計算機程序產品,包括計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1至6任一項所述基于大語言模型的多源信息融合的代碼生成方法。
...【技術特征摘要】
1.一種基于大語言模型的多源信息融合的代碼生成方法,其特征在于,包括:
2.根據權利要求1所述的基于大語言模型的多源信息融合的代碼生成方法,其特征在于,所述根據待補全代碼的代碼結構內容,從第一代碼文件路徑和多個第二代碼文件路徑中的代碼文件中獲取所述待補全代碼對應的應用程序編程接口信息和代碼關系信息,包括:
3.根據權利要求2所述的基于大語言模型的多源信息融合的代碼生成方法,其特征在于,所述基于所述抽象語法樹,根據所述代碼塊信息和所述文件名信息,獲取所述第一代碼文件路徑和所述多個第二代碼文件路徑對應的代碼文件內的代碼片段與所述待補全代碼之間的所述代碼關系信息,包括:
4.根據權利要求3所述的基于大語言模型的多源信息融合的代碼生成方法,其特征在于,所述目標代碼庫包括本地代碼庫和第三方代碼庫;
5.根據權利要求4所述的基于大語言模型的多源信息融合的代碼生成方法,其特...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。