如果談到用 AI 來進行程式開發,有人可能想說要在 ChatGPT 或各種網頁生成式 AI 聊天工具,把程式碼、prompt 和需求、錯誤訊息…等等,反覆複製貼上,像在幫 AI 當搬運工,工作效率非常低。
有人可能在短影音或社群網站看過聽過一些神奇工具,可以直接在程式碼編輯器中操作,減少這種在不同視窗之間複製貼上的冗餘操作。

大語言模型(LLM)的生成式 AI 的浪潮席捲全球,ChatGPT 問世也超過一年,企業家或帕魯可能都利用這些工具,找到更好的作業模式。


(把知名的迷因圖改了一下)

這次要來介紹 GitHub Copilot 和其他類似功能的工具們,有些還是免費的,甚至還可以佈署在電腦本機,不用花錢,不會被邪惡的資本主義或商業巨頭控制。

GitHub Copilot

標語: Your AI pair programmer
連結: https://github.com/features/copilot

GitHub 一開始是一個原始碼代管平台,後來在 2018 年被微軟收購,這幾年的發展有目共睹,至少沒有被微軟玩爛掉。
GitHub 還與某個 AI 研究機構合作,使用 GitHub 上面存放的上千萬個 GitHub repo 程式碼庫來進行訓練,在 2021 年發佈 GitHub Copilot 預覽版,在 2022/6 正式開始收費訂閱制。當年可能一般人都不關心那個 AI 研究機構在幹嘛,現在大家可能稍微關心一點了…那個機構就是不太 Open 的 OpenAI。

有些人當初把程式碼放到 GitHub 是為了做版控、方便多人協作等用途、薅平台上的各種免費功能,或是讓自己帳號有滿滿的綠格子(contributions chart),專案有得到星星,這樣面試時比較好看。
可能到了 GitHub Copilot 開始收每個月幾十塊美金,才後知後覺驚覺,咦? 大家的資料都被拿去做 AI 訓練啦?

先假設看這篇文章的人都知道 GitHub Copilot 是什麼,就不過多描述,總之它有幾大項功能:
– 根據目前輸入的東西,自動產生下文的程式碼建議(通稱 code completion)。
– 根據註解產生程式碼(通稱 comments to code)。
– 在側邊欄或行內與 AI 對話,在聊天視窗內請 AI 解釋程式碼、錯誤修正、產生 git commit 訊息等操作。

GitHub Copilot 是要付費的,有 Individual, Business, Enterprise 三種方案,依方案不同,每個人每個月的訂閱費用分別是美金 $10、$19、$39。
比起獨立開發者用的個人方案,Business&Enterprise 方案多了網路搜尋、許可證管理、政策管理(鎖IP之類的)和知識產權保障(避免公司的程式碼被拿去訓練)。首頁下面的 FAQ 有說:

GitHub does not use either Copilot Business or Enterprise data to train its models.

GitHub Copilot 其實也有免費方案,但主要只有兩種條件:
– 師生方案,Copilot 包含在 GitHub Student Developer Pack 內,需要上傳學生證或在學證明文件供審核。
– 系統認可的開源方案貢獻者,主要根據帳號底下的 repo 和 PR 紀錄,每年會重新 review。

傳統程式碼工具的功能,輸入類別名稱,後面能剛好跑出一些相關的屬性名稱或方法名稱小清單,或是之前用過的函式名稱或變數,這種 typehead 在以前就覺得很好了,當年完全沒想到未來還有這種開發方式。
這種 AI 輔助開發工具能做更多無中生有的事情,也比較不需要剪剪貼貼,能跟程式碼編輯器完整融合。

Github Copilot 有微軟爸爸、新世界的神 OpenAI,和全世界工程師的程式碼,那產品是完美的嗎?
當然不是完美的,本文中等下介紹的其中幾個產品,就專挑 Github Copilot 來打,有的打速度,有的打程式碼生成品質,有的打隱私性。

付費可能也是一個缺點?
想在公司用 Github Copilot 的人,可能還在寫申請單、因為縮排和行距不對被退件、等公司跑簽呈、開一堆會議跟不寫程式的人解釋 Github Copilot 是幹嘛用的、解釋為什麼公司工程師沒辦法自己做一套? 是不是有了 Github Copilot,以後公司就不用花錢買防毒軟體跟 Windows&Office…
等下會介紹一些其他的 AI 寫程式工具,不用搞那些內耗與溝通,例如可以在本機 GPU 執行、例如內建免費 LLM,可能早就已經完成工作了。

