本技術(shù)涉及計(jì)算機(jī),尤其涉及一種代碼推薦方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、在代碼開發(fā)場(chǎng)景下,開發(fā)人員進(jìn)行代碼開發(fā)的過程中,一般需要開發(fā)人員依靠鼠標(biāo)和鍵盤進(jìn)行代碼編寫。代碼編寫的速度完全依賴于軟件工程師對(duì)鼠標(biāo)和鍵盤的熟練度,且每次操作均有延遲,導(dǎo)致整個(gè)代碼開發(fā)過程中的交互效率和代碼編寫效率較低。
2、相關(guān)技術(shù)中,為了簡(jiǎn)化代碼開發(fā)過程,逐漸開始采用智能代碼補(bǔ)全和代碼生成工具輔助開發(fā)人員進(jìn)行代碼開發(fā)。這些工具通常采用機(jī)器學(xué)習(xí)技術(shù),特別是自然語言處理(nlp)模型,來預(yù)測(cè)和推薦代碼片段。然而,因?yàn)槟P秃陀布Y源的限制,往往會(huì)由于代碼文件過長(zhǎng)而不能很好的處理,例如可能造成處理器顯存報(bào)錯(cuò)崩潰,或者代碼直接被隨意截?cái)鄬?dǎo)致代碼語義不全,可能會(huì)造成模型的幻覺問題,或者代碼重復(fù)生成以及生成錯(cuò)誤等問題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供了一種代碼推薦方法、裝置、設(shè)備及介質(zhì),既在一定程度上確保目標(biāo)相關(guān)代碼信息與光標(biāo)信息的相關(guān)性的同時(shí),提高光標(biāo)信息對(duì)應(yīng)目標(biāo)相關(guān)代碼信息的提取效率,又通過輸入具有完整語義的目標(biāo)相關(guān)代碼信息來提高利用目標(biāo)大模型進(jìn)行代碼推薦過程與光標(biāo)上下文的關(guān)聯(lián)性,保持目標(biāo)大模型進(jìn)行代碼推薦過程中語義理解地完整性,提高代碼推薦地準(zhǔn)確性。上述技術(shù)方案如下:
2、第一方面,本技術(shù)實(shí)施例提供了一種代碼推薦方法,上述方法包括:
3、獲取編輯器中的光標(biāo)信息;上述光標(biāo)信息包括光標(biāo)位置;
4、根據(jù)上述光標(biāo)信息和上述編輯器中當(dāng)前文件的代碼結(jié)構(gòu)信息,從上述當(dāng)前文件中提取上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息;上述目標(biāo)相關(guān)代碼信息包括上述光標(biāo)信息對(duì)應(yīng)具有完整語義的目標(biāo)相關(guān)代碼段;上述目標(biāo)相關(guān)代碼段包括以下至少一種:上述光標(biāo)位置對(duì)應(yīng)的目標(biāo)上文相關(guān)代碼段、目標(biāo)下文相關(guān)代碼段;
5、將上述光標(biāo)信息和上述目標(biāo)相關(guān)代碼信息輸入目標(biāo)大模型,得到上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)推薦代碼信息。
6、在一種可能的實(shí)現(xiàn)方式中,上述根據(jù)上述光標(biāo)信息和上述編輯器中當(dāng)前文件的代碼結(jié)構(gòu)信息,從上述當(dāng)前文件中提取上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息,包括:
7、根據(jù)上述編輯器中當(dāng)前文件的代碼結(jié)構(gòu)信息,確定上述當(dāng)前文件中上述光標(biāo)位置所在的目標(biāo)類代碼范圍;
8、從上述當(dāng)前文件的目標(biāo)類代碼范圍內(nèi)提取上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息。
9、在一種可能的實(shí)現(xiàn)方式中,上述從上述當(dāng)前文件的目標(biāo)類代碼范圍內(nèi)提取上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息,包括:
10、在上述目標(biāo)類代碼范圍的代碼長(zhǎng)度小于或等于閾值的情況下,根據(jù)上述目標(biāo)類代碼范圍的第一起始位置和上述光標(biāo)位置確定上述目標(biāo)上文相關(guān)代碼段,和/或,根據(jù)上述目標(biāo)類代碼范圍的第一結(jié)束位置和上述光標(biāo)位置確定上述目標(biāo)下文相關(guān)代碼段;
11、在上述目標(biāo)類代碼范圍的代碼長(zhǎng)度大于上述閾值的情況下,確定上述光標(biāo)位置在上述目標(biāo)類代碼范圍內(nèi)對(duì)應(yīng)的目標(biāo)函數(shù)信息;
12、在上述目標(biāo)函數(shù)信息小于或等于上述閾值的情況下,根據(jù)上述目標(biāo)函數(shù)信息的第二起始位置和上述光標(biāo)位置確定上述目標(biāo)上文相關(guān)代碼段,和/或,根據(jù)上述目標(biāo)函數(shù)信息的第二結(jié)束位置和上述光標(biāo)位置確定上述目標(biāo)下文相關(guān)代碼段。
13、在一種可能的實(shí)現(xiàn)方式中,上述根據(jù)上述光標(biāo)信息和上述編輯器中當(dāng)前文件的代碼結(jié)構(gòu)信息,從上述當(dāng)前文件中提取上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息,包括:
14、根據(jù)上述編輯器中當(dāng)前文件的代碼結(jié)構(gòu)信息,確定上述當(dāng)前文件中上述光標(biāo)位置所在的目標(biāo)類代碼范圍;
15、根據(jù)上述目標(biāo)類代碼范圍的代碼長(zhǎng)度,從上述當(dāng)前文件的目標(biāo)類代碼范圍內(nèi)提取上述光標(biāo)信息對(duì)應(yīng)的初始相關(guān)代碼信息;
16、根據(jù)上述目標(biāo)類代碼范圍內(nèi)的第一函數(shù)變量信息對(duì)上述當(dāng)前文件中上述目標(biāo)類代碼范圍之外的第二函數(shù)變量信息進(jìn)行過濾,得到與上述第一函數(shù)變量信息相關(guān)的目標(biāo)函數(shù)變量信息;
17、根據(jù)上述初始相關(guān)代碼信息和上述目標(biāo)函數(shù)變量信息確定上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息。
18、在一種可能的實(shí)現(xiàn)方式中,上述將上述光標(biāo)信息和上述目標(biāo)相關(guān)代碼信息輸入目標(biāo)大模型,得到上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)推薦代碼信息之前,上述方法還包括:
19、在上述當(dāng)前文件對(duì)應(yīng)的文本長(zhǎng)度小于或等于閾值的情況下,將上述當(dāng)前文件對(duì)應(yīng)的全文信息確定為上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息;
20、在上述當(dāng)前文件對(duì)應(yīng)的文本長(zhǎng)度大于上述閾值的情況下,執(zhí)行上述根據(jù)上述光標(biāo)信息和上述編輯器中當(dāng)前文件的代碼結(jié)構(gòu)信息,從上述當(dāng)前文件中提取上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息的步驟。
21、在一種可能的實(shí)現(xiàn)方式中,上述將上述光標(biāo)信息和上述目標(biāo)相關(guān)代碼信息輸入目標(biāo)大模型,得到上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)推薦代碼信息之前,上述方法還包括:
22、在上述光標(biāo)位置不位于上述當(dāng)前文件的任意函數(shù)范圍內(nèi)或只位于上述當(dāng)前文件的類函數(shù)范圍內(nèi)或不位于上述當(dāng)前文件中的任意子元素內(nèi)的情況下,根據(jù)上述當(dāng)前文件對(duì)應(yīng)的函數(shù)信息集以及上述光標(biāo)位置確定上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息;
23、和/或
24、在上述當(dāng)前文件為指定語言類文件的情況下,將上述當(dāng)前文件中光標(biāo)位置對(duì)應(yīng)預(yù)設(shè)上下文行數(shù)的代碼信息確定為上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息。
25、在一種可能的實(shí)現(xiàn)方式中,上述將上述光標(biāo)信息和上述目標(biāo)相關(guān)代碼信息輸入目標(biāo)大模型,得到上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)推薦代碼信息之后,上述方法還包括:
26、確定上述目標(biāo)推薦代碼信息對(duì)應(yīng)的目標(biāo)推薦代碼長(zhǎng)度;
27、根據(jù)上述光標(biāo)位置和上述目標(biāo)推薦代碼長(zhǎng)度,按照預(yù)設(shè)顯示方式在上述編輯器對(duì)應(yīng)的編輯界面中顯示上述目標(biāo)推薦代碼信息。
28、第二方面,本技術(shù)實(shí)施例提供了一種代碼推薦裝置,上述代碼推薦裝置包括:
29、獲取模塊,用于獲取模塊,用于獲取編輯器中的光標(biāo)信息;上述光標(biāo)信息包括光標(biāo)位置;
30、提取模塊,用于根據(jù)上述光標(biāo)信息和上述編輯器中當(dāng)前文件的代碼結(jié)構(gòu)信息,從上述當(dāng)前文件中提取上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)相關(guān)代碼信息;上述目標(biāo)相關(guān)代碼信息包括上述光標(biāo)信息對(duì)應(yīng)具有完整語義的目標(biāo)相關(guān)代碼段;上述目標(biāo)相關(guān)代碼段包括以下至少一種:上述光標(biāo)位置對(duì)應(yīng)的目標(biāo)上文相關(guān)代碼段、目標(biāo)下文相關(guān)代碼段;
31、代碼推薦模塊,用于將上述光標(biāo)信息和上述目標(biāo)相關(guān)代碼信息輸入目標(biāo)大模型,得到上述光標(biāo)信息對(duì)應(yīng)的目標(biāo)推薦代碼信息。
32、第三方面,本技術(shù)實(shí)施例提供了一種電子設(shè)備,包括:處理器以及存儲(chǔ)器;
33、上述處理器與上述存儲(chǔ)器相連;
34、上述存儲(chǔ)器,用于存儲(chǔ)可執(zhí)行程序代碼;
35、上述處理器通過讀取上述存儲(chǔ)器中存儲(chǔ)的可執(zhí)行程序代碼來運(yùn)行與上述可執(zhí)行程序代碼對(duì)應(yīng)的程序,以用于執(zhí)行本說明書實(shí)施例第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式提供的方法。
36、第四方面,本說明書實(shí)施例提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),上述計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有多條指令,上述指令適于由處理器加載并執(zhí)行本說明書實(shí)施例第一方面或第一方面的任意一種可能的實(shí)現(xiàn)方式提供的方法。
37、在本技術(shù)一個(gè)或多個(gè)實(shí)施例中,一方面,根據(jù)編輯器中的光標(biāo)信息和編輯器中當(dāng)前文件的代碼結(jié)構(gòu)信息,從當(dāng)前文件中提取光標(biāo)信息對(duì)應(yīng)具有完整語義的目標(biāo)上文相關(guān)代碼段、目標(biāo)下文相關(guān)代碼段等目標(biāo)相關(guān)代碼信息(目標(biāo)相關(guān)代碼段),從而既通過只對(duì)當(dāng)前文件進(jìn)行提取,而不是整個(gè)目標(biāo)項(xiàng)目文件進(jìn)行提取,使得需要分析的代碼相對(duì)于整個(gè)目標(biāo)項(xiàng)目工程的代碼較少,在一定程度上確保目標(biāo)相關(guān)代碼信息與光標(biāo)信息的相關(guān)性的同時(shí),提高了光標(biāo)信息對(duì)應(yīng)目標(biāo)相關(guān)代碼信息的提取效率,又可以根據(jù)編輯器中光標(biāo)所在當(dāng)前文件的代碼結(jié)構(gòu)信息實(shí)現(xiàn)光標(biāo)位置對(duì)應(yīng)完整語義代碼信息的提??;另一方面,將光標(biāo)信息和具有完整語義的目標(biāo)相關(guān)代碼信息輸入目標(biāo)大模型,通過具有完整語義的目標(biāo)相關(guān)代碼信息輔助目標(biāo)大模型生成光標(biāo)信息對(duì)應(yīng)的目標(biāo)推薦代碼信息,既減小目標(biāo)大模型輸入的代碼長(zhǎng)度,避免光標(biāo)所在當(dāng)前文件過長(zhǎng)且直接輸入目標(biāo)大模型可能造成處理器顯存報(bào)錯(cuò)崩潰,或者代碼直接被隨意截?cái)鄬?dǎo)致代碼語義不全,可能會(huì)造成模型的幻覺問題,或者代碼重復(fù)生成以及生成錯(cuò)誤等問題,提高目標(biāo)大模型生成目標(biāo)推薦代碼信息的效率,又通過輸入具有完整語義的目標(biāo)相關(guān)代碼信息來提高利用目標(biāo)大模型進(jìn)行代碼推薦過程與光標(biāo)上下文的關(guān)聯(lián)性,保持目標(biāo)大模型進(jìn)行代碼推薦過程中語義理解地完整性,提高代碼推薦地準(zhǔn)確性,進(jìn)而利用目標(biāo)大模型輔助開發(fā)人員實(shí)現(xiàn)人工智能(artificial?intelligence,ai)辦公。
38、上述說明僅是本技術(shù)技術(shù)方案的概述,為了能夠更清楚了解本技術(shù)的技術(shù)手段而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。