Devin官方Bloghttps://www.cognition-labs.com/blog
先說結(jié)論
最近一個(gè)十人團(tuán)隊(duì)的初創(chuàng)公司公布的人工智能模型Devin火了一把,因?yàn)槠湫Q其是首個(gè)人工智能軟件工程師。鋪天蓋地的公眾號消息無一不打著“程序員干掉了自己的飯碗”的口號在為其賣力宣傳著。實(shí)際效果如何,以下是我根據(jù)上面官方博客的介紹和幾個(gè)演示視頻得來的一些看法。
1、如果你有明確的目標(biāo),可以讓Devin做一些嘗試。
在演示視頻中,大部分的要求都需要人類做出明確的指示,比如去哪里獲取資料,做一個(gè)什么樣的軟件,有些類似需求溝通的過程。這要求人類需要了解如何與Devin進(jìn)行有效溝通。
2、Devin未必能對存量項(xiàng)目進(jìn)行梳理和重構(gòu)
Devin的執(zhí)行過程還是類似通過對任務(wù)進(jìn)行分解,然后帶著目的一步步的去執(zhí)行。這適合于沒有歷史包袱的開創(chuàng)性任務(wù),比如演示中的做一個(gè)小游戲、生成一張hidden text的圖像等。但存量項(xiàng)目中牽扯太多隱含邏輯和大量代碼,Devin未必可以勝任。
3、Devin沒有自我驅(qū)動(dòng)的能力
Devin的每一步思考都需要人工參與,比如需要給他指出哪里不夠好,哪里有bug,這樣他才會(huì)去定位、去分析。即使是演示視頻3中對開源項(xiàng)目編寫測試用例并進(jìn)行調(diào)試和bug修復(fù),一開始也需要人為告知其具體是哪一段代碼可能有問題,或者給他提供issues信息、readme信息。
總體而言,Devin最大的突破是long-term reasoning and planning,其他的部分比如為其配備的workspace,隨時(shí)上報(bào)進(jìn)度并進(jìn)行交流這些仍然是GPT或者是類AutoGPT的內(nèi)容。如果希望其真正具有一個(gè)Software Engineer的素質(zhì),還有很多努力需要做。正如Cognition博客最后說的,建立Devin只是第一步,最艱難的挑戰(zhàn)還在后面。
官方案例
截止2024-03-14,官網(wǎng)上的演示視頻有如下幾個(gè)。
- 在閱讀了一篇博客文章后,Devin在Modal上運(yùn)行ControlNet,為Sara制作隱藏信息的圖像。YouTube
- Devin制作了一個(gè)模擬生命游戲的互動(dòng)網(wǎng)站!它會(huì)增量地添加用戶要求的功能,然后將應(yīng)用程序部署到netflix上。YouTube
- Devin可以自主地發(fā)現(xiàn)和修復(fù)代碼庫中的錯(cuò)誤。Devin幫助開發(fā)者維護(hù)和調(diào)試開源項(xiàng)目。YouTube
- Devin可以訓(xùn)練和微調(diào)自己的AI模型。?Devin為一個(gè)大型語言模型設(shè)置了微調(diào),只給GitHub上一個(gè)模型庫的鏈接,他可以自己拉取模型,閱讀README,根據(jù)文檔描述構(gòu)建環(huán)境并執(zhí)行微調(diào)。在微調(diào)報(bào)錯(cuò)后,他也能判斷出是環(huán)境問題還是代碼問題,并快速修復(fù)。YouTube
- Devin可以解決代碼庫中的bug和功能要求。只要提供一個(gè)github issue的鏈接,Devin就會(huì)完成所需的所有設(shè)置和上下文收集。YouTube
- Devin可以為成熟的生產(chǎn)代碼庫做出貢獻(xiàn)。?Devin解決了sympy Python代數(shù)系統(tǒng)中對數(shù)計(jì)算的錯(cuò)誤。要知道這個(gè)項(xiàng)目代碼量有68萬行。YouTube
- 甚至可以讓Devin在UpWork上完成一個(gè)真正的工作,比如搭建一個(gè)圖像識別的人工智能模型。YouTube
下面對其中比較有代表性的兩個(gè)案例進(jìn)行逐幀分析。
發(fā)現(xiàn)和修復(fù)代碼庫中的錯(cuò)誤
案例三中使用的代碼庫為github上開源的c++項(xiàng)目cp-book,代碼行數(shù)大約7265,但在案例六中,Devin也能處理更大代碼規(guī)模的項(xiàng)目,比如68萬行代碼的sympy。


