GitHub Copilot 心得——寫文章的利器?
copilot.github.com
由微軟推出,鼎鼎大名的 GitHub Copilot,相信大家都已經有所耳聞,或者正在使用。
目前這個產品還處於「Technical Preview」階段,想要親自體驗嘗鮮,需要另外提出申請。剛推出時好像是秒申請秒過,但我在上個月初提出申請,月底才收到核可通知。
2022/06/22
:GitHub Copilot 要開始收費啦!比我想像的來得更早。價格是每月 10 美元或每年 100 美元,對學生與開源專案維護者免費。詳情請見官方這篇〈GitHub Copilot is generally available to all developers〉介紹。既然確定要收費了,自然也不必再申請,隨時可以安裝試用。
本來也想寫一篇關於 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 日後確定要收費時,我想我還是有相當的機率會願意買帳。只是如前段所述,輔助效果還需要再「有感」提升才行。