以下繼續介紹其他類似 GitHub Copilot 的程式開發輔助工具。

Amazon CodeWhisperer

標語:適用於 IDE 和命令列的 AI 驅動的生產力工具。
網址:Amazon CodeWhisperer
用法:裝在 IDE 或 CLI 上。

相比亞馬遜的電商服務,雖然 Amazon Web Services (AWS) 雲端服務通常只佔 Amazon 年度營收不到三分之一,但隨著雲端計算和 AI 浪潮的興起,AWS 這個「賣鏟子的」,也在這些新興領域持續投入創新,推出全新的 AI 驅動服務和工具,以滿足開發者日益增長的需求。

2023/4月發佈的 CodeWhisperer 就是一款基於 LLM 的 AI 助手。除了有類似 GitHub Copilot 的程式碼建議功能、側邊欄對話功能(Amazon Q),還提供程式碼漏洞掃描額度。

– 個人可免費使用,專業版則是每人每月 USD$19。
– 免費版提供 50 次程式碼安全掃描 (每位使用者、每月),現階段不支援 PHP,僅適用於 Java、Python、JavaScript、TypeScript、C# 等程式語言。

Amazon Q
這是側邊欄對話功能(Amazon Q)當機時的擷圖…

有些回答會並附上參考出處,可以直接將程式碼插入編輯檔中,或是先複製起來。
對話框目前一次最多可以放 4000 字,不支援中文。

2023 年底又發佈了新功能 CodeWhisperer for command line 預覽版,就是一個類似 Wrap 的功能,可以在命令列(終端機)操作視窗中得到 AI 輔助,不過 CodeWhisperer for command line 現階段只有 macOS 系統可以安裝,不過 Wrap 也只有 macOS 跟 Linux 的版本,這下知道為什麼有些工程師明明不寫 iOS app 卻也用 Macbook 了吧?

講到這種命令列 AI 輔助工具,不得不提之前一個叫 Fig 的 CLI 工具,使用 OpenAI 的 Codex 模型,Fig 在 2023/8 被 AWS 收購但收購不是另一個開始,而是結束。Fig在 2024/2 月初宣布將結束服務,請原先使用 Fig 的使用者轉移到剛剛介紹的 CodeWhisperer for command line。

其他關於 AWS AI 工具的責任聲明和隱私權問題可參考 AWS Responsible AI PolicyAmazon CodeWhisperer 常見問答集

Tabnine – 強調隱私性

標語:an AI assistant that speeds up delivery and keeps your code safe.
網址:Tabnine
用法:裝在 IDE 或 CLI 上。

網站首頁一打開,畫面和文案不斷強調 :
code privacy,
private,
protected,
compliance,
trusted by
in your control
Never stores or shares
without the risks…
原來是個賣生產力工具的,還以為是賣保險箱或保全服務?

一樣有類似其他家的程式碼對話(Tabnine Chat)或是自動建議的功能。但沒有像其他家一樣擺一些轉眼間生成一堆程式碼的動畫 gif、各種 IDE 或是程式語言的 LOGO,而是找到一個自己的賽道。

tabnine home page

Tabnine 不跟其他家一起卷說模型有多強、支援幾種外部 LLM、回應速度有多快、正確度多高、有多少增進 DX 的小功能之類的,它知道以企業用途來說,付錢的人是誰,
就是更主打隱私、合規、管理性,提供三種方案:Basic、Pro、Enterprise,最高階的 Enterprise 可以佈署在私人的環境中,或是連接組織內私人的 GitHub、GitLab、BitBucket,使用本地程式碼訓練與執行。

Tabnine Pro 版本的費用比 Copilot Business 略低一些,最高階的方案 Tabnine Enterprise 則跟 Copilot Enterprise 價格一樣都是 $39,看來月費美元 $19 跟 $39 就是這類產品的魔法定價,比這個數字還高的可能就不用賣了。

JetBrains AI

標語:Supercharge your tools. Embrace new freedom.
網址:JetBrains AI
用法:IDE 擴充套件

一些工程師們可能現在還在筆戰「地表最強 IDE」的名號,究竟是要頒給 Visual Studio,還是 JetBranins 全家桶?
而不寫程式的人可能還搞不懂 Java/JavaScript,Visual Studio/Visual Studio Code 的差異,在寫企劃書或各種場合張冠李戴。

