GPT-4自我修復(fù)!國(guó)外小哥開發(fā)神級(jí)「金剛狼」,無(wú)限自我Debug
要問程序員,一天中最煩的時(shí)候是什么?
那一定是給寫好的程序Debug了。而現(xiàn)在,這種局面要得到改善了!
國(guó)外一名叫BioBootloader的開發(fā)者基于GPT-4搞了一個(gè)叫「金剛狼」的項(xiàng)目,能夠自我修復(fù)Python腳本。
從名字就能看出來(lái),這項(xiàng)目主打一個(gè)「自我愈合」。通過GPT識(shí)別代碼中的錯(cuò)誤,并提供修改,直至程序順利運(yùn)行。
不過,「金剛狼」目前只能用在Python上。
這項(xiàng)目已經(jīng)在GitHub上收攬了1.2k星,108個(gè)Fork。
金剛狼?金剛狼!
BioBootloader表示,用「金剛狼」運(yùn)行你的程序,只要一崩潰,GPT-4就會(huì)自動(dòng)編輯,然后給出出錯(cuò)的原因。
哪怕碼農(nóng)寫了一大堆Bug,也沒事。「金剛狼」會(huì)反復(fù)運(yùn)行,直到一切Bug都被De掉。
GPT-4想必大家都不陌生。這是由OpenAI開發(fā)的多模態(tài)人工智能語(yǔ)言模型。
BioBootloader在推特上的演示視頻中,展示了「金剛狼」的具體使用方式。
視頻中,開發(fā)者先寫了個(gè)簡(jiǎn)單的四則運(yùn)算代碼,然后故意把其中一些部分寫錯(cuò)。
(正確的)
比方說,把結(jié)尾的return result隨便改成return res,而res沒有定義,于是就出錯(cuò)了。
小哥還把減法部分的代碼刪掉了,就是上方的substract_numbers。這樣一來(lái),下面calculate那里就一定會(huì)報(bào)錯(cuò)。因?yàn)閟ubtract沒有定義了。
(錯(cuò)誤的)
之后直接運(yùn)行「金剛狼」即可,GPT生成的部分會(huì)出現(xiàn)在右側(cè)。
可以看到,「金剛狼」快速識(shí)別出了錯(cuò)誤,并且附上了解釋。
「腳本中沒有定義subtract_numbers.
res這個(gè)變量沒有定義,應(yīng)該用result代替?!?/span>
不光給了建議,「金剛狼」還直接把改好的代碼附上了。紅色是應(yīng)該刪掉的部分,綠色是添加的部分。
實(shí)際上,「金剛狼」是一個(gè)封裝器,它負(fù)責(zé)運(yùn)行程序,捕捉錯(cuò)誤信息,再把這些錯(cuò)誤發(fā)送給GPT-4,詢問GPT代碼出了什么問題。
像GPT-4這種LLM(即大型語(yǔ)言模型),是用自然語(yǔ)言「編程」的,而這些指令被視為prompts。
「金剛狼」所實(shí)現(xiàn)的功能很大一部分要?dú)w功于精心編寫的提示,閱讀這些提示就可以更好的理解整個(gè)過程。
目前該項(xiàng)目已經(jīng)發(fā)布在了GitHub上。小哥也是貼心的給出了設(shè)置上的要求。
不止是Python
在GitHub上,BioBootloader發(fā)布了自己未來(lái)的計(jì)劃,「金剛狼」的功能會(huì)越來(lái)越全面、強(qiáng)大。
「目前的版本只是我花了幾個(gè)小時(shí)搞得一個(gè)原型產(chǎn)品。未來(lái)還會(huì)有很多可能的延展,同時(shí)歡迎大家一起來(lái)開發(fā)?!?/span>
- 添加標(biāo)志來(lái)定制使用方法,例如在運(yùn)行改變的代碼前要求用戶確認(rèn)。
- 對(duì)GPT的編輯格式進(jìn)行進(jìn)一步的迭代。目前,GPT在縮進(jìn)方面有點(diǎn)困難,但我確信這一點(diǎn)可以得到改善。
- 一套有問題的文件的例子,我們可以在上方的測(cè)試進(jìn)行提示,以確保其可靠性,并衡量改進(jìn)的如何。
- 多個(gè)文件/代碼庫(kù)——向GPT發(fā)送堆棧跟蹤中出現(xiàn)的所有文件
- 對(duì)大文件更好地處理,即我們是否應(yīng)該只向GPT發(fā)送相關(guān)的類/函數(shù)?
- 擴(kuò)展到Python以外的編程語(yǔ)言
從上面那個(gè)簡(jiǎn)單的例子可以看出來(lái),這個(gè)腳本還是未來(lái)可期的。
畢竟,總不能讓用別的語(yǔ)言工作的碼農(nóng)們看著智能Debug Python的「金剛狼」眼紅呀。