AI程序員哪家強?探索Devin、通義靈碼和SWE-agent的潛力
4月3日,距世界首個AI程序員Devin誕生不足一個月,普林斯頓大學的NLP團隊開發了一個開源AI程序員SWE-agent,它利用GPT-4模型在GitHub存儲庫中自動解決問題。SWE-agent在SWE-bench測試集上的表現與Devin相似,平均耗時93秒,解決了12.29%的問題。SWE-agent通過與專用終端交互,可以打開、搜索文件內容,使用自動語法檢查、編輯特定行,以及編寫和執行測試。
SWE-agent的智能體-計算機接口(ACI)設計簡化了大模型的命令和反饋格式,使其更容易瀏覽存儲庫、查看、編輯和執行代碼文件。研究團隊還提供了一些有用的功能,如代碼檢查器、文件查看器和全目錄字符串搜索命令,以提高效率。
幾乎在同日,阿里云公布他們最近迎來了一位特殊的新員工——AI程序員「通義靈碼」,工號AI001。這個AI程序員在加入正式員工行列之前已經在阿里云內外進行了數月的實習,并獲得了超過80%的好評率。通義靈碼的加入顯著提高了工程師們在編寫、閱讀、查找BUG和優化代碼等方面的工作效率,其工作能力被描述為7x24小時隨叫隨到,極大地節省了人類程序員在測試代碼上的工作量。
通義靈碼由阿里云與通義實驗室聯合開發,目前已經被下載超過200萬次,每天有數百萬行代碼被采納。它能夠熟練使用200多種編程語言,并精通16種主流語言。通義靈碼不僅具備代碼續寫、生成單元測試、代碼優化等技能,還能進行智能問答和異常報錯排查,減少了排查工作的復雜度。此外,它還支持企業級代碼庫專項訓練,更好地理解企業代碼和文檔數據,并支持國產化適配。
在人工智能的浪潮中,AI程序員的出現無疑是技術革命的一個重要里程碑。從20世紀50年代早期的邏輯推理和專家系統的探索,到今天深度學習和機器學習的廣泛應用,AI技術的發展背景是多方面的。
AI程序員的興起,標志著人工智能技術在編程領域的重大突破。它不僅可能重塑軟件開發行業的生態,而且對我們理解人工智能的潛力和邊界也有著深遠的意義。AI編程的興起可能會改變程序員的工作方式和技能需求,但并不會減少程序員這個職業的重要性。
AI程序員技術特征分析
AI程序員,如Devin、通義靈碼和普林斯頓大學的SWE-agent,正在重新定義軟件工程的邊界。這些系統不僅展示了AI在編程領域的巨大潛力,而且還揭示了技術行業未來可能的發展方向。
Devin:全自動AI軟件工程師
Devin是世界上首個全自動AI軟件工程師,它的出現標志著AI在軟件開發領域的一個重要里程碑。Devin具備長期推理和規劃能力,能夠執行復雜的工程任務。這意味著Devin不僅能夠處理簡單的編碼任務,還能夠管理整個項目的生命周期,從需求收集到設計、編碼、測試和部署。
圖片
圖:OpenDevin 是 Devin 的復制品,其目標是與開源社區共享力量。通過社區貢獻和對開放標準的承諾,OpenDevin 希望完善和擴展人工智能輔助軟件工程的功能。
Devin的核心優勢在于其能夠回憶相關上下文,隨時間學習并修正錯誤。這種能力使得Devin能夠在項目進展中不斷自我完善,減少人為錯誤的可能性。此外,Devin配備了開發者常用工具,如shell、代碼編輯器和瀏覽器,這些工具都集成在一個沙盒計算環境中,確保了安全性和靈活性。
與用戶的實時協作也是Devin的一大特色。它能夠實時報告進度,接受反饋,并根據需要與用戶共同做出設計選擇。這種協作模式不僅提高了開發效率,還增強了項目的適應性和創新性。
Devin的技術特征和能力概述:Devin是由Cognition AI團隊開發的AI軟件工程師,它具備自主編程的能力,能夠獨立完成復雜的工程任務。Devin的核心技術特征包括:
- 長期推理與規劃:Devin能夠規劃并執行需要數千個決策的復雜工程任務。
- 上下文相關的記憶:在每一步中,Devin能夠回憶相關上下文,學習并糾正錯誤。
- 開發工具的集成:Devin配備了shell、代碼編輯器和瀏覽器等開發工具。
- 實時協作:Devin能夠實時報告進度,接受反饋,并與用戶共同做出設計選擇。
- 自主修復和優化:Devin能夠獨立發現并修復代碼中的bug,同時也能對AI模型進行訓練和微調。
「通義靈碼」:先進的AI編程助手
通義靈碼作為阿里云推出的AI編程助手,它的目標是提高軟件開發的效率和質量。它通過自動化編程任務,幫助程序員減少重復性工作,從而讓他們有更多時間專注于創新和解決復雜問題。
圖片
通義靈碼的未來目標是編寫公司20%的代碼,使得程序員能夠更多地專注于系統設計和核心業務開發。同時,通義靈碼也在通義千問APP上線,免費向公眾開放,使得任何人都可以在手機上編寫和學習代碼。對于沒有編程基礎的學生,通義千問還能提供學習建議和制定學習計劃。這標志著AI程序員不僅是程序員的助手,而且可能成為軟件開發領域的重要參與者。
「通義靈碼」的技術特征和能力概述
- 自動化編程:通義靈碼能夠輔助程序員編寫、讀取、查找和優化代碼。它可以自動生成代碼,包括行級/函數級代碼、單元測試和代碼注釋,從而提高編程效率。
- 多語言支持:該工具已經熟練掌握200多種編程語言,打破了編程語言的邊界,使得程序員能夠跨語言編寫代碼。
- 智能問答:通義靈碼提供研發智能問答能力,能夠快速回答編程相關的問題,幫助解決編程難題。
- 代碼優化:它能夠深度分析代碼及其上下文,迅速識別潛在的編碼問題,并提供具體的優化建議。
普林斯頓開源AI程序員:SWE-agent
普林斯頓大學推出的SWE-agent是基于GPT-4技術的首個開源AI程序員。作為一個開源項目,SWE-agent能夠在GitHub倉庫中自動修復bug,這對于開源社區來說是一個巨大的貢獻。在SWE-bench測試集上,SWE-agent成功解決了12.29%的問題,平均耗時僅93秒,顯示出與Devin相當的準確率。
SWE-agent的開源性質意味著它能夠快速獲得社區的反饋和改進,這加速了AI在軟件工程領域的進步。SWE-agent的成功也表明,AI程序員不僅能夠提高開發效率,還能夠提升代碼質量,減少維護成本。
圖:SWE 基準性能
SWE-agent的技術特征
開源性質 SWE-agent作為一個開源項目,意味著它的代碼、設計和功能都是公開的,這為全球的開發者提供了參與和貢獻的機會。它在GitHub上迅速獲得了1.6k星和109個Fork,顯示出開源社區對這一技術的高度認可和興趣。
1. 基于GPT-4的智能體-計算機接口(ACI) SWE-agent通過智能體-計算機接口(ACI)的設計,使得大模型如GPT-4能夠更方便地瀏覽存儲庫、查看、編輯和執行代碼文件。這種設計類似于人類喜好的UI設計,提高了與大模型的交互效率和質量。
2. 自動修復bug的能力 SWE-agent能夠在GitHub倉庫中自動修復bug。在SWE-bench測試集上,它成功解決了12.29%的問題,平均耗時僅為93秒,準確率與之前推出的AI程序員Devin相當。這表明SWE-agent在自動化軟件工程任務方面具有高效和準確的能力。
3. 與專用終端的交互 SWE-agent通過與專用終端交互來工作,它可以打開、搜索文件內容,使用自動語法檢查、編輯特定行,也可以編寫并執行測試。這種交互方式為AI程序員提供了更多的自主性和靈活性。
4. 功能性設計 SWE-agent包含了研究團隊在智能體-計算機接口設計過程中發現的非常有用的功能,包括添加一個在發出編輯命令時運行的linter,如果代碼語法不正確,則不會讓編輯命令通過。此外,為智能體提供了專門構建的文件查看器和全目錄字符串搜索命令,這些功能都旨在提高工作效率和準確性。
5. 智能體工作流程 SWE-agent的工作流程分為兩個階段:「推理」和「評估」。在推理階段,SWE-agent會處理GitHub上報告的問題,并生成一個旨在修復該問題的拉取請求(Pull Request)。在評估階段,會對生成的拉取請求進行評估,以確認它是否真正解決了報告的問題。
AI程序員如Devin、通義靈碼和SWE-agent的出現,預示著軟件開發領域的未來將更加自動化、智能化和協作化,這些系統的技術特征和能力展示了AI如何能夠提高開發效率,降低錯誤率,并推動創新。
AI程序員測試效果
Devin AI程序員的測試顯示,它能夠完成多種編程任務,包括使用API獲取股票價格的軟件和創建允許用戶與大型模型下棋的網站。Devin在處理API密鑰、包錯誤和與LLM下棋的提示詞方面表現出色。然而它在反饋速度上還有待提高。
通義靈碼與GitHub Copilot操作類似,用戶可以容易地從一個工具切換到另一個工具。它在代碼編寫能力上雖不及GitHub Copilot,但提供免費使用,特定領域的優勢以及良好的操作界面和適配性。根據個人測試和評價,通義靈碼可以獲得3.5~4分的評分(滿分5分),被視為值得嘗試的AI編碼輔助工具。
普林斯頓大學推出的SWE-agent在GitHub存儲庫中自動修復bug的能力與Devin相當,平均耗時僅為93秒。這一開源項目在GitHub上迅速獲得了社區的認可和興趣。
AI程序員的測試效果是評估其性能的關鍵指標
1. 測試效率和準確性, AI程序員通過自動化技術提高了軟件測試的效率,能夠快速識別和修復bug。它們利用機器學習算法,不斷學習和優化,以提高bug發現的準確性和覆蓋范圍。這種持續性的學習能力使得AI程序員在軟件開發過程中能夠不斷提升其性能。
2. 自動化Bug發現,AI程序員在自動化Bug發現方面表現出色,它們可以對軟件代碼和測試數據進行深入分析,識別出隱蔽和復雜的Bug。這不僅提高了測試的質量,還節省了大量的時間和人力成本。
3. 持續性能測試,AI程序員能夠執行持續的性能測試,確保軟件系統的穩定性和可靠性。它們通過模擬不同的測試場景,評估軟件在各種條件下的表現,從而確保軟件質量。
4. 功能和性能測試,在功能和性能測試方面,AI程序員能夠自動運行單元測試、集成測試和性能測試,以確保代碼質量。這些測試通常是自動化的,可以在代碼部署到生產或測試環境之前進行。
5. 提高工作效率,AI程序員還可以幫助傳統的測試工程師提高工作效率,例如協助編寫測試文檔、測試用例和測試報告。雖然AI程序員在用例設計方面還不能完全替代人類測試工程師,但它們在某些方面已經能夠提供有效的支持。
根據以上多項指標,多家的評測結果顯示AI程序員Devin、通義靈碼和SWE-agent在軟件工程任務的測試中表現不一,各有特點。
Devin
在SWE-bench基礎測試中,Devin無需人類輔助就能解決13.86%的問題。
Devin的測試顯示,它能夠執行多步規劃并接收環境反饋,72%的通過測試需要10分鐘以上完成,顯示出其迭代能力。
通義靈碼
通義靈碼在輔助Java編碼方面表現最佳,而在SQL及代碼糾錯方面,iFlyCode可能是更好的選擇。
通義靈碼支持30+種語言的代碼解釋,并能對特定領域的知識進行問答,如阿里云OSS相關問題。
SWE-agent
SWE-agent是一個開源的軟件工程代理,能夠將GitHub問題轉換為拉取請求,解決了SWE-bench測試集中12.29%的問題。
SWE-agent實現了Agent Computer Interface (ACI),通過設計簡單的LM中心命令和反饋格式,使得LM更容易瀏覽倉庫、查看、編輯和執行代碼文件。
綜合評價,Devin在無輔助情況下解決問題的能力較強,通義靈碼在特定領域如編程教育和代碼解釋方面有優勢,而SWE-agent作為一個開源代理,在解決GitHub問題方面表現出色。每個工具都有其獨特的優勢和適用場景。
AI程序員技術拓展
AI程序員技術的拓展正在不斷推動軟件開發領域的變革。從自動化編程到智能編程工具,再到優化算法和自動化測試,AI程序員技術正成為軟件開發不可或缺的一部分。
自動化編程應用
AI技術的發展使得許多傳統編程任務開始被自動化取代。例如,AI可以用于自動生成代碼、進行自動化測試和優化算法等。這意味著程序員將不再需要花費大量時間進行重復性的編程工作,而可以專注于更具創造性和復雜性的任務。
智能編程工具的發展
AI程序員的出現促進了編碼輔助工具的發展。這些工具可以提供智能建議、自動糾錯和代碼優化等功能,幫助程序員提高開發質量和效率。隨著機器學習、深度學習等技術的不斷發展,程序員可以借助這些工具提高開發效率,創造出更加豐富多彩的應用。
優化算法性能的貢獻
AI程序員在算法優化方面具有巨大潛力。它們可以通過學習和演化算法,自動優化程序的性能、資源利用和效能,從而提高程序的運行效率和用戶體驗。此外,AI可以通過分析代碼的運行情況和性能數據,自動給出優化建議,有助于程序員提高軟件性能,提升用戶體驗。
跨學科能力
AI程序員的崛起也促使程序員培養跨學科能力。AI領域的發展涉及多個學科,如計算機科學、數學、統計學等。程序員需要具備跨學科的知識和技能,以便更好地理解和應用AI技術。這種跨學科能力有助于程序員在處理復雜問題時綜合不同領域的知識,找到更全面和有效的解決方案。
AI技術的這些應用不僅提高了編程的效率和質量,還為程序員提供了更廣闊的創新空間和探索領域。隨著AI技術的不斷進步,未來的程序員將能夠更好地發揮其潛力,解決實際問題,并推動計算機科學的進一步發展。
AI程序員對人類程序員的影響
在AI技術的快速發展下,AI程序員對實際程序員的影響是多方面的,既包括挑戰也包括機遇傳統程序員可以通過不斷學習和適應新技術,利用AI程序員的優勢,提高自己的競爭力和生產力。
自動化和智能化的影響
AI程序員的出現使得編程工作的某些方面可以自動化和智能化。例如,AI程序員能夠自動生成代碼,減少人為錯誤的可能性,提高開發效率。這可能會改變傳統程序員的工作方式和職責,使他們能夠更專注于更高層次的設計和創新。
提高效率和準確性
AI程序員可能具備更快速、更準確地生成代碼的能力。通過AI程序員的輔助,程序員能夠更高效地開發和測試應用程序,減少錯誤和調試時間,提高整體的開發效率。
創造力和創新能力的提升
AI程序員的出現可能在某種程度上釋放程序員的創造力和創新能力。AI可以處理重復性的編碼任務,讓程序員有更多時間去思考和解決更復雜的問題,從而增強創新能力。
智能優化和調
AI程序員可以對代碼進行性能分析和優化建議,找出潛在的瓶頸并提出改進方案,使得代碼執行更高效。此外,AI驅動的測試工具能夠自動化生成和執行單元測試、集成測試,確保代碼質量,減少回歸錯誤。
持續集成和測試自動化
AI程序員的技術可以支持復雜的決策和推理,自動化生成和執行測試,從而提高軟件的可靠性和性能。這種自動化不僅提高了測試的效率,還有助于在早期發現和修復bug,減少了軟件發布后的問題。
對程序員職業的長遠影響
盡管AI技術的發展可能會導致一些編程崗位的減少,但同時也會創造出新的就業機會和發展空間。傳統程序員可以通過不斷學習和提升自身的技能,適應新的技術發展趨勢,保持競爭力。
總之,AI程序員對實際程序員的影響是深遠且復雜的。它們不僅提高了編程的效率和質量,還可能改變程序員的工作內容和職業路徑。未來,程序員可能需要更多地關注創新、設計和解決復雜問題的能力,而不僅僅是編碼技能。
最后的啰嗦話
AI程序員Devin、通義靈碼和SWE-agent展示了人工智能在軟件開發領域的顯著進步,提高了編程效率并推動了技術創新。AI程序員的優勢是明顯的,AI程序員能夠自動化生成代碼,減少傳統手動編碼的時間和精力。它們可以快速學習大量的代碼和模式,提高編碼效率,減少人為錯誤的發生。AI程序員通過深度學習和強化學習等技術,不斷自我學習和進化。它們能夠快速適應新的編程語言、框架和技術。同事AI程序員具備大規模任務處理和并行計算能力和智能化和自動優化能力。
但是就目前來說,AI程序員也具有一些局限性,比如創造力和創新能力不足,AI程序員難以進行創造性的創新和設計。還有上下文理解和推理能力有限,AI程序員在理解和處理復雜的上下文情境時存在局限,它們可能無法準確理解人類的意圖和特定領域的知識。數據依賴性和泛化能力也是它的缺點,AI程序員的性能和效果受限于訓練數據的質量和覆蓋范圍,在面對新領域或新場景時,它們的泛化能力可能不足。
積極一面,AI程序員的自動化程度將進一步提升,其可解釋性和透明性也將得到增強。這將有助于程序員和相關利益方更好地理解和控制AI程序員的行為,提高代碼的可靠性和安全性。同時,AI程序員和人類程序員將形成互補的合作關系,共同創造出更加高效、智能和創新的軟件解決方案。在這個過程中,程序員需要適應變化,通過不斷學習、提升技能和創新思維,與AI程序員形成合作共贏的關系。這樣,我們才能在AI時代中立足并發揮重要作用,共同迎接人工智能時代的到來。(END)
參考資料:
1.https://news.opensauced.pizza/open-source-projects-that-are-gaining-steam-that-you-havent-heard-of/