JetBrains 就是這麼強,寫 Java 的開發者可能每年都要花 $100 多美金訂閱 IntelliJ IDEA,寫 C# 的前輩在其他作業系統上可能會使用 Rider,JetBrains 旗下還有許多軟體開發工具,涵蓋多種程式語言和技術。

這麼知名優秀的軟體開發工具公司,在 AI 風潮當然不落人後,也在 2023 年發佈 JetBrains AI,同樣也有程式碼對話、自動建議等功能。背後使用 OpenAI 和 JetBrains 自行建立的較小模型,官方也說正在努力整合 Google 的 LLM 。

JetBrains AI 需要付費,單買的話每年 $100 美金,7 天試用期。另外因為是跟 OpenAI 合作,所以基本上那些禁止使用 OpenAI 的國家都無法使用,像是中國(香港和澳門也算進去)、北韓、俄羅斯,可參考 JetBrains AI Service Territory Limitations 名單。民主自由的台灣還能用。

Tabby – 完全本地佈署

標語:Opensource, self-hosted AI coding assistant
網址:Tabby
用法:IDE 擴充套件

前幾項產品都很舒服,使用者不需要思考背後的生成式 AI 模型在兵器譜上排名第幾位?
AI 生成的程式碼是從哪來的資料?
工具上面的按鈕點了沒反應要怎麼修?
線上服務背後的人力和伺服器是從天上掉下來的?
註冊後開箱即用是很方便沒錯,但可能被邪惡的商人或 Big Brother 掌控,或是結束服務就沒得用了。

Tabby 主打的是在本地佈署 AI,建議必須使用 8GB 以上 VRAM 的顯卡。

Tabby 使用 CodeLlama-7B 等一些開源 LLM,真的是本地做到底,目前也不能直接綁自己的 OpenAI API KEY 上去用。
使用者還可以修改 Models Registry 參數,使用 Tabby 精心挑選並進行基準測試的模型,或是參考 FAQ 中的文件連結,想辦法換上自己的本地模型,

自由也是有代價的,雖然官方很用心了撰寫關於 (Windows, macOS, Linux) x (NVIDIA CUDA, Apple Silicon, AMD ROCm™) 等各種作業系統、GPU 排列組合下的各種安裝說明文件和 FAQ,
還提供了線上版測試區 Tabby playground 讓人體驗一下 AI 自動建議的功能。
但支援的程式語言明顯比起其他少很多,支援的開發工具也只有 Visual Studio Code、IntelliJ 系列、VIM。

CodeGenius

標語:Your AI Code Assistant
網址:CodeGenius
用法:VS Code 擴充套件

功能介紹上面寫的跟其他產品類似,自動建議程式碼、修正或解釋現有的程式碼之類的。

舉這套出來不是因為它有多好用,安裝數有多高,而是因為這套也具有一種代表性:可能在 VS Code 的擴充套件市集騙流量的代表性。

codegenius faq 404

不是針對這套,用 OpenAI 等相關關鍵字在 VS Code 的擴充套件市集搜尋,可以找到成千上百筆這種 AI 輔助程式開發的免費套件。

除了那些知名的開發者或團隊出的,有健康的營利商業模式,有正當的公司在經營,其他還有一些看起來很玄的可疑套件,通常有以下特色:

  • 一些 AI 科技主題的工具蒐集站/短影音,很愛介紹這種,介紹文寫了一大篇,可能也是 AI 生成的,不知道自己是否用過。
  • 上架後從未更新,非常的完美。
  • 支援哪些程式語言? 背後使用哪個 LLM? 都是秘密。
  • 有些看起來只是讓 AI 玩 cosplay,弄了一些 Prompt engineering 產物放在右鍵選單內,不是真的針對各種使用情境設計了什麼技術護城河超高的新功能。
  • 功能跟前述商業公司產品的穩定性和功能性無法比擬。
  • 使用者不需要填自己的 OpenAI API KEY,有些可能是套 gpt3.5 或其他免費的 LLM,或是撞到每小時/每分的 API limit,或是用愛發電,表現非常差。
  • 有些會開放讓使用者填自己的 OpenAI/Azure-OpenAI 的 API KEY,不知道是不是來騙 API KEY 的?
  • 開發者的隱私條款等各種資訊無法開啟,應該是套件審核上架完就刪掉了。或是條款使用制式範本,安全性令人存疑。
  • 開發者頭像圖使用 AI 生成的。

