本發(fā)明涉及軟件開發(fā),具體涉及一種代碼的自動生成方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、在軟件開發(fā)中,可以基于固定的數(shù)據(jù)結(jié)構(gòu)自動生成代碼,自動生成代碼的目的是提高軟件開發(fā)效率和減少錯誤。通過自動生成代碼,軟件開發(fā)人員可以節(jié)省大量的時間和精力。相比手動編寫代碼,代碼生成可以快速生成大量的模板代碼,減少了重復(fù)勞動。
2、然而,上述基于固定的數(shù)據(jù)結(jié)構(gòu)自動生成代碼的方法生成的代碼相對固定呆板,并沒有后續(xù)的擴展性,且只支持輸入一個結(jié)構(gòu)對象,以此生成該對象相應(yīng)的代碼,不支持輸入多個不同類型的關(guān)聯(lián)對象并分析,因此,上述的方法無法像軟件開發(fā)人員那樣進(jìn)行邏輯推理并根據(jù)輸入、輸出、數(shù)據(jù)源的結(jié)構(gòu)再結(jié)合需求的文本描述,動態(tài)生成多樣化的代碼。
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明實施例提供了一種代碼的自動生成方法、裝置、設(shè)備及介質(zhì),以此解決現(xiàn)有自動生成的代碼沒有擴展性、不支持輸入多個不同類型的關(guān)聯(lián)對象并分析的問題。
2、根據(jù)第一方面,本發(fā)明實施例提供了一種代碼的自動生成方法,所述方法包括:
3、獲取用戶的代碼開發(fā)請求;所述代碼開發(fā)請求中包括用戶指定的應(yīng)用場景以及應(yīng)用場景的全邏輯處理流程;
4、對所述代碼開發(fā)請求進(jìn)行語義意圖理解,得到意圖理解結(jié)果,并利用所述全邏輯處理流程以及所述意圖理解結(jié)果,與預(yù)設(shè)知識庫進(jìn)行匹配,對所述全邏輯處理流程進(jìn)行補全,生成業(yè)務(wù)邏輯處理流程;所述意圖理解結(jié)果表征對用戶代碼開發(fā)請求的個人意圖理解;
5、基于所述業(yè)務(wù)邏輯處理流程,確定完成業(yè)務(wù)邏輯處理流程所需的關(guān)聯(lián)輸入?yún)?shù);所述關(guān)聯(lián)輸入?yún)?shù)包括統(tǒng)一資源定位符路徑參數(shù)、表參數(shù)以及文本描述參數(shù);
6、對所有所述關(guān)聯(lián)輸入?yún)?shù)均進(jìn)行回調(diào)調(diào)用處理,得到每一項關(guān)聯(lián)輸入?yún)?shù)的回調(diào)數(shù)據(jù),并利用已訓(xùn)練好的大語言模型的代碼生成鏈,分別生成回調(diào)數(shù)據(jù)的第一提詞器模板以及第一用戶消息模板;
7、基于所述第一提詞器模板以及所述第一用戶消息模板對回調(diào)數(shù)據(jù)進(jìn)行處理,生成第一輸入數(shù)據(jù),并將第一輸入數(shù)據(jù)輸入至所述大語言模型中,得到由所述大語言模型輸出的代碼;所述第一輸入數(shù)據(jù)的上下文信息包含所述關(guān)聯(lián)輸入?yún)?shù)以及所述業(yè)務(wù)邏輯處理流程;
8、利用所述大語言模型的測試用例生成鏈,分別生成所述代碼的第二提詞器模板以及第二用戶消息模板,基于所述第二提詞器模板以及所述第二用戶消息模板對所述代碼進(jìn)行處理,生成第二輸入數(shù)據(jù),并將所述第二輸入數(shù)據(jù)輸入至所述大語言模型中,得到由所述大語言模型輸出的代碼的測試用例。
9、結(jié)合第一方面,在第一方面第一實施方式中,所述意圖理解結(jié)果通過訓(xùn)練好的語義理解模型得到,所述語義理解模型是基于樣本文本、樣本文本對應(yīng)的樣本意圖理解結(jié)果以及知識背景描述文本訓(xùn)練得到的,所述知識背景描述文本表征針對請求文本所對應(yīng)的知識背景領(lǐng)域的自然語言描述的特征信息。
10、結(jié)合第一方面第一實施方式,在第一方面第二實施方式中,所述意圖理解結(jié)果通過以下步驟得到:
11、將所述代碼開發(fā)請求轉(zhuǎn)換為請求文本;
12、將所述請求文本輸入至訓(xùn)練好的所述語義理解模型中,得到由語義理解模型輸出的意圖理解結(jié)果。
13、結(jié)合第一方面第二實施方式,在第一方面第三實施方式中,所述語義理解模型通過以下步驟訓(xùn)練得到:
14、獲取所述樣本文本,并確定所述樣本文本的所述樣本意圖理解結(jié)果;
15、將所述樣本文本與預(yù)設(shè)知識庫進(jìn)行匹配,得到所述樣本文本對應(yīng)的所述知識背景描述文本;
16、將所述樣本文本以及所述知識背景描述文本作為訓(xùn)練使用的輸入數(shù)據(jù),將所述樣本意圖理解結(jié)果作為標(biāo)簽數(shù)據(jù),采用有監(jiān)督的訓(xùn)練方式,訓(xùn)練得到用于輸出代碼開發(fā)請求的意圖理解結(jié)果的語義理解模型。
17、結(jié)合第一方面,在第一方面第四實施方式中,所述基于業(yè)務(wù)邏輯處理流程,確定完成業(yè)務(wù)邏輯處理流程所需的關(guān)聯(lián)輸入?yún)?shù),具體包括:
18、基于業(yè)務(wù)邏輯處理流程,確定完成業(yè)務(wù)邏輯處理流程所需的流程特征;
19、基于所述流程特征,得到每一項關(guān)聯(lián)輸入?yún)?shù)的第一子參數(shù)和第二子參數(shù);所述第一子參數(shù)為必要的輸入?yún)?shù),所述第二子參數(shù)為非必要的輸入?yún)?shù)。
20、結(jié)合第一方面,在第一方面第五實施方式中,該方法中通過大語言模型對應(yīng)的langchain生成第一提詞器模板、第二提詞器模板、第一用戶消息模板、第二用戶消息模板、代碼生成鏈以及測試用例生成鏈:
21、結(jié)合第一方面,在第一方面第六實施方式中,該方法還包括以下步驟:
22、進(jìn)行代碼生成環(huán)境的部署,判定代碼生成系統(tǒng)的服務(wù)類型,并在服務(wù)類型滿足預(yù)設(shè)類型的情況下設(shè)定系統(tǒng)的標(biāo)準(zhǔn)資源的地址,并確定數(shù)據(jù)庫表結(jié)構(gòu)及標(biāo)準(zhǔn)資源的地址請求需要操作的至少一個數(shù)據(jù)庫表的列表。
23、根據(jù)第三方面,本發(fā)明實施例還提供一種代碼的自動生成裝置,所述裝置包括:
24、請求獲取模塊,用于獲取用戶的代碼開發(fā)請求;所述代碼開發(fā)請求中包括用戶指定的應(yīng)用場景以及應(yīng)用場景的全邏輯處理流程;
25、流程確定模塊,用于對所述代碼開發(fā)請求進(jìn)行語義意圖理解,得到意圖理解結(jié)果,并利用所述全邏輯處理流程以及所述意圖理解結(jié)果,與預(yù)設(shè)知識庫進(jìn)行匹配,對所述全邏輯處理流程進(jìn)行補全,生成業(yè)務(wù)邏輯處理流程;所述意圖理解結(jié)果表征對用戶代碼開發(fā)請求的個人意圖理解;
26、參數(shù)確定模塊,用于基于所述業(yè)務(wù)邏輯處理流程,確定完成業(yè)務(wù)邏輯處理流程所需的關(guān)聯(lián)輸入?yún)?shù);所述關(guān)聯(lián)輸入?yún)?shù)包括統(tǒng)一資源定位符路徑參數(shù)、表參數(shù)以及文本描述參數(shù);
27、數(shù)據(jù)調(diào)用模塊,用戶對所有所述關(guān)聯(lián)輸入?yún)?shù)均進(jìn)行回調(diào)調(diào)用處理,得到每一項關(guān)聯(lián)輸入?yún)?shù)的回調(diào)數(shù)據(jù),并利用已訓(xùn)練好的大語言模型的代碼生成鏈,分別生成回調(diào)數(shù)據(jù)的第一提詞器模板以及第一用戶消息模板;
28、代碼生成模塊,用于基于所述第一提詞器模板以及所述第一用戶消息模板對回調(diào)數(shù)據(jù)進(jìn)行處理,生成第一輸入數(shù)據(jù),并將第一輸入數(shù)據(jù)輸入至所述大語言模型中,得到由所述大語言模型輸出的代碼;所述第一輸入數(shù)據(jù)的上下文信息包含所述關(guān)聯(lián)輸入?yún)?shù)以及所述業(yè)務(wù)邏輯處理流程;
29、代碼測試模塊,用于利用所述大語言模型的測試用例生成鏈,分別生成所述代碼的第二提詞器模板以及第二用戶消息模板,基于所述第二提詞器模板以及所述第二用戶消息模板對所述代碼進(jìn)行處理,生成第二輸入數(shù)據(jù),并將所述第二輸入數(shù)據(jù)輸入至所述大語言模型中,得到由所述大語言模型輸出的代碼的測試用例。
30、根據(jù)第三方面,本發(fā)明實施例還提供一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)如上述任一種所述代碼的自動生成方法的步驟。
31、根據(jù)第四方面,本發(fā)明實施例還提供一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一種所述代碼的自動生成方法的步驟。
32、根據(jù)第五方面,本發(fā)明實施例還提供了一種計算機程序產(chǎn)品,包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一項所述代碼的自動生成方法的步驟。
33、本發(fā)明的代碼的自動生成方法、裝置、設(shè)備及介質(zhì),通過對用戶代碼開發(fā)請求進(jìn)行語義意圖理解,得到意圖理解結(jié)果,并對全邏輯處理流程進(jìn)行補全得到業(yè)務(wù)邏輯處理流程,再基于業(yè)務(wù)邏輯處理流程,確定完成業(yè)務(wù)邏輯處理流程所需的關(guān)聯(lián)輸入?yún)?shù),通過理解每個用戶的具體要求,再挖掘用戶軟件開發(fā)過程中可能需要的關(guān)聯(lián)對象,以便于后續(xù)展示并實現(xiàn)更加豐富以及完善的處理流程以及各個處理流程對應(yīng)的處理返回結(jié)果,這樣可以像軟件開發(fā)人員一樣進(jìn)行邏輯推理,根據(jù)輸入、輸出、數(shù)據(jù)源的結(jié)構(gòu),結(jié)合需求的文本描述,提供了更大的靈活性和擴展性,再利用大語言模型的邏輯推理能力,通過構(gòu)建恰當(dāng)?shù)恼{(diào)用鏈,完成生成含邏輯處理的靈活代碼生成,同時能生成該代碼對應(yīng)的測試用例,從而提升軟件開發(fā)效率。與現(xiàn)有的只支持輸入一個結(jié)構(gòu)對象的代碼生成方案相比,可以根據(jù)輸入的多個關(guān)聯(lián)輸入?yún)?shù)和業(yè)務(wù)邏輯處理流程,動態(tài)生成多樣化的更加復(fù)雜且更加專業(yè)的代碼,通過這種自動化的代碼生成過程,可以大大提高開發(fā)效率,同時生成代碼的測試用例,從而提高測試效率,測試人員不再需要手動編寫測試用例,而可以直接使用生成的測試用例。