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 極簡心得

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

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

2022/09/01:事實證明,只是「訓練量不足」而已,用久以後它就能穩定提示一整片內容了。此外,顯然 Copilot 最擅長的,就是預測「帶有固定 pattern,會重複出現,但每次需要替換其中一、兩個元素」的程式碼。

高級版 Tabnine

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

不過這樣說也不公平,畢竟 Tabnine 有付費版,能解鎖更多功能,與更完整的提示。所以要比也是和付費版比較。但因為我沒有付費版 Tabnine,所以無從得知它的提示品質如何。

簡而言之,用了一個多星期,Copilot 只讓我感到它就像一個高級版的 Tabnine,讓我難掩失望。

意料之外:寫作輔助

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

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

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

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

寫文章的利器?

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

很遺憾,可能沒辦法。

我真的試了一下!感想是:除了提示給得太過頻繁,有點影響思路外。儘管預測的語句都尚稱通順,但其內容也常常不是我想要的

換句話說,沒有足夠的上下文,它也猜不到你此刻想要表達什麼。

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

所以,我的結論如下:拿 Copilot 來協助編輯、修改既有的文章,確實能在一些想法與文句上「偶有佳作」,所以這用法值得推薦!但想直接靠它來創作就不太現實了。


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

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

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

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

相關文章:06,十年後,還能繼續當軟體工程師嗎?

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

我有一個夢

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

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

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

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