前述幾點可疑特徵的龍珠全部集滿,可以召喚出神龍嗎? 並沒有。可能讓開發者的履歷多一筆「曾開發 VSCode 擴充套件,成功上架並得到幾 K 安裝數」。

有些則是把 VS Code 套件當成一個導流來源,因為 Visual Studio Marketplace 不像 Google Play 或 App Store,沒辦法直接讓開發者收一次性費用或週期訂閱費用,所以開發者網站上還有其他 AI 工具,等著大家去付費使用。

通义灵码 – 中國阿里雲出品

標語:灵动指间,快码加编,你的智能编码助手!
網址:通义灵码
用法:IDE 擴充套件

通义灵码是一個中國阿里雲的公測項目,支援 Java、Python、Go、JavaScript、TypeScript、C/C++ 程式語言,可以在 JetBrains IDEs 和 Visual Studio Code 使用。功能也是大同小異,可以生成程式碼、解釋程式碼、建議程式碼。

通义灵码是 2023/10 發佈的,基於阿里巴巴達摩院出品的通义大模型,號稱在一些測試中超越 GPT-3.5 和 Llama2,并在加速追赶 GPT-4

這又有一個有趣的問題,台灣公家機關有禁止使用大陸廠牌資通訊產品相關規定,那在 OCR 或文本處理中使用一些中國的免費開源 AI 模型,或是在程式開發時使用這種中國的程式碼輔助工具(個人免費使用,商業版需要填寫通义灵码智能编码助手企业服务方案諮詢表單),沒有花錢買,就沒有問題嗎?

不過這陣子才爆出新北市公車的免費wifi,出現中國華為頁面,還有桃園的中原國小的停車場尋車機拿中國車牌號當範例…等新聞,不要擋人財路。

關於隱私條款:,可參考通义灵码常见问题:

我们不会存储你的代码数据:
代码补全时,我们需要获取你的代码上下文信息以完成补全,但上下文信息不会被存储或用于其他任何目的,该等数据完全由你所有及控制。
研发智能问答时,我们仅会在你点踩/点赞后,仅针对聊天记录(不包含代码),并将数据进行脱敏、去标识化处理后,用于算法的升级、迭代。

Codeium

標語:The modern coding superpower
網址:Codeium
用法:IDE 擴充套件

功能上除了別人也有的程式碼建議、程式碼對話,Codeium 還號稱支援 40 幾種 IDE 與 70 幾種程式語言,甚至還提供瀏覽器套件,也提供線上試用。

codeium playgroun js test

還有兩個主打功能,一個是 AI Search,例如可以用比較語意方式搜尋專案中的程式碼相關片段。

codeium search sample

此為官方 demo 範例圖,至於現實中看似短短幾行背後的 function 裡面寫得多可怕,實際用起來有沒有這麼好用,沒有人可以保證。反正那些是我們帕魯本來的工作嘛,我不幹,還有其他帕魯幹。

另一個是 Context Engine,號稱比其他 AI Dev tool 更加強大,還會根據開啟的專案檔或是 repo 做出程式碼建議,提高抽卡成功率。

Codeium 的個人版本是免費的,擁有無限次數的使用碼建議,而 Team 團隊版本是每人每月 $12 美金,超過 200 個帳號則需要升級 Enterprise 企業方案。

免費版本沒有 GPT-4 Support,付費版擁有更多功能,而且為了怕大家覺得免費的背後有一些骯髒的操作,Codeium 還特地做了一頁 How is Codeium Free? 說明來提升大家的信心。而且強調

We take security & privacy very seriously – we never sell/share user data/code or train our generative models on user code (我們非常重視安全和隱私 – 我們從不出售/分享用戶數據/程式碼,也不會拿使用者的程式碼訓練生成模型).

Supermaven

標語:The fastest copilot.
網址:Supermaven
用法:VS Code 擴充套件

上面有提到一個 TabNine,特點是非常注重隱私之類的,但不得不提一下它的創始人 Jacob Jackson 在學時期就看出 AI 的前景,從 2018 年就開始開發 TabNine,經營了這麼多年,終於收穫甜美的果實…
不! 這不是那種龍傲天穿越系的故事!

