copilot.github.comcopilot.github.com

2022/06/22:GitHub Copilot 要開始收費啦!比我想像的來得更早。價格是每月 10 美元或每年 100 美元,對學生與開源專案維護者免費。詳情請見官方這篇〈GitHub Copilot is generally available to all developers〉介紹。既然確定要收費了,自然也不必再申請,隨時可以安裝試用。

由微軟推出,鼎鼎大名的 GitHub Copilot,相信大家都已經有所耳聞,或者正在使用。

目前這個產品還處於「Technical Preview」階段,想要親自體驗嘗鮮,需要另外提出申請。剛推出時好像是秒申請秒過,但我在上個月初提出申請,月底才收到核可通知。

本來也想寫一篇關於 GitHub Copilot 如何輔助我寫程式的使用心得,可惜我用了一個多星期,並沒感受到太多驚豔。

在看了這篇〈能節省四成開發時間的工具? GitHub Copilot 的介紹與心得分享〉後,覺得自己可能也無法寫得更詳盡,索性就簡單聊聊。

GitHub Copilot 簡介

什麼是 GitHub Copilot?看 VS Code 套件首頁就定義就很清楚了:

GitHub Copilot is an AI pair programmer which suggests line completions and entire function bodies as you type.

主要功能:依據已輸入的上下文,自動預測與完成程式碼。其實也不限於程式碼,而是任何語言。

GitHub Copilot is powered by the OpenAI Codex AI system, trained on public Internet text and billions of lines of code.

使用的底層技術是 OpenAI Codex,其實就是知名的 GPT-3 所優化後的產品版,相較於使用 GPT-2 的 Tabnine,可以想見預測能力與品質會更上一層樓。

目前以 IDE extension 作為產品形式,支援:

待產品日益成熟,能支援的 IDE 廣度應該不是什麼問題。

我的 Copilot 極簡心得

說來見笑,沒有什麼太特別的心得,想看精彩的 coding 例示,建議直接參考這兩篇:

我主要寫 Python Django,照理說也是開源專案的主流之一,訓練資料應該不會缺乏。不過我得到的「行內提示」常常還是只有一行而已,很少像例子中的一整片——難道我寫的不夠正規 XD?

高級版 Tabnine

我認同,預測的品質確實普遍略優於 Tabnine,畢竟 Copilot 在訓練資料量和使用的 AI 引擎都佔有優勢,而且它還要求雲端連線運算,如何不贏?

儘管如此,用了一個多星期,Copilot 只讓我感到它就像一個高級版的 Tabnine,讓我難掩失望。

意料之外:寫作輔助

不過就在今天,打開 VS Code 修改舊文〈Python Docker SDK 快速上手〉時,第一次有了幾分亮眼的感受:

自然語言預測:斜體灰字部分自然語言預測:斜體灰字部分

在當下我都還沒想起來,預設位址應該是unix://var/run/docker.sock時,它就已經幫我把文句寫好了。

真的有一種「Copilot 在幫我複習」的錯覺!而且連用詞、語氣都如出一轍,不禁令人莞爾。

寫文章的利器?

Notion + VS Code:我的 Hexo Markdown 寫作工作流〉有講過,我寫文章都是先在 Notion 上完成初稿。如果 Copilot 的文字預測能力真的這麼強,是否我應該乾脆直接在 VS Code 進行初稿創作,藉用它的神預測來大大提升創作效率?

很遺憾,可能沒辦法。

我確實試了一下,覺得提示給得太過頻繁,且雖然預測的語句都尚稱通順,但內容常常不是我要的。換句話說,沒有足夠的上下文,它也猜不到你此刻想要表達什麼。

況且,像上圖中的「超常發揮」,也需要機緣巧合才有機會出現。並存在一個前提:句子後面沒有其他字元。如果是在「句子中」替換字詞讓文章更通順的編輯方式,提示字連出現的空間都沒有。

所以,我的結論是:拿 Copilot 來協助編輯、修改文章或許能「偶有佳作」,但想直接用來創作就有點不現實了。

小結:我對「機器輔助」的期待

不可否認,作為軟體工程師,AI 多少會讓我感到焦慮,畢竟程式碼直覺上很適合機器學習,可能哪天就再也不需要會寫程式的人了?

現在 AI 寫的程式碼或許還不夠看,但別忘了,在 AlphaGo 以前,最頂尖的圍棋 AI,其棋力也不過業餘六段水平,完全無法和職業棋士匹敵。而 AlphaGo 出現後,一舉就遠遠超過了所有人類棋士。

有了這樣的前車之鑑,誰能篤定軟體工程師一定沒有被機器超越的那一天呢?

話雖如此,我還是對機器輔助寫程式抱有很大的期待,遠遠大過它帶給我的焦慮

我有一個夢

試想,工程師在業餘時間所寫的 side project,為什麼絕大部分都半途而廢了?因為寫程式還是存在不少「勞力密集」的重複性勞動。下班後的時間、精力都有限,所以半途而廢無疑才是常態。

如果機器真的可以有效為我們賦能,則世界將因你我而改變:當我一個人就能化身為一個團隊——唉呀!作夢都會笑。

現在說這些可能真的太早了,就目前的感覺——也許是我用的方式不到位——AI 只幫我提升了不到 10% 的寫程式效率。而在提升還不到 50% 前,我都不會感到雀躍。

不過,話雖如此,GitHub Copilot 日後確定要收費時,我想我還是有相當的機率會願意買帳。只是如前段所述:輔助的效果還需要再「有感提升」才行。