人工智慧
2024 年 AI 程式設計幫手:AWS、GitHub、Tabnine 以及其他
AI 程式設計幫手正趕上生成式 AI 快速演進的浪潮,持續不斷改進並強化其功能來讓軟體開發變得比以往更快、更容易。本文探討當前的情勢變化以及市場上主流大廠 (如 AWS、GitHub 和 Tabnine) 的解決方案提供哪些主要功能。
自從大約兩年前 AI 程式設計幫手開始躍上檯面以來,至今已有長足的進步。儘管長久以來開發人員一直都在利用人工智慧來從事作業自動化、程式碼自動完成、低程式碼開發 (low-code development)、靜態程式碼分析等等,但生成式 AI 正在實現 AI 當初的承諾,協助開發人員完成更多工作,而且做得更快、更好。
一些領先的工具早已快速演進,從原本相對單純的程式碼建議與檢查工具,發展成今日精密複雜的多功能軟體開發平台。其中有些工具是高度特化的平台,如 CodeWP (針對 WordPress)、Android Studio Bot 及 SQLAI,其他的則應用較為廣泛。而且有不少已經重新命名和合併,例如:原 Amazon CodeWhisperer 目前已併入 Amazon Q AI 套件當中,並重新命名為 Amazon Q Developer,而 Google Bard 現在也改名為 Gemini。
稍微看一下幾個廣為人知的主流 AI 程式設計幫手就能感受到這些工具目前變得有多麼強大。
AWS、GitHub、Tabnine 三強對決:各有其擅長領域
Amazon Q Developer
Amazon Q 被定義為「AWS 生成式 AI 助理」,共有五大產品:Amazon Q Business、Amazon QuickSight、Amazon Connect、AWS Supply Chain 以及 Amazon Q Developer,最後一個 Amazon Q Developer 是根據 AWS 近 17 年來的資料所訓練出來的程式設計幫手。
Amazon Q Developer 是專為協助開發人員在 AWS 內建構、測試、升級應用程式以及疑難排解而設計。它本身是個聊天機器人,可回答各式各樣有關 AWS 的問題,透過自然語言介面協助管理企業的某些 AWS 資源。針對程式設計部分,他可生成程式碼片段或完整的函式,同樣是透過自然語言介面,並且使用現成的程式碼。
此外,Amazon Q Developer 也包含了自主代理程式,可幫忙執行複雜的工作,包括實作新功能、撰寫文件等等。
支援的語言:Python、Java、JavaScript、TypeScript、C#、Go、Rust、PHP、Kotlin、C、C++、SQL 等等。
支援的整合式開發環境 (IDE):JetBrains、IntelliJ IDEA、Visual Studio、VS Code 等等。
GitHub Copilot
GitHub 自詡為「全世界領先的 AI 輔助開發平台」,提供各種功能,包括:啟動雲端開發環境、搜尋程式碼儲存庫、審查程式碼等等。其 AI 程式設計幫手:GitHub Copilot 是當中的一個主要元素,能回答一般性程式設計問題,或關於某程式碼資料庫的特定問題。採用自然語言介面,並可在開發人員打字時自動幫忙完成程式碼以加快速度。它可提供多行程式碼或完整函式的建議、解釋程式碼,以及檢查程式碼是否有漏洞,以便當下立即阻止「不安全的程式碼」。
其底層的生成式 AI 模型是由 GitHub、OpenAI 與 Microsoft 共同合作的成果,而且訓練時使用的是公開的儲存庫。
支援的語言:多種語言和框架,尤其適合 Python、JavaScript、 TypeScript、Ruby、Go、C# 以及 C++ 使用。
支援的 IDE:Visual Studio 與 Visual Studio Code、Vim、Neovim、JetBrains IDE 以及 Azure Data Studio。
Tabnine
Tabnine 承諾提供一種私密、個人化、受到保護的 AI 程式設計輔助,立志滿足安全與客製化需求。它提供情境感應的程式設計支援,能針對每一家企業的每一個專案而量身訂做,它可從自然語言提示自動生成高品質的程式碼,同時還可建立客製化模型。
Tabnine 的聊天功能涵蓋了整個軟體開發生命週期,同時還提供程式碼解釋、測試、錯誤修正以及產生文件等功能,全都是為了加快開發流程而生。
在隱私與安全方面,Tabnine 宣稱不會使用客戶的程式碼來訓練自己的模型 (但企業可視需求使用自己的程式碼來建立自己的客製化模型),而且絕對不會在未獲同意之下儲存或分享程式碼。由於 Tabnine 在訓練時僅使用「容許性授權的程式碼」,因此天生就避開了智慧財產相關的問題。
支援的語言:超過 25 種語言與框架,包括:Java、C++、SQL、Python、Rust。
支援的 IDE:VS Code、IntelliJ、Visual Studio、Eclipse、Android Studio、AppCode、CLion、GoLand、Neovim、PhpStorm、PyCharm、Rider、RubyMine、WebStorm。
什麼時候該用哪一種 AI 程式設計幫手?
以上介紹的三種 AI 程式設計幫手已經能夠涵蓋許多程式開發活動、語言及環境。到底要選哪一種,也許端看開發團隊的主觀偏好,以及軟體最終要部署在哪裡。Amazon Q Developer 是專為 AWS 環境所打造,GitHub 則與 Microsoft 及 OpenAI 關係匪淺,使得 Copilot 非常適合開發未來要在 Azure 上執行的應用程式。Tabnine 則非常彈性而且據說「尤其適合技術實力堅強的企業團隊」。
但不管是哪一種,所有的部落格、網路搜尋結果以及聊天室都會提到一個問題:「這些工具安全嗎?」
安全地使用 AI 來幫忙撰寫程式
長久以來,資安專家一直在提醒大眾,AI 有可能被用來生成非常有效又具破獲力的惡意程式碼。然而 AI 資安並非單純只是防範新的漏洞和攻擊型態而已,不良的程式碼也是另一個令人憂心的問題:無法正常運作的程式碼會造成非預期的後果,或者不小心洩露私密資訊。
程式設計幫手的供應商都知道這些風險,「負責任的 AI」是目前最夯的名詞,意思就是要「聰明地使用」。此處最重要的結論就是,軟體開發人員與其雇主必須扮演主動的角色來防範 AI 輔助程式設計的風險。趨勢科技以及一些網路資安分析機構 (如 Gartner) 也都強烈建議採取以下最佳實務原則:
- 檢查所有 AI 生成的程式碼並執行安全測試。
- 將任何 AI 生成的程式碼都視為潛在的漏洞。
- 不能單靠 AI 來撰寫程式碼。
儘管上述的所有 AI 程式設計幫手都具備資安與資料保護政策,但漏洞的產生是由使用這些工具所引起。這意味著開發人員有義務知道這些風險,而企業也必須制訂政策來加以防範。
未來趨勢
軟體開發人員可以從 AI 程式設計幫手獲得不少好處,例如:將重複性工作自動化、透過機器學習來將程式碼最佳化、快速發現與矯正錯誤,以及加快程式設計的整體速度。這些無疑都是優點,而且能讓開發人員有更多時間將創意融入工作當中、為使用者創造價值,同時也更專注在商業邏輯。
隨著時間推移,我們合理預期這些工具未來將變得更先進、更安全,也更可靠。但 AI 要接手程式設計真正困難的部分,也就是需要想像力、靈感與專業判斷的部分,應該還要好長一段時間 (如果可能的話)。
但這部份目前/也許永遠還是得靠人 (也就是開發人員) 來完成。類似的問題,每當運用到 AI 時,同樣也是要靠「人」來採取一種負責、安全的態度以確保企業、客戶及合作夥伴的安全。