本公開涉及通信技術的,具體而言,涉及一種代碼大模型的代碼生成方法、裝置、電子設備及介質。
背景技術:
1、大語言模型llm(large?language?model)指可以處理多種自然語言任務且具有大量參數的深度學習模型。代碼大模型指用于代碼生成的大語言模型,而代碼大模型的增強生成旨在為經過預訓練后的代碼大模型進行進一步設計,從而提升該模型生成代碼的質量。
2、相關代碼大模型的代碼生成技術中,通過各類訓練方法對該代碼大模型的模型參數進行調整,但該模型參數的參數量較大,導致運行過程消耗大量時間和資源,且輸入到該代碼大模型的補充信息的有效性差,從而導致該代碼大模型根據該補充信息生成的代碼準確率低。
技術實現思路
1、本公開實施例至少提供一種代碼大模型的代碼生成方法、裝置、電子設備及介質。
2、第一方面,本公開實施例提供了一種代碼大模型的代碼生成方法,包括:
3、獲取多個代碼撰寫樣本;其中,每個所述代碼撰寫樣本包括以下至少之一:代碼撰寫要求、能夠實現該代碼撰寫要求的代碼,以及用于評估代碼是否符合該代碼撰寫要求的測試用例;
4、基于所述多個代碼撰寫樣本,篩選出多個代碼撰寫要求作為代碼撰寫示例要求;
5、基于所述代碼撰寫示例要求的實現代碼生成攜帶注釋的目標代碼,并基于所述目標代碼確定層級式計劃;其中,所述層級式計劃用于指示所述目標代碼所實現功能的功能描述信息;
6、將每個所述代碼撰寫示例要求、該代碼撰寫示例要求的層級式計劃,以及所述目標代碼依次組合,得到思維鏈示例;
7、將多組所述思維鏈示例進行拼接,并將拼接后所述思維鏈示例和待處理代碼撰寫要求輸入至代碼大模型,生成所述待處理代碼撰寫要求的實現代碼。
8、一種可選的實施方式中,所述基于所述多個代碼撰寫樣本,篩選出多個代碼撰寫要求作為代碼撰寫示例要求,包括:
9、通過訓練后編碼模型對所述多個代碼撰寫樣本中的代碼撰寫要求進行編碼處理,得到多個第一編碼向量;
10、基于k均值聚類算法對所述多個第一編碼向量進行分類處理,得到多個分類組;其中,每個所述分類組對應一組相同類型的代碼撰寫要求;
11、確定所述代碼大模型在分別輸入所述代碼撰寫樣本中的每個代碼撰寫要求時,該代碼大模型輸出的代碼在所述代碼撰寫樣本中該代碼撰寫要求對應的測試用例上測試得到的準確度;
12、基于每個分類組中代碼準確度最低的代碼撰寫要求,確定代碼撰寫示例要求。
13、一種可選的實施方式中,通過以下方式得到訓練后的編碼模型,包括:
14、基于所述多個代碼撰寫樣本中的代碼撰寫要求,確定多個訓練代碼撰寫要求組;每個所述訓練代碼撰寫要求組中包含錨定代碼撰寫要求、該錨定代碼撰寫要求的正向代碼撰寫要求,該錨定代碼撰寫要求的反向代碼撰寫要求;
15、在每輪訓練中,基于該輪訓練前編碼模型對每個所述訓練代碼撰寫要求組中的錨定代碼撰寫要求、正向代碼撰寫要求和反向代碼撰寫要求進行編碼處理,得到多個第二編碼向量;
16、基于所述多個第二編碼向量確定第一損失函數值,并根據所述第一損失函數值調整所述該輪訓練前編碼模型的模型參數;
17、基于多輪訓練,得到所述訓練后的編碼模型。
18、一種可選的實施方式中,所述確定所述代碼大模型在分別輸入所述代碼撰寫樣本中的每個代碼撰寫要求時,該代碼大模型輸出的代碼在所述代碼撰寫樣本中該代碼撰寫要求對應的測試用例上測試得到的準確度,包括:
19、確定每個所述代碼撰寫樣本中各代碼撰寫要求所對應的測試用例的第一用例數量;
20、在所述代碼撰寫要求作為所述代碼大模型的輸入時,能夠通過的測試用例的第二用例數量;
21、基于所述第二用例數量和所述第一用例數量之間的比值,確定所述代碼撰寫要求的準確度。
22、一種可選的實施方式中,所述基于能夠實現所述代碼撰寫示例要求的代碼生成目標代碼,包括:
23、確定所述代碼撰寫示例要求的每行代碼的注釋;
24、將所述注釋添加到該行代碼的前一行,并在所述注釋前添加與該行代碼的縮進數量相同數量的縮進。
25、一種可選的實施方式中,所述基于所述目標代碼生成層級式計劃,包括:
26、基于所述目標代碼構建層級式列表;其中,所述層級式列表的每一項對應所述目標代碼所執行功能的一個實現步驟,所述實現步驟用于指示對所述目標代碼的一部分代碼所執行功能的初始功能描述信息;
27、對所述層級式列表中的初始功能描述信息進行格式調整,調整后得到所述層級式計劃。
28、一種可選的實施方式中,所述對所述層級式列表中的初始功能描述信息進行格式調整,調整后得到所述層級式計劃,包括:
29、在所述層級式列表中所述實現步驟相應的首個代碼語句的句首包含指定關鍵字的情況下,將所述實現步驟的初始功能描述信息撰寫為句首包含該指定關鍵字的功能描述信息;其中,所述首個代碼語句為所述目標代碼中該實現步驟的實現代碼的首個代碼語句;
30、在所述層級式列表中所述實現步驟相應的首個代碼語句的句首不包含所述指定關鍵字的情況下,將所述實現步驟的初始功能描述信息撰寫為第一格式的功能描述信息;
31、基于所述目標代碼中所述實現步驟所相應代碼語句中各行語句前最小縮進數量,調整所述實現步驟的初始功能描述信息的縮進數量,調整后得到所述層級式計劃。
32、第二方面,本公開實施例提供了一種代碼生成裝置,包括:
33、獲取單元,用于獲取代碼撰寫數據;其中,每個所述代碼撰寫數據包括以下至少之一:代碼撰寫要求、能夠實現該代碼撰寫要求的代碼,以及用于評估代碼是否符合該代碼撰寫要求的測試用例;
34、第一處理單元,用于基于所述多個代碼撰寫樣本,篩選出多個代碼撰寫要求作為代碼撰寫示例要求;其中,所述代碼撰寫示例要求通過上述第一方面中的步驟得到;
35、第二處理單元,用于基于所述代碼撰寫示例要求的實現代碼生成攜帶注釋的目標代碼,并基于所述目標代碼確定層級式計劃;其中,所述目標代碼通過上述第一方面中的步驟得到;
36、第一匯總單元,用于將每個所述代碼撰寫示例要求、該代碼撰寫示例要求的層級式計劃,以及所述目標代碼依次組合,得到思維鏈示例;其中,所述層級式計劃通過上述第一方面中的步驟得到;
37、第二匯總單元,用于將多組所述思維鏈示例進行拼接,并將拼接后所述思維鏈示例和待處理代碼撰寫要求輸入至代碼大模型,生成所述待處理代碼撰寫要求的實現代碼。
38、第三方面,本公開實施例還提供一種電子設備,包括:處理器、存儲器和總線,所述存儲器存儲有所述處理器可執行的機器可讀指令,當電子設備運行時,所述處理器與所述存儲器之間通過總線通信,所述機器可讀指令被所述處理器執行時執行上述第一方面中的步驟。
39、第四方面,本公開實施例還提供一種計算機可讀存儲介質,該計算機可讀存儲介質上存儲有計算機程序,該計算機程序被處理器運行時執行上述第一方面中的步驟。
40、在本技術實施例中,首先,獲取多個代碼撰寫樣本,并基于多個該代碼撰寫樣本,篩選出多個代碼撰寫要求作為代碼撰寫示例要求,然后,基于該代碼撰寫示例要求的實現代碼生成攜帶注釋的目標代碼,并基于該目標代碼確定層級式計劃,最后將每個代碼撰寫示例要求、該代碼撰寫示例要求的層級式計劃,以及該目標代碼依次組合,得到思維鏈示例,將多組該思維鏈示例進行拼接,并將拼接后的該思維鏈示例和待處理代碼撰寫要求輸入至代碼大模型,生成該待處理代碼撰寫要求的實現代碼。
41、上述實施方式中,通過在多個代碼撰寫樣本中篩選出多個代碼撰寫要求作為代碼撰寫示例要求的方式,可提升選取代碼撰寫示例要求的有效性和多樣性,并通過該代碼撰寫示例要求的目標代碼確定層級式計劃,將該代碼撰寫示例要求、該層級式計劃和該目標代碼依次組合,得到思維鏈示例,將拼接后的該思維鏈示例和待處理代碼撰寫要求輸入至代碼大模型中,使該代碼大模型先輸出層級式計劃,再輸出攜帶注釋的目標代碼,實現該代碼大模型能夠處理更復雜的問題,并提升生成代碼的準確度。
42、為使本公開的上述目的、特征和優點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。