Skip to content

評估 AI 程式碼助理

Published: 5 分鐘

隨著年紀增加,山姆鍋覺得腦筋越來越不夠用了!想說最近很夯的生成式 AI 在協助撰寫程式碼上是否如同號稱的一樣可以提高工程師生產力。 尤其聽過幾個生成式 AI 幫助程式小白開發出一個簡單遊戲或者應用的案例後,想說應該要來親自試試看。

本文沒有要比較各家產品孰優孰劣,畢竟這樣的比較是非常主觀的。況且目前各家產品功能上大同小異,但根據使用的模型以及訓練資料集的不同,生成的程式碼品質的確有明顯差異。模型生成的品質上的差異,相信假以時日,這個差距會越來越小。

AI 程式碼助理

AI 程式碼助理(coding assistant) 是一種工具,可以幫助開發人員在編寫程式碼時提供協助和建議。它的功能包括:

  • 自動完成:AI 程式碼助理可以自動完成程式碼的語法和構造,幫助開發人員更快速地撰寫程式碼。山姆鍋最大期望是能夠幫助開發者生成測試用程式碼。
  • 程式碼建議:它可以根據開發人員的需求提供相關的程式碼片段或建議,幫助開發人員避免重複的工作。山姆鍋認為這點的確有幫助,但驗證產生的程式碼是否正確所花的時間成本也要考慮進去。
  • 錯誤診斷:AI 程式碼助理 可以幫助開發人員識別和修正程式碼中的錯誤,提高程式碼的可靠性。
  • 程式碼說明:它可以提供程式碼的說明和文件,幫助開發人員理解和使用程式碼。

山姆鍋認為 AI 程式碼助理主要的優點在於:

  • 減少重複性工作: 常見的功能或者測試腳本,都可以產生不錯的範本,減少從頭撰寫的時間。
  • 提高學習效率: 對於新的程式語言或者框架,可以比較已經熟悉語言的實作與由 AI 程式碼助理產生新語言或框架的實作差異外, 程式碼助理也可以協助解釋新程式碼,讓開發者更快掌握新技術(或者不需掌握新技術,提供新的實作)。
  • 提高程式碼品質: 這點就非常主觀了!但從生成的程式碼來看,撇開邏輯可能不正確的情況,所產生的程式碼在風格、命名與容易理解上都比大部分開發者好。至少應該是是比山姆鍋寫得好。

然而,AI 程式碼助理也有一些缺點:

  • 精準度:AI 程式碼助理的精準度可能不如人類開發人員的精準度,特別是在複雜的程式碼或不常見的情況下。
  • 個人化:AI 程式碼助理可能無法完全理解開發人員的個人風格,因此可能無法提供完全符合開發人員需求的建議。
  • 延遲:AI 程式碼助理可能需要一些時間來處理和回應開發人員的請求,特別是在處理大量的程式碼時。
  • 可靠性:AI 程式碼助理可能會發生錯誤或無法正確理解程式碼,因此需要開發人員進行手動檢查和修正。

總的來說,AI 程式碼助理是一種有用的工具,可以幫助開發人員提高生產力和效率,但也需要開發人員在使用時進行適當的檢查和調整。

整合開發工具

由於公司使用 VS Code 作為開發工具,為了更好地將 AI 程式碼助理整合進工作流程,測試幾個 VS Code 的擴充套件。至於為何沒有測試 GitHub Copilot?理由很簡單:因為沒有免費試用版本。

Continue.dev

這個擴充套件除了使用所提供的線上服務外,可以使用本地運行的大語言模型(例如透過 Ollama 運行 Llama3, starcode 模型)來補全程式碼以及其它輔助工作。相較其它套件,Continue.dev 在設定上比較繁瑣。該有的功能都不缺,使用者介面的體驗差異就見仁見智。 可以使用本地運行的模型是此套件的最大亮點,山姆鍋甚至為了要在本地跑大語言模型買了一台 Mac Studio 主機。

Codeium.ai

Codeium 目前使用起來開發體驗算是最好,倒不是說它產生的程式碼品質比較好,而是能夠從 UI 直接針對程式碼段落協助重構(refactor), 產生註解等等。免費試用版使用的是 Codeium 自己訓練的模型,反應速度上還不錯; 商用版則可以選擇 GPT-4 語言模型。 s 市面上有另一套名稱為 Codium 的產品,這兩者並不相同,不要搞混了。 s

Sourcegraph Cody

測試時,Cody 背後的使用的模型(Claude3)顯然在程式碼理解與修正能力上比 Codeoium 來得出色。就功能來說,兩者差不多,但 Cody 的免費版有聊天訊息的數量限制。

Amazon Q Developer

也就是原先的 Amazon Whisper 改名,由 AWS 推出的一個全新 AI 程式碼生成工具。除了跟 IDE 整合外,Amzaon Q Developer 也支援命令列自動完成(auto completion)的功能,對於常見的指令的參數可以提供即時的提示,對於終端機介面重度使用者來說是一大福音。

小結

雖然無法保證產出正確的程式碼或建議,但如果把生成式 AI 當作程式碼產生器,倒也是可以節省很多從頭開發的時間。 撇開程式碼生成方面,在回答一般性的程式碼問題上,山姆鍋覺得也是一大助力。例如:請它說明某個已知演算法的原理, 提供範例程式,甚至建議適用的演算法等等,即使不一定完全符合需要,但也能夠啟發大致的解決方向。

N.B. 本文”AI程式碼助理”的內文由 Codedium 協助產生,山姆鍋只是補充優點以及一些個人想法。完蛋,AI 寫的文章都比我好了!

郭信義 (Sam Kuo)

奔騰網路科技技術長,專長分散式系統、Web 應用與雲端服務架構、設計、開發、部署與維運。工作之餘,喜歡關注自由軟體的發展與應用,偶爾寫一下部落格文章。