Jacob Jackson 在 2018 年在學時期就開始做,這部分沒錯,而不是等 2022 年看到 ChatGPT 跟 Copilot 才開始跟風。
但現在的 TabNine 是 2019/11 的時候,被一個以色列新創 Codota 收購的,Codota 的產品性質跟 TabNine 相當類似,收購後公司保留 TabNine 的名稱,繼續發展,在 2024 年的時候還能繼續被台灣人的寫文章傳誦。

當初的收購金額沒有公開,但 Jacob Jackson 出場之後沒有過著閒雲野鶴或是紙醉金迷的生活,在當上 OpenAI 的研究員之後,又再開發了 Supermaven 這款工具。

Supermaven 為了提升開發效率更是不遺餘力,主要的兩大特點:
1.更大的 token 數。
撰文的當下,OpenAI 支援最多 token 數的模型 gpt-4-0125-preview(GPT-4 Turbo) 也只有 128,000 tokens,而 Supermaven 目前官網上寫的是 300,000-token,理論上可以生成品質更好的程式碼。

2.更短的延遲速度與更快的生成速度
Supermaven 主打的就是快,直接在官網擺上與其他競品的延遲速度比較表,真是不講武德。

supermaven speed compare chart

Supermaven 主打速度,這賣點也的確滿吸引人。
前述這類 AI 程式碼輔助開發的產品 demo 影片都看起來非常棒,但實際上用起來呢? 穩定度和回應速度常常令人詬病,三不五時等個老半天還沒回應,不知道是在運算中,還是當機了?

碰上這種線上工具的速度、穩定度問題,各家廠商多半會建議升級到更高階的方案,其背後可能會有另外針對高階會員,提供獨立的算力或系統資源。
或是考慮找本文某些可以本地佈署的 AI 寫程式工具,設備不夠是貴單位自己的事。

Supermaven 有獨家的優化技術,天下武功,惟快不破,不用讓使用者自己準備本地算力和佈署模型。沒有免費版,只有 30 天試用,費用是月繳 $10 美金或年繳 $99 美金。

Continue – 自由選擇本地或雲端的 LLM

標語:The easiest way to code with any LLM
網址:Continue
用法:IDE 擴充套件

一樣都是程式碼對話和自動建議程式碼,這還有什麼好介紹的? 答案就是…自由。

前文中有些免費跟付費方案在於模型差異,免費版只能用比較舊的模型、有限的共享算力,或是停止繳費就完全無法使用。
而 Continue 把這件事還給使用者,可以自由選擇相容的本地或雲端的模型提供者,
自由選擇相容的模型,使用開源免費的LLM,或是其他 OpenAI GPT、Claude、Google Gemini 的商業付費模型(要自己準備 API KEY)。

continue model select

預設有一些 trial 版本可以選,要修改的話可以按齒輪圖案,會跑出一個 json 檔編輯畫面,然後參考 Continue 的官方技術文件,把參數填上。

Double

標語:AI coding assistant engineered for performance
網址:Double – Visual Studio Marketplace
用法:VSCode 擴充套件

這又是一間名列 YC 的 Startup Directory,榮獲 YC 投資的公司,功能上也是程式碼對話和自動建議程式碼,但號稱能擁有比 Github Copilot 更高品質的功能。

以下是 Double 官網上的舉例擷圖 Double vs. Github Copilot,官網上有好多例子,我只借了一張。

double vs Github Copilot

產品提供免費版本,但因為 Double 是用貴桑桑的貴族模型 OpenAI GPT-4 Turbo 和 Claude 3 Opus,所以每個月只有 50 次跟 AI 請求神諭的額度,付費版是 $20 一個月或是年繳 $192。

Cursor

標語:The AI-first Code Editor
網址:Cursor Editor
用法:獨立的編輯器

本文中其他產品都是依附在某個程式碼編輯器底下,只有 Cursor 是自己做一套編輯器(Fork 開源的 VS Code 來改)。
剛出來時功能比較陽春,什麼 chat 跟自動程式碼建議都沒有,而是每次都要叫出命令列(類似 VS Code 按 Ctrl+Shift+P 會從上面跑出來的那個東西),輸入 prompt 之後,讓它產生程式碼。

後來 GPT-4 剛出來時,Cursor 甚至還號稱內建 GPT-4,被一些 AI 科技行銷帳號名列在「免費使用 GPT-4」的工具名單上,但使用時常常當機毫無反應,一旦失去了自動產生程式碼的功能,比普通的編輯器還難用,就像賭聖電影中失去特異功能的大軍一樣。