首先,用戶明確告知Devin項(xiàng)目路徑、可能有bug的結(jié)構(gòu)體名稱、要求添加測試用例
可以從步驟列表中看出,Devin的規(guī)劃能力不錯(cuò),每一個(gè)步驟都是可執(zhí)行且相關(guān)的。更重要的是,Devin的規(guī)劃和執(zhí)行是嵌套進(jìn)行的,這一點(diǎn)從步驟中已經(jīng)包含了mod_constraint所在的modnum.hpp文件位置就可以看出來。就不知道Devin是用的什么技術(shù)來實(shí)現(xiàn)檢索和快速定位的了,RAG?Long-Term?Who knows?
用戶給出了詳細(xì)的測試用例,詳細(xì)到可以說任何開發(fā)者看了都明白如何寫的程度。
Devin在接收到要求后,幾乎立即就完成了測試用例的代碼編寫。
用戶在已有測試基礎(chǔ)上,提出了更高的要求,即用循環(huán)實(shí)現(xiàn)多輪隨機(jī)值的回歸測試。
這一次的回歸測試驗(yàn)證失敗,證明代碼中仍然存在bug
Devin在代碼中報(bào)錯(cuò)前的位置添加了打印輸出,來觀察變量和結(jié)果的變化
在打印的結(jié)果中,某個(gè)case的結(jié)果出現(xiàn)了負(fù)數(shù),而這個(gè)程序不應(yīng)該出現(xiàn)負(fù)數(shù)。很顯然,Devin也發(fā)現(xiàn)了這一點(diǎn),然后定位到導(dǎo)致出現(xiàn)負(fù)數(shù)的代碼行,修復(fù)這個(gè)bug后,再次執(zhí)行。
最終全部測試用例通過。
完成一個(gè)真正的工作
upwork是美國的一個(gè)自由職業(yè)平臺市場,Cognition的研究者希望看看Devin能否勝任一個(gè)真實(shí)的工作。
下面是研究者在upwork上找到的一個(gè)工作任務(wù),利用roadDamageDetection2020項(xiàng)目實(shí)現(xiàn)自動(dòng)識別道路毀壞程度。
這個(gè)項(xiàng)目看起來很有趣,但要將其運(yùn)行起來也有一定難度。
研究者將upwork上的工作要求原封不動(dòng)的轉(zhuǎn)給了Devin??梢钥吹剑珼evin知道需要拉取這個(gè)開源項(xiàng)目,并理解這個(gè)項(xiàng)目如何部署,比較有趣的是,Devin會(huì)分析完成這項(xiàng)任務(wù)可能的一些細(xì)節(jié),比如是否需要提供更多的圖像或數(shù)據(jù)。這是不是像極了小心翼翼的乙方。
Devin表示他會(huì)閱讀文檔和代碼來弄清楚如何安裝環(huán)境和運(yùn)行模型。下面的灰色小字意味著這時(shí)候Devin已經(jīng)有一個(gè)初始計(jì)劃了,并且已經(jīng)開始執(zhí)行。
通過初始計(jì)劃的執(zhí)行(閱讀理解文檔和代碼),Devin對該計(jì)劃進(jìn)行了進(jìn)一步的更新,可以看到這個(gè)計(jì)劃更加具有可執(zhí)行性和相關(guān)性。
接著可以看到他開始工作的過程,下面是拉取了roadDamageDetection2020到本地。
開始用pip install -r requirements.txt安裝環(huán)境。不出意外出了一個(gè)版本找不到的意外。
在Planner中可以看到Devin的規(guī)劃方式,那就是將要做的事列一個(gè)清單,把當(dāng)前要做的事當(dāng)成第一優(yōu)先級來進(jìn)行重點(diǎn)關(guān)注,比如現(xiàn)在他的關(guān)注點(diǎn)是解決依賴安裝的問題。
可以看到Devin將requirements中的torch版本改了。
隨著環(huán)境的變化,清單中的內(nèi)容也在不斷更新,已經(jīng)完成的工作有些被合并了,還有新的工作被添加了進(jìn)去。(比如上面的“set up the environment for running the models”任務(wù)就消失了)
在拉取sample數(shù)據(jù)后進(jìn)一步執(zhí)行又發(fā)現(xiàn)了一些問題。
Devin開始Debug,在代碼中插入print語句來打印關(guān)鍵變量的值。
定位到異常位置后,Devin很快修復(fù)了Bug。
一切就緒后,Devin將該項(xiàng)目運(yùn)行了起來。
Devin很快意識到項(xiàng)目跑起來,沒有model文件也不行,于是向研究人員提出要認(rèn)證信息用來獲取Google Drive網(wǎng)盤上的模型文件。
拿到認(rèn)證信息后,Devin又開始了新的計(jì)劃,下載模型文件、訓(xùn)練、驗(yàn)證、測試數(shù)據(jù)集...
經(jīng)過一系列的處理,最終Devin成功運(yùn)行了這個(gè)項(xiàng)目,并利用該項(xiàng)目完成了實(shí)例驗(yàn)證,對一些道路圖像做出了推理分析。而且詢問是否需要對一些圖像的檢測進(jìn)行一些可視化的處理,方便我們更好的理解分析結(jié)果。
研究員接受了這一建議,于是Devin返回了圖像和報(bào)告的鏈接。到這里,Devin已經(jīng)完成了UpWork所要求的所有工作!
文章來源:http://www.zghlxwxcb.cn/news/detail-850686.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-850686.html
到了這里,關(guān)于逐幀分析,Devin如何成為AI軟件開發(fā)者的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!