2024年AI程式設計技術與工具發展綜述

OSCHINA
↑點選藍字 關注我們
最近,開源中國 OSCHINA、Gitee 與 Gitee AI 聯合釋出了《2024 中國開源開發者報告》
報告聚焦 AI 大模型領域,對過去一年的技術演進動態、技術趨勢、以及開源開發者生態資料進行多方位的總結和梳理。
在第二章《TOP 101-2024 大模型觀點》中,同濟大學特聘教授、CCF 傑出會員朱少民對 2024 年 AI 程式設計技術與工具發展進行了總結。
全文如下:

2024 年 AI 程式設計技術與工具發展綜述

文 / 朱少民
2024 年 8 月下旬,一款 AI 程式碼編輯器 ——Cursor 火爆全球,火到一位 8 歲小女孩拿著它學程式設計,幾十分鐘內搭起來一個聊天機器人,其演示吸引來 180 萬人線上圍觀。這導致有人大膽預言,未來程式設計只需要狂按 Tab 就夠了。Cursor 確實好用,包括新推出的“游標位置預測”功能。
但是 AI 程式設計發展沒有那麼快,在國內生成程式碼採納率還比較低,根據《2024 軟體研發應用大模型國內現狀調研報告》,多數團隊在 10-40% 之間,如圖 1 所示。
圖 1 大模型(LLM)在程式設計上的應用及其生成程式碼的採納率
在 2024 年,我們還看到了“AI 程式設計師” Devin 的誕生,Devin 能夠獨立完成複雜的編碼和除錯任務、自主查詢和修復程式碼庫中的錯誤,構建和部署應用程式。在 SWE-bench 編碼基準測試中,Devin 能夠解決 GitHub 中 13.86% 的真實問題,有了很大提升。
說起 SWE-bench 編碼基準測試(https://www.swebench.com/),2024 年進步很快,以 OpenAI 建立的 verified 子集(500 個問題)為例,4 月開始時,成功率只有 2.8%,到現在已提升到 53%,這表明 AI 在程式設計能力方面取得了顯著的進步。這一提升反映了 AI 程式設計幾個關鍵因素,正好用來總結 2024 年 AI 程式設計的進展。
模型能力的增強:AI 模型的架構和演算法不斷最佳化,如從 Claude 3 Opus、GPT-4o 到 Claude 3.5 Sonnet、Claude 3.5 Haiku,大模型自身的能力不斷提升,使得模型能夠更好地理解和解決複雜的程式設計問題。
智慧體(AI agent)的引進:智慧體可以收集和學習與任務相關的知識,可以直接呼叫靜態程式碼分析工具、直接調用搜索引擎和 API 為程式設計任務服務,並透過構建程式碼倉庫知識圖來幫助大模型全面理解軟體倉庫的結構和依賴關係,從而更好地定位問題根源並生成有效的程式碼補丁。
智慧體還可以動態獲取程式碼片段和問題相關的資訊,並分析和總結收集到的資訊,以便規劃出更好的解決方案。例如從 RAG+GPT 4 (1106) 的 2.8% 提升到 SWE-agent+GPT 4 (1106) 的 22.4%、從 RAG+Claude 3 Opus 的 7% 提升到 SWE-agent+Claude 3 Opus 的 18.2%,效果都比較顯著。
多模態能力:多模態 LLM 使智慧體能夠綜合利用視覺和文字資訊,可以理解軟體使用者介面、處理的圖表、視覺化資料、語法高亮和互動對映等內容,更好地理解任務陳述以及獲取任務相關的產品資訊、開發過程資訊,從而更全面地理解和解決問題。目前排在 SWE-bench verified 前 4 位都使用了 Claude-3.5-Sonnet,而它是多模態的、具備處理文字和視覺資訊的能力,使其能夠理解和修復包含影像或其他視覺元素的 GitHub 問題。
和工具整合的框架:可以支援智慧體在處理複雜任務時進行更好的任務管理和執行,並促進不同 AI 模型和工具之間的協作。
例如 Composio SWE-Kit 整合檔案操作、程式碼分析、Shell 命令執行、知識庫管理和資料庫操作等工具或能力,優勢互補,將 SWE-bench verified 大幅度提升到 48.6%。
再比如 OpenHands+CodeAct v2.1 將智慧體的行為整合到統一程式碼行動空間的框架,允許 OpenHands 在程式設計任務中扮演全方位的智慧助手角色,目前排在 SWE-bench verified 第一位(53%)。
基於程式碼大模型的自身進化,以及 RAG 技術、智慧體的有力支援,從而 LLM 有更好的上下文感知能力。例如,在程式碼大模型預訓練時,其訓練語料中加入抽象語法樹(AST)、程式碼依賴關係等資料,新的程式碼生成模型則具有更強的上下文感知能力。
在此基礎上,基於 AI 的程式設計工具能夠根據給定的上下文(如函式名、註釋、部分程式碼等)檢索出最相關的程式碼片段和文件,能夠提供完整的函式或程式碼塊建議。這也使得 LLM 能夠參考海量的程式碼庫和技術文件,這不僅能緩解大模型的幻覺問題,顯著提升程式碼生成與理解的準確性,而且能符合上下文的程式碼,更能滿足開發的業務需求。
未來,研發人員和多個智慧體、工具協同工作來完成程式設計工作,如論文 Flows:Building Blocks of Reasoning and Collaborating AI 所描述的(圖 2 所示),構成一個複合競爭性編碼流程,研發人員更多是提需求,由 LLM 和智慧體實現自主程式設計的過程。
圖 2 由 LLM 和智慧體實現自主程式設計的過程
隨著大模型技術的迅速發展,在今年,我們明顯能感到,AI 已從單一的輔助工具,逐漸演變為軟體開發人員不可或缺的助手或夥伴。
除了前面已介紹的 Cursor、Composio SWE-Kit、OpenHands CodeAct 等工具之外,國內主要使用 chatGPT、GitHub Copilot、通義靈碼、CodeGeeX、文心快碼、螞蟻 CodeFuse 等程式設計工具,國外還出現一些受歡迎的、新的程式設計工具,如 Codeium IDE Cascade、Solver ai、Websim ai 等。
圖 3 國內程式設計助手使用狀況(來源同圖 1)
這些工具讓我們能感受到 AI 卓越的生成能力和理解能力,幫助我們更高效地完成程式碼生成、程式碼評審、程式碼解釋到單測生成、缺陷定位、程式碼最佳化等任務。這種進步也體現在今年國內企業一些落地實踐中:
  • 在一些大廠,LLM 已經實際應用到程式碼審查或 CI/CD 流程中(如 pull request),自動識別程式碼質量問題並提出改進建議。
  • 有些企業結合智慧體和相關工具的支援,讓基於 LLM 的研發平臺生成程式碼流程圖和類圖,輔助自然語言解釋,使得開發者更直觀地理解程式碼結構和執行流程,增強智慧程式設計的可視性和互動性。
  • 有些開發團隊藉助智慧體和 RAG 技術檢索歷史上已知的程式碼缺陷模式和已知問題,從而比較準確地識別潛在的缺陷和安全漏洞,甚至能夠分析程式碼的功能意圖,全面提升程式碼評審的能力。
  • 有些團隊,根據 UI 設計圖,讓 LLM 自動生成相應的前端程式碼,大大減少了手動編碼的時間,加快了從設計到實現的流程。
從應用效果看,前面調研的資料可供參考。在國內 AI 程式設計開展比較好的大廠,超過 80% 的工程師在使用 AI 程式設計工具完成日常的程式設計工作,近 30% 入庫的程式碼由 AI 生成,生成程式碼平均採納率超過 40%,有些產品線達到 60%。僅僅在程式設計這一項工作(雖然只佔開發人員 20-30% 的工作量)上,研發效率能提升 20-30%。
圖 4 大模型時代的軟體研發正確方式
當然,我們不能侷限於這一個程式設計環境,最好要從需求開始就應用大模型。ATDD(驗收測試驅動開發)是大模型時代軟體研發的正確開啟方式,讓大模型幫我們生成需求及其驗收標準,業務約束更明確了,上下文更清楚了,在此基礎上分別由不同的模型生成產品程式碼和測試程式碼,再讓它們之間相互驗證和博弈(如圖 4 所示),最終交付高質量的軟體。
未來,隨著 AI 技術的不斷成熟和創新,AI 程式設計工具將進一步提升智慧化和可解釋性,支援更多的程式語言和平臺,並透過強化學習實現自適應最佳化。為了全面發揮 AI 程式設計技術的潛力,開發團隊需要不斷學習和適應新技術,最佳化開發流程,確保 AI 工具的有效應用和高質量輸出。

作者簡介
朱少民
同濟大學特聘教授、CCF 傑出會員、CCF TF 軟體質量工程 SIG 主席、CCF2023 傑出演講者、軟體綠色聯盟標準評測組組長、QECon 大會和 AiDD 峰會發起人。
近三十年來一直從事軟體工程的教學與研究工作,先後獲得多項省、部級科技進步獎,已出版了二十多部著作和 4 本譯作。曾任思科(中國)軟體有限公司 QA 高階總監、IEEE ICST 2019 工業論壇主席、IEEE ICST、QRS 等程式委員、《軟體學報》和《計算機學報》審稿人等。
閱讀完整報告https://talk.gitee.com/report/china-open-source-2024-annual-report.pdf

🔗《2024 中國開源開發者報告》正式釋出
分享在看點贊~Orz

相關文章