那時候以為 Cursor 就要這樣下去了,結果後來又捲土重來,推出健康的收費制度,功能也更完整。
免費版僅提供 50 次 GPT-4 和 200 次 GPT-3.5 的每月使用額度,付費版是 $20 一個月或是年繳 $192。

cursour editor at something

功能上一樣有側邊程式碼對話和自動建議程式碼,側邊對話視窗也設計得不錯,可以輕鬆帶上一些資料。
而且側邊欄沒有鎖程式相關問題,什麼都能問。

也可以在 Cursor 的軟體設定中輸入自己的 OpenAI API Key,如果吃米不知道米價,可以綁自己的 OpenAI API Key 上去,狂用一個月,就知道自己花了多少錢。
ps.在這篇文章要發佈(2024/3月底)的時候,OpenAI 的 API KEY 方案已經從下月結帳,變成要先儲值預繳(prepaid billing),儲值最低5美元起跳。

Project IDX

標語:Code faster with generative AI
網址:Project IDX
用法:網頁瀏覽器內使用的編輯器

微軟有 Github Copilot,亞馬遜有 Amazon CodeWhisperer,Google 當然也沒有缺席,整合了自家的 AI 和一些其他產品,做出一個實驗性的 Project IDX 編輯器。

主要特點有:

  • 真正的跨平台開發工具,在網頁瀏覽器內運行(用 Visual Studio Code for the Web 魔改的),即使是用 iPad 也能很快進入開發環境。
  • 支援多種程式語言自然是不用說,開發網頁可以即時 Hot Reload,開發 Flutter 時還內建模擬器,可以預覽 iOS 和 Android 畫面。
  • 雖然說是編輯器,要先開設專案,才能把檔案丟上去,除了本機、匯入 Github repo,一些主流程式語言的範例專案(web 後端只有Go,Flask,Node.js,Rust,Laravel),還可以在專案中加入其他協作者。
  • 與 Google 自家的 AI 整合,自動建議程式碼、解釋程式碼、程式碼對話(IDX AI Conversation)等功能都有。

把整個開發環境搬到線上,有些地方需要適應跟調整,自動程式碼建議或是 comment to code 反應比較差,但至少也還能用 IDX AI Conversation 做一些簡單的事情。

大概去年(2023/8)就排到 waitlist 了,會收到一封主旨”Time to try out Project IDX, a new web-based development experience!”的信。
使用時不用花錢,直接把本機檔案丟上去也沒說有什麼空間限制,但不知道為什麼就是不太想用。


(idx 說明文件)

怕 Google 關閉部發威吧? 大家都知道 Google 發佈一個新服務就是為了要關閉它,

Devv.ai – 寫程式專用的 AI 搜尋引擎

標語:The next-Gen search engine for developers
網址:Devv.ai
用法:線上網站

號稱是專為程式開發人員打造的 AI 搜尋引擎,雖說是搜尋引擎,Devv.ai 會直接丟出一個整理好的結果。

以前在中古世紀,例如碰到錯誤訊息,要上網搜尋找解法時,經常碰到:
– 搜尋後要自己一個個點進去搜尋結果,然後碰到更多問題。
– 找到一堆有人發問但是沒人回答的討論區網頁,還有可能是幾年前的自己問的。
– 碰到有人有同樣問題,底下的留言是叫人去看另一篇,然後另一篇又說再去看其他篇
– 找到一堆點進去是 404 的論壇連結或官方連結。
– 看回答要註冊會員。
– 查看回答時間,太久以前的回答在現代可能根本不能用。
– 尋找一個回答評價最高、底下有沒有吐槽的留言。

Devv.ai 回答的內容除了會列出一些外部參考來源,還可以將結果連結分享別人,底下還會列出接下來可能會問的問題等等,年繳 $122 付費方案有號稱更聰明的 AI 可以用。

補充: 後來看到有人把這類工具整理成一個 repo,分成 AI code completion tools、Code completion LLMs、AI code assistants/search、ChatGPT in your editor 幾個大分類,
有興趣的可以看看 Awesome-Code-AI

AI 開發程式常見的問題

