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