本發(fā)明涉及軟件開發(fā),尤其涉及一種人機(jī)混編的軟件開發(fā)方法。
背景技術(shù):
1、在大數(shù)據(jù)的驅(qū)動下,各種llm(large?language?model,大型語言模型)軟件開開發(fā)場景,尤其是gpt類模型展示出了強(qiáng)大的自然語言處理能力,包括代碼編寫能力。
2、復(fù)雜邏輯問題是現(xiàn)有l(wèi)lm的一大挑戰(zhàn),主流的方法是采用prompt+thought將復(fù)雜邏輯問題進(jìn)行分解,其中cot(chain?of?thought)逐步輸出推理的中間狀態(tài)以提高獲得正確推理結(jié)果的概率。scot(struct?chain?of?thought)是cot的特殊版本,利用sequence、branch、loop等結(jié)構(gòu)化的中間狀態(tài)強(qiáng)化了代碼生成的功能。cot-sc(chain?of?thought–self?consistency)則采用了多個(gè)cot并行計(jì)算然后投票表決的方法,提高了生成結(jié)果的穩(wěn)定性。使用多個(gè)無關(guān)的并行計(jì)算,cot-sc花費(fèi)了較多資源,因此tot(tree?of?thought)采取了樹狀可回溯推理的推理狀態(tài)轉(zhuǎn)換方法,并應(yīng)用dfs、bfs等算法進(jìn)行了搜索優(yōu)化。got則采用圖狀推理,通過prompter與parser與llm交互,利用llm或人類判斷對中間推理狀態(tài)進(jìn)行評分。除了以上多步推理的方式,還有試圖通過單步io進(jìn)行推理的aot,其將算法搜索與回溯過程在one?shot或few?shot中展示,僅需一次llm輸入輸出就能給出答案。
3、llm的另一大挑戰(zhàn)是長上下文輸入。模型外推能力是使用比訓(xùn)練時(shí)樣本更長的長度進(jìn)行推理的能力,外推更長的token序列導(dǎo)致了注意力分布更均勻,與訓(xùn)練過程存在差異,會影響生成效果。alibi提出了一種光滑注意力的方法,在計(jì)算注意力分?jǐn)?shù)時(shí)引入了相對位置參數(shù),弱化了注意力泛化的影響。除了直接優(yōu)化局部注意力,另一個(gè)優(yōu)化外推能力的方法是改進(jìn)位置編碼,rope(rotary?of?position?embedding)使用旋轉(zhuǎn)的位置編碼獲得了少量的模型外推的能力,能外推10%長度而效果不變差。位置內(nèi)插法在rope的基礎(chǔ)上將整數(shù)位置編碼m轉(zhuǎn)換為ml/l’,其中l(wèi)’代表更長的上下文窗口,該方法使位置編碼不會超出訓(xùn)練時(shí)使用的范圍與位置內(nèi)插類似,codellama將循環(huán)周期θ從10000增加到1000000,并在fine-tuning階段就運(yùn)用該策略。ntk-aware?scaled?rope則將直接外推與位置內(nèi)插法結(jié)合起來,構(gòu)造出了高頻外推低頻內(nèi)插的scale公式,在不用fine-tuning的情況下獲得了與其他需要fine-tuning的方法相近的能力。
4、為了提升llm的代碼生成能力,除了提升解決復(fù)雜邏輯問題與長文本輸入的能力,還需要針對代碼場景與工程場景進(jìn)行優(yōu)化。例如,通過psm與spm訓(xùn)練可以使模型獲得代碼填充的能力。starcoder通過引入<|endoftext|>、<fim_suffix>、<jupyter_start>等special?token對各種代碼結(jié)構(gòu)進(jìn)行了訓(xùn)練,優(yōu)化了模型對代碼模塊的處理能力。metagpt則從工程角度構(gòu)建了multi-agent形式的llm,讓gpt4擔(dān)任工程項(xiàng)目中的產(chǎn)品經(jīng)理、架構(gòu)師、項(xiàng)目經(jīng)理、工程師、qa等角色,涵蓋工程項(xiàng)目的需求分析、架構(gòu)設(shè)計(jì)、系統(tǒng)設(shè)計(jì)、代碼編寫、功能測試等方面,能夠通過原始項(xiàng)目描述自動生成一系列項(xiàng)目文件。
5、盡管llm在代碼生成領(lǐng)域有上述諸多進(jìn)展,但將llm應(yīng)用于實(shí)際工程項(xiàng)目仍是困難的,一方面是由于實(shí)際工程項(xiàng)目的代碼量臺大對,超出了現(xiàn)有模型的外推能力,另一方面是由于實(shí)際工程項(xiàng)目中人機(jī)交互的復(fù)雜性,人類工程師在使用llm時(shí)無法在單次輸入中提供復(fù)雜的前提條件。且現(xiàn)有的代碼機(jī)器人大多是代碼生成機(jī)器人,只能夠提高程序員的編碼速度。而在軟件開發(fā)項(xiàng)目中,代碼在交付前還需經(jīng)過測試、驗(yàn)證等流程?,F(xiàn)有的代碼機(jī)器人在協(xié)助人進(jìn)行測試、質(zhì)量控制方面上有明顯不足。
技術(shù)實(shí)現(xiàn)思路
1、為了克服上述技術(shù)缺陷,本發(fā)明的目的在于提供一種在人類的便捷控制下利用機(jī)器人提高效率的人機(jī)混合編程團(tuán)隊(duì)的任務(wù)發(fā)布、接取與調(diào)度方法。
2、本發(fā)明公開了一種人機(jī)混編的軟件開發(fā)方法,包括如下步驟:將軟件開發(fā)活動劃分為若干個(gè)任務(wù),為所述任務(wù)建立任務(wù)消息,并為所述任務(wù)消息配置消息格式,為所述任務(wù)消息拉取所對應(yīng)任務(wù)的任務(wù)屬性;人類或機(jī)器人將所述任務(wù)消息發(fā)放至任務(wù)池;機(jī)器人在所述任務(wù)池中進(jìn)行任務(wù)篩選以識別目標(biāo)任務(wù)并領(lǐng)??;機(jī)器人獲取所述目標(biāo)任務(wù)的內(nèi)容,運(yùn)行所述目標(biāo)任務(wù)。
3、優(yōu)選的,所述機(jī)器人在所述任務(wù)池中進(jìn)行任務(wù)篩選以識別目標(biāo)任務(wù)并領(lǐng)取包括:所述機(jī)器人在所述任務(wù)池中根據(jù)機(jī)器人的角色標(biāo)簽、屬性標(biāo)簽、資源度量值以及任務(wù)的優(yōu)先級進(jìn)行任務(wù)篩選以識別目標(biāo)任務(wù)并領(lǐng)取。
4、優(yōu)選的,所述機(jī)器人在所述任務(wù)池中根據(jù)所述屬性標(biāo)簽進(jìn)行任務(wù)篩選以識別目標(biāo)任務(wù)并領(lǐng)取包括:所述屬性標(biāo)簽包括大型語言模型以及大型語言模型的操作方法,機(jī)器人基于自身的所述屬性標(biāo)簽獲取與所述任務(wù)池中的所有任務(wù)的適配度,剔除適配度小于預(yù)設(shè)閾值的任務(wù),得到可領(lǐng)取任務(wù)集。
5、優(yōu)選的,所述機(jī)器人在所述任務(wù)池中根據(jù)所述屬性標(biāo)簽進(jìn)行任務(wù)篩選以識別目標(biāo)任務(wù)并領(lǐng)取包括:將所述可領(lǐng)取任務(wù)集根據(jù)所述適配度從高到低進(jìn)行排序,依次領(lǐng)取所述可領(lǐng)取任務(wù)集中的任務(wù)作為所述目標(biāo)任務(wù)。
6、優(yōu)選的,所述將所述可領(lǐng)取任務(wù)集根據(jù)所述適配度從高到低進(jìn)行排序之前還包括:機(jī)器人在所述任務(wù)池中根據(jù)所述任務(wù)的優(yōu)先級進(jìn)行任務(wù)篩選,其中:將所述可領(lǐng)取任務(wù)集根據(jù)任務(wù)的優(yōu)先級從高到低進(jìn)行排序,所述優(yōu)先級包括若干個(gè)緊急等級,從而獲取所述若干個(gè)不同緊急等級的任務(wù)集;依次領(lǐng)取所述若干個(gè)不同緊急等級的任務(wù)集;其中,在同一所述緊急等級的任務(wù)集中,根據(jù)所述適配度從高到低進(jìn)行排序,機(jī)器人依次領(lǐng)取所述同一所述緊急等級的任務(wù)集中的任務(wù)作為所述目標(biāo)任務(wù)。
7、優(yōu)選的,所述機(jī)器人在所述任務(wù)池中根據(jù)所述屬性標(biāo)簽任務(wù)的優(yōu)先級進(jìn)行任務(wù)篩選之前還包括:機(jī)器人在所述任務(wù)池中根據(jù)所述角色標(biāo)簽、和所述資源度量值進(jìn)行任務(wù)篩選,以匹配獲取與所述角色標(biāo)簽相對應(yīng)且所述資源度量值滿足運(yùn)行的任務(wù)。
8、優(yōu)選的,所述機(jī)器人在所述任務(wù)池中進(jìn)行任務(wù)篩選以識別目標(biāo)任務(wù)并領(lǐng)取包括:機(jī)器人實(shí)時(shí)檢測所述任務(wù)池中的任務(wù)情況;若所述任務(wù)池中添加了新任務(wù),則機(jī)器人主動在所述在所述任務(wù)池中進(jìn)行任務(wù)篩選以識別目標(biāo)任務(wù)并領(lǐng)??;當(dāng)機(jī)器人處理完所述目標(biāo)任務(wù)處于空閑狀態(tài)時(shí),則主動在所述在所述任務(wù)池中進(jìn)行任務(wù)篩選以識別目標(biāo)任務(wù)并領(lǐng)取。
9、優(yōu)選的,所述為所述任務(wù)消息拉取所對應(yīng)任務(wù)的任務(wù)屬性包括:根據(jù)上下文環(huán)境為所述任務(wù)消息拉取所對應(yīng)任務(wù)的任務(wù)屬性;所述上下文環(huán)境包括軟件開發(fā)測試環(huán)境和軟件開發(fā)環(huán)境;其中:當(dāng)為軟件開發(fā)測試環(huán)境時(shí),在代碼編輯窗口中通過對話框的形式編寫需求并發(fā)布測試類的任務(wù),或通過快捷鍵針對選中的代碼發(fā)布測試類的任務(wù);當(dāng)為軟件開發(fā)環(huán)境時(shí),通過編寫文件或函數(shù)來發(fā)布任務(wù)。
10、優(yōu)選的,所述通過對話框的形式編寫需求并發(fā)布的測試類的任務(wù)的優(yōu)先級的等級為最高優(yōu)先級;當(dāng)所述任務(wù)池接收到該任務(wù),將中斷機(jī)器人正在執(zhí)行的其他優(yōu)先級的任務(wù)。
11、優(yōu)選的,所述通過編寫文件或函數(shù)來發(fā)布任務(wù)包括:根據(jù)功能模塊需求文檔拉取任務(wù)的功能,根據(jù)類與接口設(shè)計(jì)圖拉取任務(wù)的函數(shù)接口。
12、采用了上述技術(shù)方案后,與現(xiàn)有技術(shù)相比,具有以下有益效果:
13、1.本發(fā)明設(shè)置由機(jī)器人承擔(dān)一部分軟件開發(fā)活動,使機(jī)器人部分承擔(dān)架構(gòu)設(shè)計(jì)、軟件開發(fā)、測試等方面的任務(wù),減輕軟件工程人員在項(xiàng)目開發(fā)中的勞動負(fù)擔(dān)(包括個(gè)人的重復(fù)勞動、集體的重復(fù)勞動,例如某個(gè)程序員沒寫過卻被很多位其他程序員寫過的排序算法),使人類能將精力集中在創(chuàng)新與管理上;
14、2.通過設(shè)置機(jī)器人在任務(wù)池中領(lǐng)取任務(wù)時(shí)對任務(wù)進(jìn)行篩選,一方面可以保證機(jī)器人執(zhí)行任務(wù)過程的順利進(jìn)行,另一方面可以有效提高機(jī)器人執(zhí)行任務(wù)的效率。