沒出事的時候大家都說 AI 是完美的,以後都不需要人力來執行了。
但是當出問題的時候,AI 突然又變成 Copilot,只是輔助人類的工具,人類需要在使用的前中後去做各種管理、監督、控制、修正。
反正挑對自己有利的講,自助餐真好吃。

經過本文介紹,一般非程式開發人員應該也可以稍微了解,這類工具跟直接在 ChatGPT 複製貼上有什麼差異。

但除了文中提到產品一些各自的問題,像是功能太少、穩定度不佳、隱私政策不明。
還有一些使用者本身的問題,像有些產品特別強調隱私保密性,但使用者不一定關心這些,帕魯可能想說公司連一些工具都不買,交代的工作有交差就算了,自己還想著幫公司省錢,還要找沒有隱私疑慮的工具?
或是有些地方可能本來就沒什麼大事好做,拿來玩玩也就算了,還想要依照人頭數,請公司編列預算,一個月花個幾百幾千美元訂閱這類生產力工具? 大白天上班時不要說夢話

以下順辦分享一些 AI 來做程式開發的使用經驗:

太新的程式寫不出來

例如某一天 OpenAI 的 API 文件更新了一些功能,不只是模型名稱換了,連傳入的參數有變動,還有更多玄乎的 AI 領域專有名詞,想體驗看看新功能有多神,但又不想看文件? 我幻想 OpenAI 自家的 AI 已經有被餵食好資料了,但結果當然又是讓 AI 表演一本正經的胡說八道。沒有人會知道那些新資訊什麼時候會訓練完成並更新到模型內,軟體產業每週一小變,每個月一大變,苦海無涯,回頭是岸。


(OpenAI 會標明訓練資料大概是多久以前的)

同理,有些問題或需求可能是新版本的 bug,或是新到沒有任何資料,想要 AI 試著做出 workaround,或是從舊資料中舉一反三? 以為 AI 帶來無限可能,但可能更常碰到無限失望。

太舊的環境寫新程式

例如這類 AI 運作的基礎,通常依照檔名猜測這程式想幹嘛,依照副檔名猜測這是什麼程式語言,檔案中的一些變數名稱,使用的函式可能有某種跟歷史資料相同的 pattern 等各種因素,再搭配 LLM 的神奇魔法,有機會得到理想的成果。還有人嘗試把壓縮混淆過的程式碼丟給生成式 AI,重新寫成易讀的程式,或是解釋程式碼,有時候竟然也能得到堪用的成果。

但現實的變因太多,例如 AI 並不知道這套程式佈署在什麼環境,結果會一直寫出實際上無法執行的東西。或像專案還有其他 context 的時候,工人們會避免使用某些寫法,但是 AI 經常會屢勸不聽,等幾輪對話 token 數超過之後,就把一開始約定好的事情忘得一乾二淨。

當生成式 AI 因為專案或環境限制,無法提供可用的程式碼,會像那個干擾潛水員的魚一樣,經常在開發人員使用時跑出建議,但卻一點用都沒用。

已知執行結果,想找出由哪幾段程式碼執行出來的

例如想要修改輸出結果,當接手別人的程式,或修改 OSS 時,或是 debug 時會用到。但是這種需求光靠 AI 解決的成功率很低,程式碼多到撞到 token 數上限先不說,更何況 AI 還看不到 DB 內容或其他背景資訊。「工人智慧」的參與比例降不下來。
雖然本文中某些工具有類似這種功能,但能否達成需求,還是看運氣。

有些程式不適合給 AI 做

通常人類自己會寫但就是不想自己寫的,而且不牽涉太多其他外部程式,請 AI 來寫,這樣抽卡成功率最高,即使產出有問題,一眼就能看出來,或是知道加入什麼條件再請 AI 修改,甚至得到一些啟發。
但如果請 AI 做的是自己本來完全外行的領域、一開始就毫無方向的東西,再結合其他特點,想得到滿意的成果? 抽到一番賞的成功機率就低了。或是以為 AI 寫的是好的,但實際上問題一大堆。

至於如果是覺得說日常用的軟體要付錢,很討厭,所以要請生成式 AI 寫一套 Windows、Office、Adobe 軟體出來,這麼大的夢想不適合在這邊討論。

自由奔放的 AI

雖然說 AI 懂得很多,但也有很多新手壞習慣,例如接收資料後,不檢查格式直接開始執行,SQL 不用參數化查詢,不設計例外情況,看得人冷汗直流。不過人類工程師也不一定有這種共識,如果沒有講說手機號碼需要檢查格式和重複,可能什麼亂七八糟的情況都會出現,把 prompt 寫清楚,把規格書寫明白,是最保險的。

