GitHub Copilot AI 替代品,12 款不可錯過的程式開發秘密武器
如果談到用 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)當機時的擷圖…
有些回答會並附上參考出處,可以直接將程式碼插入編輯檔中,或是先複製起來。
對話框目前一次最多可以放 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 Policy 和 Amazon 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 不跟其他家一起卷說模型有多強、支援幾種外部 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 的擴充套件市集騙流量的代表性。
不是針對這套,用 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 幾種程式語言,甚至還提供瀏覽器套件,也提供線上試用。
還有兩個主打功能,一個是 AI Search,例如可以用比較語意方式搜尋專案中的程式碼相關片段。
此為官方 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 主打速度,這賣點也的確滿吸引人。
前述這類 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)。
預設有一些 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 是用貴桑桑的貴族模型 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。
功能上一樣有側邊程式碼對話和自動建議程式碼,側邊對話視窗也設計得不錯,可以輕鬆帶上一些資料。
而且側邊欄沒有鎖程式相關問題,什麼都能問。
也可以在 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 訂出來,時間到了之後大象就會在冰箱裡了。