「AI+代碼」是暫存的假象,還是前途無量?
Cursor爆火,不僅拿下OpenAI參與的6000萬美元的A輪融資,甚至Cloudflare開發者關係副總裁Ricky Robinett分享的Cursor影片快速收到百萬級觀看——他八歲的女兒僅用45分鐘就使用Cursor AI構建了一個聊天機器人。
GitHub Universe大會上,GitHub則直接官宣:Copilot可以支持多模型,包括Anthropic的Claude 3.5 Sonnet、Google的Gemini 1.5 Pro、OpenAI的o1-preview和o1-mini。
Google CEO Pichai在第三季度財報電話會議中特別提到Google內部超過25%的新代碼是由AI生成的,非常認可AI生成的代碼對於內部開發工作的作用。
可以說在AIGC應用快速發展的2024年,「AI生成代碼」受到了前所未有的關注。
一方面,大語言模型的代碼生成能力逐步提高,生成的效率和質量雙重提升,大量工具得以上線供全球開發者使用;另一方面,「人人都會編程」的技能點說不定可以通過AI點亮,即便是暫時的假象,也可以是村里的希望。
而現實也很割裂,一方面,從ChatGPT的發佈開始,大量看似「魔法」的代碼生成宣發材料層出不窮;而另一方面,具有賺錢能力的開發工作似乎和零基礎人群的距離依舊遙遠。
我們是不是又要被AI的能力虛晃一槍?甲子光年智庫在「程序員節」(1024)發佈《2024年AI代碼平台及產品發展簡報》,嘗試消除一部分概念的誤解,試圖說明技術帶來的商業價值。
一、為什麼大模型之後,「AI+代碼」的概念再次火熱起來?
通俗解釋:AI能看懂更多代碼,會寫更可靠的代碼,未來可能會自己寫代碼。
自從編程開始出現,程序員就不斷尋找一種解決方案可以讓「寫代碼」簡單點,機器輔助人類寫代碼一直就不是新概念。開發工具的解決方案一般有兩個大的方向:
1. 讓機器當輔助,進行代碼的補全和修改、寫註釋、寫日誌等等,主要是針對開發工作,但大模型之前,受限於技術,機器輔助編程效率遠遠不如程序員。
2. 拋棄代碼,擁抱「拖拉拽」,最大程度降低代碼量,最好通過圖形化編程方式實現開發,如無代碼/低代碼開發平台,雖然在一定程度上解決了問題(非IT人員可以具象化地描述IT邏輯),但是複雜業務(尤其是企業級開發)依然需要大量編程工作實現。
大模型給「AI+代碼」帶來的突破性在於強大的自然語言理解能力,畢竟編程語言也是語言。
所以大模型之後的「AI+代碼」可以更理解程序員的需求和意圖,自動生成符合規範或者採納率更高的代碼片段或完整功能模塊,從而讓創建廣泛應用且實用的AI代碼平台成為可能。
我們可以認為大模型技術改變了代碼生成的效率和質量,包括但不限於以下幾點:
1. 提升代碼生成效率
生成代碼建議的速度比以往任何時候都要快,有望大幅提高整體工作效率。此外,大模型技術能夠根據工程師的自然語言描述自動生成符合工業標準的代碼,這種自動化過程極大地提高了代碼生成的速度,使得從設計到生產的轉換更加迅速和流暢。
2. 提高代碼質量
大模型技術在提升代碼質量方面也發揮了重要作用。首先,大模型生成的代碼具有良好的風格,變量命名規範,可讀性高。它們在生成代碼時會考慮到工業編程的最佳實踐和標準,從而提高了代碼的可靠性和可維護性。其次,大模型能夠自動生成異常處理代碼,使程序員能夠專心於業務代碼的編寫,同時生成的錯誤提示和日誌信息通常都非常完整,語句通順。
3. 減少錯誤和提高開發速度
大模型代碼生成技術能夠顯著提高軟件開發的效率,通過自動化重覆性和標準化的編碼任務,減少人為編碼錯誤,提高開發速度。這對於需求快速變化的現代軟件開發環境來說尤為重要。通過減少人工編程的時間和資源投入,企業能夠顯著降低研發成本,同時,研發團隊可以將更多精力投入到創新和複雜問題的解決上,而不是花費在繁瑣的代碼編寫上,從而整體提高了研發效率。
並且AI推動了開發者的編程習慣和開發方式發生轉變,雖然工作重心依然在代碼編寫上,但與AI的互動逐漸增多,編程習慣和開發方式開始發生轉變。未來,開發者可能開始從代碼的具體實現轉向更高層次的任務管理和決策。
二、AI代碼工具是否就可以認為是「AI+代碼」的全部?
軟件開發工作給人們的印像往往就是寫代碼,但是開發工作不全是寫代碼,一個基於AI代碼生成的開發平台是必要的。
狹義的AI代碼平台往往指代的是核心產品的功能,也會被稱為AI編程助手,主要指在代碼開發過程中輔助編寫代碼的功能。
廣義的AI代碼平台除了核心的產品功能外,還包括企業級開發能力(和個人開發能力做對應,強調其系統性的開發能力)、用戶體驗設計、服務生態的建設,與算力、數據存儲、環境部署的適配。
AI代碼平台/產品的最終目的是讓程序員「寫代碼」更爽,因此需要解決程序員寫代碼過程中諸多「痛點」,例如下圖,並且可以貫穿開發者的整個工作歷程。
三、AI是否會完全替代程序員?
「AI+代碼」最容易被宣傳的點則是「AI替代程序員」,甚至可以是一種刻板現象的情緒宣泄,一曰AI替代,二曰程序員失業。
「所謂的替代程序員的工作」更客觀的說法則是AI可以替代程序員在日常中的部分工作,AI代碼的採納率是可以作為AI代碼能力的一種評價維度,但不是單一的評價維度,這更多是直觀地表現了「AI的能力」。
例如針對Google CEO Pichai在第三季度財報電話會議中特別提到Google內部超過25%的新代碼是由AI生成的說法,Google一線的開發人員則有更深的切身體會。
Google員工:
asdfman123(Google員工):「我在Google工作,剛結束一天的工作。我剛才寫的內容可以算作是‘AI生成的代碼’吧。但實際上代碼補全引擎只是在我寫代碼時,幫忙完成我正在輸入的行。例如,當我輸入‘function getAc…’時,它足夠智能,可以補全為‘function getActionHandler()’,並可能建議正確的參數和適當的jsdoc註釋……
……基本上,它是一個有幫助的生產力工具,但完全沒有參與到工程開發中。可能和Copilot差不多,甚至稍微遜色一點(不過我最近沒用過它)。」
NotAnOtter(Google前員工):「我的想法是:Google CEO Pichai說法顯然是在誇大現實,很可能把一些已經存在十多年的完全自動化的代碼審查或合併請求(CL/PR)也算作‘AI生成’。我之前提過,如果一個10人的團隊和一個使用Copilot等工具的8人團隊一樣高效,那麼從我的角度來看,說‘AI替代了2個工程師’是合理的。更重要的是,如果這是真的,技術領導者會這樣宣稱。Copilot及其類似工具已經存在了足夠長的時間,證據已經存在,但沒有人說‘我們用AI取代了X%的人力’。」
「AI+代碼」的產品競爭力需要從三個方面去思考:
1. 大模型直觀帶來的代碼生成、理解效果等。
2. AI代碼平台的使用者——IT開發者對於產品的滿意度。
3. 對整個開發體系的支持和幫助,商業話語下的軟件開發往往是系統性的工作。
四、不替代程序員,那「AI+代碼」改變了什麼?
真正的開發者都理解:代碼量越多,bug也可能越多!
去看「AI+代碼」能夠帶來的好處,應該放眼於對於開發模式的改變,而非簡單的替代工作,從「工程效能」角度看待「AI+代碼」帶來的價值,讓團隊更多專注於創新,並且讓更多非專業的IT人員可以參與到實際的需求理解和開發的過程中,實現開發及業務的融合。
一個AI代碼平台可以讓AI直接從需求描述開始,逐步生成代碼層面的抽像表示。典型例子就是使用領域特定語言(DSL)來描述軟件模塊、組件、流程以及數據流。具體來說,當需求被準確描述後,AI可以生成相應的DSL描述,然後根據這些描述自動生成組件及其組合方式,從而形成完整的軟件系統。因此,從代碼生成到DSL描述,再到直接生成業務系統,AI在這方面的進步將使得技術門檻降低,使非技術人員也能更直觀地參與到軟件開發的過程中。
並且AI代碼開發平台帶來研發知識傳遞形態的改變,便於個人/企業軟件開發工作知識資產的建立。傳統上,企業內部的知識傳遞依賴於口頭傳授和新員工通過閱讀代碼註釋、運維腳本以及故障排錯來熟悉項目。然而,AI的介入使得知識傳遞變得更加系統化和自動化。企業可以通過將知識注入到大模型的知識庫中,使得一線工作人員和管理者都能通過大模型進行問答和編碼,從而使得整個DevOps流程更加順滑。
這種模式不僅提高了知識傳遞的效率,還促進了新代碼、新文檔和新知識的生成,這些又可以回流到企業知識庫中,形成正向循環,釋放研發效能的紅利。
AI技術還可以根據開發團隊的日常代碼、文檔和問題記錄生成知識庫,幫助團隊成員迅速找到解決方案,提升工作效率。這種基於AI的知識管理方式,使得知識資產的建立和維護變得更加智能化和自動化,從而提高了企業的知識管理能力。
五、國內哪些企業可以提供「AI+代碼」平台或者服務?
「AI+代碼」是火熱概念,參與者類型也很豐富。企業均希望依據自身技術或行業know-how迅速切入市場,通過先手佔據更好的生態佔位;並且越來越多的企業正在進行產品打磨與場景探索。
可以分為以下幾類:
(1)AI模型*代碼型:通用大模型能力強,並且本身一般是IT開發相關公司,內部具有大量使用場景,可以提供基於生成式AI的編程產品/插件;
(2)業務*AI代碼型:具備垂直領域的開發能力和開發經驗,內部有經驗豐富的開發體系,結合AI技術,實現AI代碼的IT開發平台;
(3)AI代碼創業型:基於代碼領域的垂類模型及產品能力的創業型公司,提供相應的AI代碼平台服務;
(4)代碼社區型:基於社區代碼的數據積累,具備高質量數據和開發者社區,提供相應的工具
(5)智能體*開髮型:利用多智能體能力,提供代碼開發服務;
(6)低/無代碼+AI型:在自身低無代碼基礎上進行AIGC技術的結合;
(7)圖形化編程語言(可包括IDE)+AI型:在圖形化編程語言及開發平台及生態基礎上進行AI技術的結合。
六、AI代碼平台僅僅有AI生成代碼就夠了嗎?
所有的AI層面的應用都會遇到一個問題,AI不可能解決所有的問題,AI技術短時間內往往感覺是過譽。
但是AI技術帶給人的希望是,AI會給現有的方案提供一些「新思路」。
AI代碼平台帶來的新思路可以以RAG技術和Agent技術為例。
RAG對大型語言模型(LLM)輸出進行優化,使其能夠在生成響應之前引用訓練數據來源之外的權威知識庫。
RAG通過將用戶數據整合進LLM已有的數據中來解決用戶提問。是目前生成式AI應用中一種高效的改進思路,保證其輸出結果在各種情境下都能儘可能體現其相關性、準確性和實用性——在AI代碼生成的技術中,保證最大程度去提升代碼生成的質量。
AI代碼開發平台需要符合企業級的工程需求,以便減少程序員後期的修改和維護工作,其中AI代碼輔助工具就需要包括上下文感知、企業規範集成、推理能力利用等多方面功能。
因此AI代碼開發平台可以基於RAG技術及企業自身的高質量語料庫,不斷迭代優化,從而生成更加規範、合理的代碼。同時,為了生成代碼更加貼合具體工程的需要,可以通過工程感知的設計來實現這一目標。
AI代碼開發平台對於Agent的使用,可以讓開發團隊採用更多AI參與的協作及自動化。
Agent(代理)這一概念起源於哲學,描述了一種擁有慾望、信念、意圖以及採取行動能力的實體。在人工智能領域,這一術語被賦予了一層新的含義:具有自主性、反應性、交互性等特徵的智能「代理」。
AI代碼平台中AI Agent的核心邏輯:通過將經過特定訓練的大模型作為「大腦」,利用其推理和規劃能力,並調用外部工具來完成複雜任務,從而優化代碼開發過程。
七、AI時代,如何適應角色的變化?
AI時代給每個人都帶來不安全感和野心,一方面擔心AI太好,把自己替代;一方面擔心AI不好,幫不上自己。
AI應當被視為一個工具,而不是僅僅討論它是否可能替代某些職能或人員;而AI的設計會越來越貼近社會屬性,具有更多交互性。在一段時間內,每個人都需要和AI相處,尤其是和一個會不斷成長的AI相處。
AI的工具屬性定位讓AI代碼平台的功能更專注於提高助手的性能和準確性,確保其能夠可靠地完成編程任務。
AI的社會屬性設計讓AI代碼開發平台可以更能理解編碼意圖、提供個性化的建議,甚至在某種程度上模擬人類的交流方式。
而未來的開發者會有更多時間關注業務,理解業務,把體力活交給「AI」,而「體力活」的退潮之後才知道,誰具備在實際的業務中掌握理解需求和實踐需求的能力。
本文來自微信公眾號:甲子光年 (ID:jazzyear),作者:劉瑤