當然 AI 是無法負責背鍋的,就算資本家或長官用 AI 當藉口來砍時間砍預算,這鍋還是得由人類來背。

AI 會有幻覺(hallucination)

人類當然也有幻覺,但此幻覺非彼幻覺,例如可能主事者聽別人講了一個關鍵字,腦補錯誤的知識和觀念,以為這可以解決問題。
請 AI 進場之後,AI 不僅沒有提供適當的建議,會猶如好像從台灣搭高鐵去北京一樣,離目的地越來越遠。反觀老司機會知道什麼需求該用什麼工具…。
不過市場上,把客人載去碼頭搭火車,收一次錢,然後等到客人發現碼頭搭不到火車,要搭去其他地方再收一筆錢,這種黑心廠商可能更加賺錢,活得更久。

撰寫程式在整個專案過程只佔很小一部分

其餘像是整理資料、分析需求、重現錯誤、撈 LOG 查問題、修改軟體參數測試、操作一些公有雲的網頁控制介面、系統架構問題,有許多地方是 AI 接管不到的,仍需要純人力或其他方式解決。

還會有一種現象,就是不需要寫程式的人,嘗試用 AI 在乾淨環境下做出一個小小的成果,然後就會放大延伸到「這麼簡單的東西連我都做得到,XXX 就只是再稍微延伸一下,怎麼可能不行?」「有 AI 在還說做不到XXX,真是懶惰」,大概就是像有人用剪映弄了一個小影片,然後就說他可以當國際大導演;有人在英雄聯盟 LOL 遊戲中打贏遊戲,然後就說他可以當國防部長,最可怕的是有這種認知的人還負責決策,所以生活中不少產品或服務在「長官指導」下變成一些奇怪的樣子,也不令人意外。

公正的 AI 程式碼生成工具測試指標?

文中介紹了好幾套,但並沒有哪一套是壓倒性獲勝,而是在開發者體驗上各有所長,在這種無國界的專業領域,對於哪套 AI 輔助開發工具最強,也沒個定論。
有人說 XXX 超好用,同一套也有人說寫得好鳥,就像愛情一樣,失敗的婚姻百百種,但美好的婚姻只有一種,想要得到美好結局,絕不簡單。

目前有一些測試項目專門設計來考驗 AI 寫程式的能力,像是 SWE-bench,測驗內容不是單純寫 3sum 或 invert binary tree 之類的,而是要讀懂使用者提交的 issue 內容,再找到專案內哪一段程式碼導致此問題,並提交正確的 PR…
聽起來跟現實世界的工人們在做的事比較接近了吧?
寫這篇文章時,當下 SWE-bench 跑分最高的是 Cognition AI 的 Devin,成功解決了約 13.86% 的問題,而其他 gpt4 之類的則連 5% 都不到。

結語

汽車自動駕駛有 Level1~6,而對於程式開發、軟體工程,還沒有這麼明顯的分野,網路上頂多看到一些管理顧問公司,或是一堆工程師的類似這種文章Shesh’s blog – Thoughts on the Future of Software Development,探討關於全自動開發(autocopilot)、輔助開發、手動開發、No Code、Low Code 等方式如何解決需求,甚至更激進一點,探討要把哪個職位幹掉?

但畢竟工具還要自己動手操作,而帕魯會自己搭乘交通工具來上班,生病會自己去看醫生,還可以用一些 PUA 話術來驅動,真是太方便了。

當然有些事情很抽象,當局者迷,旁觀者清,不一定每個人都想聽這麼多,就像前陣子聽一些 AI 用於 SEO 的議題,不管每個講者介紹了多少搜尋引擎與演算法機制、講了多少遍關鍵字研究方法、要探尋潛在消費者可能會想看的東西,但還是會有人問「所以不能用 AI 嗎?」「用 AI 把兩篇沒人看的舊內容合併改寫,就可以排到第一頁嗎?」之類各種去脈絡、二分法的問題,也許有人就只是想找個東西可以用來偷懶省成本,或負責背鍋。

最後講個工程師笑話:如何請工程師把大象放進冰箱?
把 Deadline 跟 KPI 訂出來,時間到了之後大象就會在冰箱裡了。