開發(fā)速率飆升20倍!GPT Pilot明星項(xiàng)目登Github熱榜,從0開始構(gòu)建AI
又一個(gè)明星項(xiàng)目誕生了!
GPT Pilot,一個(gè)AI開發(fā)者伴侶,可以從0開始構(gòu)建應(yīng)用程序,可以自己編寫代碼、配置開發(fā)環(huán)境、管理開發(fā)任務(wù)、調(diào)試代碼。
甚至,你可以隨時(shí)和它聊天提問(wèn),幫你解決開發(fā)難題。
圖片
項(xiàng)目地址:https://github.com/Pythagora-io/gpt-pilot
發(fā)布三個(gè)月,Github的熱度不斷增加,現(xiàn)在已經(jīng)有19k星。
圖片
代碼開發(fā),95%交給AI
在項(xiàng)目主頁(yè)的介紹中,GPT Pilot的目的是研究在開發(fā)人員監(jiān)督實(shí)施的同時(shí),GPT-4 可在多大程度上用于生成可完全正常運(yùn)行、可投入生產(chǎn)的應(yīng)用程序。
圖片
主要的想法是,人工智能可以為應(yīng)用程序編寫大部分代碼(可能是95%),但對(duì)于其余的5%,在我們獲得完整的AGI之前,現(xiàn)在和將來(lái)都需要開發(fā)人員。
圖片
那么它是具體如何工作的呢?開發(fā)者在一篇文章中具體介紹GPT Pilot工作流程。
GPT Pilot工作流程
首先,你需要輸入想要構(gòu)建的應(yīng)用程序的描述。
然后,GPT Pilot與GPT-4合作,明確應(yīng)用程序的要求,最后編寫代碼。它使用許多人工智能智能體,模仿開發(fā)機(jī)構(gòu)的工作流程。
圖片
- 在您描述完應(yīng)用程序后,「產(chǎn)品負(fù)責(zé)人」智能體會(huì)分解業(yè)務(wù)規(guī)格,并向你提問(wèn),以澄清任何不清楚的地方。
- 然后,「軟件架構(gòu)師」智能體分解技術(shù)要求,并列出將用于構(gòu)建應(yīng)用程序的技術(shù)。
- DevOps智能體根據(jù)體系結(jié)構(gòu)在機(jī)器上配置環(huán)境。
- 「技術(shù)團(tuán)隊(duì)首席」智能體將應(yīng)用程序開發(fā)流程分解為開發(fā)任務(wù),每個(gè)任務(wù)需要具備:
最后,開發(fā)人員和Code Monkey智能體一個(gè)接一個(gè)地處理任務(wù),開始編寫應(yīng)用程序。
開發(fā)人員將每個(gè)任務(wù)分解為較小的步驟,這些步驟是較低級(jí)別的技術(shù)要求,可能不需要人工審查或使用自動(dòng)測(cè)試(如安裝一些程序包)。
圖片
GPT Pilot三大支柱
支柱1:開發(fā)人員需要參與應(yīng)用程序的創(chuàng)建過(guò)程
當(dāng)前,我們離可以連接到CLI,并自行創(chuàng)建任何應(yīng)用程序的LLM還很遙遠(yuǎn)。
因此,為了讓AI生成一個(gè)完全正常工作的應(yīng)用程序,我們需要允許它與負(fù)責(zé)監(jiān)督開發(fā)過(guò)程的開發(fā)人員密切合作,并在AI編寫大部分代碼的同時(shí)擔(dān)任技術(shù)團(tuán)隊(duì)負(fù)責(zé)人。
因此,開發(fā)人員需要能夠隨時(shí)更改代碼,而GPT Pilot需要繼續(xù)處理這些更改。
以下是開發(fā)人員可以干預(yù)開發(fā)過(guò)程的領(lǐng)域:
在每個(gè)開發(fā)任務(wù)完成后,開發(fā)人員應(yīng)該檢查它并確保它按預(yù)期工作。
在每次失敗的測(cè)試或命令運(yùn)行之后-開發(fā)人員可能更容易調(diào)試一些東西。
支柱2:應(yīng)用程序需要一步一步地進(jìn)行編碼
圖片
和人類一樣,AI編碼肯定會(huì)犯錯(cuò)誤,所以為了讓它更容易地進(jìn)行調(diào)試,并讓開發(fā)人員了解生成的代碼中發(fā)生了什么,AI不應(yīng)該只是一次吐出整個(gè)代碼庫(kù)。
相反,應(yīng)用程序應(yīng)該像開發(fā)人員一樣一步一步地生成和調(diào)試。
如果GPT Pilot一步一步地創(chuàng)建一款應(yīng)用程序,人工智能和監(jiān)督它的開發(fā)人員都將能夠更容易地解決問(wèn)題,整個(gè)開發(fā)過(guò)程也將更加順利。
支柱3:GPT Pilot需要具有可擴(kuò)展性
GPT Pilot必須能夠創(chuàng)建可投入生產(chǎn)的大型應(yīng)用程序,而不僅僅是小型應(yīng)用程序,在小型應(yīng)用程序中,整個(gè)代碼庫(kù)都可以融入LLM環(huán)境。
問(wèn)題是,LLM 的所有學(xué)習(xí)都是在上下文中完成的。也許有一天,LLM可以針對(duì)每個(gè)具體項(xiàng)目進(jìn)行微調(diào),但現(xiàn)在看來(lái),這將是一個(gè)非常緩慢和冗余的過(guò)程。
GPT Pilot解決這個(gè)問(wèn)題的方式是使用上下文回溯(context rewinding)、遞歸對(duì)話和TDD。
上下文回溯
上下文回溯背后的想法相對(duì)簡(jiǎn)單,對(duì)于解決每個(gè)開發(fā)任務(wù),給LLM發(fā)送的第一條消息的上下文大小必須相對(duì)相同。
例如,在實(shí)現(xiàn)開發(fā)任務(wù)#5時(shí),大模型的第一條信息上下文大小必須與開發(fā)任務(wù)#50 時(shí)的第一條信息大致相同。
因此,在執(zhí)行每項(xiàng)任務(wù)時(shí),對(duì)話都需要回溯到第一條信息。
從本質(zhì)上講,當(dāng)GPT Pilot創(chuàng)建代碼時(shí),它會(huì)為編寫的每個(gè)代碼塊生成偽代碼,并為它需要?jiǎng)?chuàng)建的每個(gè)文件和文件夾創(chuàng)建描述。
圖片
遞歸對(duì)話
遞歸對(duì)話是與LLM的對(duì)話,如果GPT Pilot檢測(cè)到一個(gè)錯(cuò)誤,它需要對(duì)其進(jìn)行調(diào)試,但假設(shè)在調(diào)試過(guò)程中發(fā)生了另一個(gè)錯(cuò)誤。
然后,GPT Pilot需要停止調(diào)試第一個(gè)問(wèn)題,修復(fù)第二個(gè)問(wèn)題,然后重新開始修復(fù)第一個(gè)問(wèn)題。
開發(fā)者認(rèn)為,這是一個(gè)關(guān)鍵的概念,需要努力讓人工智能構(gòu)建大型且可擴(kuò)展的應(yīng)用程序。它的工作原理是回溯上下文,并分別解釋遞歸中的每個(gè)錯(cuò)誤。
一旦修復(fù)了最深層的錯(cuò)誤,我們就在遞歸中向上移動(dòng),并繼續(xù)修復(fù)錯(cuò)誤,直到整個(gè)遞歸完成。
TDD(測(cè)試驅(qū)動(dòng)開發(fā))
GPT Pilot要擴(kuò)展代碼庫(kù)、改進(jìn)代碼庫(kù)、更改需求和添加新功能,它需要能夠在不破壞以前編寫的代碼的情況下創(chuàng)建新代碼。
沒(méi)有比使用TDD方法更好的方法了。
對(duì)于GPT Pilot編寫的所有代碼,它需要編寫檢查代碼是否按預(yù)期工作的測(cè)試,以便無(wú)論何時(shí)進(jìn)行新的更改,都可以運(yùn)行所有回歸測(cè)試,以檢查是否有任何故障。
參考資料: