GPT-4 到底能幫你乾點啥?

2023-08-30 21:00:30

1. 從哪兒聊起呢

從 百草堂 到 三味書屋

從 Copilot 到 ChatGPT

從 ChatGPT 到 Copilot Chat

從 Copilot Chat 到 DevChat

燒掉了數不清的 token,走過了數不盡的彎路,被 GPT 逗笑過,也被 GPT 坑哭過……

今日個我想從程式設計師視角和大夥聊聊我用 GPT-4 幹過點啥,GPT-4 又能幹點啥?換個高階一點的說法就是:探索下 GPT-4 在軟體工程領域的能力邊界。

低調。低調一點。

NOTICE: 如果你在追更我的文章,那麼下文的內容或許會讓你感到「似曾相識」。今天的文章更像是一次總結,下文提到的各種 GPT-4 玩法都在我以前的文章中出現過。所以,你自己決定是不是看下去咯~

2. 潮起潮退

還記得 ChatGPT 開始爆火的那些日子嗎?你還記得自己當時的感受不?焦慮過沒?恐慌過沒?

那些天,各種 ChatGPT 吊炸天的報道鋪天蓋地,炸了又炸,似乎地主家的「人工智障」一夜之間長大了,智慧了,真正的「人工智慧」來了!似乎這忽如一夜,第五次工業革命它就來了,AI 要搶走我們的飯碗了,教師要失業了,律師要失業了,程式設計師要失業了……

你開啟手機,只見各種 AI 相關的故事鋪天蓋地:

  • 一個設計師用 GPT-4 二十分鐘就寫了一個貪吃蛇遊戲。
  • 一家創業公司老闆上午用了 ChatGPT,下午就裁員40%!
  • 有人讓 GPT-4 當老闆,自己跑腿,居然實現了盈利。
  • GPT-4已經可以被視為一個 AGI (通用人工智慧)的早期版本!
  • 微軟154頁研究刷屏:GPT-4 能力接近人類,「天網」初現?
  • GPT 最終會讓人類失去思考的能力,人類一切問題依賴 AI,最終被 AI 圈養!
  • ……

你不禁感慨:這一生,有幸親歷一次工業革命,見證人類步入新時代,也是無憾!

不過 ChatGPT 出來了大半年了,GPT-4 問世也近半載了,至今,你卻發現身邊並沒有人真的用 GPT-4 開起了自己的公司,賺到了大錢,走上了人生巔峰;你也沒見產品經理親自寫程式碼,把程式設計師都逼去賣煎餅果子,當起了跑腿小哥;甚至你身邊的程式設計師也沒能完全用 GPT 來生成程式碼,甚至很大比例的程式設計師覺得和 GPT 聊天是浪費口水,花那時間澄清需求,偵錯 Prompt,還不如手撕程式碼來得快。

潮起,滿是泡沫;潮去,一地海鮮。

3. 遇強則強,遇我則……

能力不夠,GPT 來湊,我拿到 GPT 後先學了下程式設計……

本文通過 DevChat 和 GPT-4 互動。相比於 Copilot Chat,DevChat 可以更加靈活地指定聊天上下文,更加自由地自定義 Prompt 模板,因此可以獲得更加精準的 GPT 響應。如果你對 DevChat 感興趣,可以到 DevChat 的官網註冊試用。

3.1 玩法一:輔助技能提升

如下圖,你可以就某個知識點追問 GPT,讓它給你講解講解。

經過不知道多少輪的提問,最終我總結了三篇筆記:

而後感覺功力大漲,於是用剛學到的「並行程式設計」技能寫了一個開源的 Golang Worker Pool - GoPool

看著還行,沒過多少天漲了大幾十 star:

3.2 鏡頭背後的故事

其實「G老師」沒那麼貼心,她不會主動把知識點都吐給你。你需要做好「挑螺螄肉」的準備,不停地追問,還得主動思考、上手實操:

3.3 玩法二:綜合「技術選型」

假如你現在需要寫一個 API 服務吧,你能很快決定選擇哪個 web 框架嗎?假如你是個 Java 程式設計師,啥?你說你是寫 Python 的?沒關係,OKOK,那我就和你聊聊 Golang 吧。你不熟悉 Golang,於是你祭出 GPT-4,你可以這樣問她:

你也可以換個姿勢這樣問她:

3.4 鏡頭背後的故事

也別高興太早,你需要時刻謹記:GPT-4 的訓練資料並不是最新的,所以重要的結論你最好 Google 一下,二次確認。

儘管 GPT-4 告訴你 Gin 是最優的,不過,假如,萬一,咱就是有沒有可能最近1年就是有某個新框架後來者居上了?咱就說有沒有可能 Gin 社群沒落,核心開發者跑路,這個框架已經被拋棄?總之,GPT-4 並不對它的「承諾」負責。它就那麼一說,你就那麼一聽,最終做決定在你,擔責的也是你。

3.5 玩法三:快速生成 Terraform 設定

曾幾何時,我需要一個 EC2 範例。不過如你所知我並不是一個專業的運維,我也不想去慢慢翻 AWS 的檔案(不專業還懶,快要沒救了)。(但是我有 GPT 呀)於是我翻出來了 GPT-4,和它說了這句話:

我需要一個 EC2 範例用於部署單機版的 KubeSphere,這個範例的要求是:

1. 系統是 Ubuntu 22.04;
2. 規格不小於:2 CPU cores, 4 GB memory, and 40 GB disk space;
3. 可以用 ssh 連線;
4. 所有埠都可以從公網存取;

請給出建立這個 EC2 範例和其所需的 ssh key 對應的 Terraform 設定。

GPT-4 也挺痛快,直接給了一段炫酷的程式碼:

3.6 鏡頭背後的故事

GPT-4 是給了我一段 Terraform 設定程式碼,不過這段程式碼並不能「開箱即用」,我必須得先看得懂這段設定,然後告訴它為什麼這段程式碼不行,需要怎麼改,於是我還得繼續給它提要求:

你以為這就完了?不,這次 GPT-4 給的新設定裡出現了ubuntu-focal-22.04-amd64-server,「Focal Fossa」是「Ubuntu 20.04 LTS」版本的代號,而「Ubuntu 22.04 LTS」版本的代號是「Jammy Jellyfish」。你說要怪它吧,也不忍心,畢竟2022年才有的Ubuntu 22.04它沒見過呀;你要說不怪它吧,難不成怪我啊?那我更不忍心了。

3.7 玩法四:生成簡單的 Python 指令碼

「人生苦短,我用 Python……」,轉眼已經六年沒有寫過 Python 了,我在腦子裡檢索了半天知識庫,卻發現關於 Python 的就只剩下這句話了。

這不,好巧不巧,這天需要寫一個「小程式」,感覺用 Python 是最合適的。儘管我已經對 Python 的語法很陌生,不過這不是有 GPT-4 的嘛,挑戰下吧:

最後程式的執行效果如下圖,自動建立了一個很大的 md 表格,也生成了一堆 md 檔案,皆大歡喜:

3.8 鏡頭背後的故事

你猜對了,用 GPT 寫程式碼哪有什麼歲月靜好一帆風順?這不,GPT-4 這次給的 Python 裡藏了一個 bug,於是我又得和它來回解釋:

如果你對那天晚上的故事感興趣,可以跳轉這篇文章吃瓜。

3.9 玩法五:構造 bug 復現場景

當別人給你提 bug 時,別忙著改程式碼,你得先復現問題,萬一人家耍你呢?

這不,那天陽光明媚,萬里無雲,我在逛 GitHub,發現 Helm 被提了一個 bug,於是我就小手一抖,領了。

哎,真是手賤。我隨口一說,人家真的把 issue 指給我了。於是,我祭出了 GPT-4:

一派和諧,歌舞昇平啊!GPT-4 就這麼一頓輸出,我就這麼一頓複製貼上,然後:

bug 復現了。

最終我也順利地給 Helm 提了一個 PR,修復了這個 bug。

3.10 鏡頭背後的故事

復現歸復現,GPT-4 並不能幫助你定位到 Helm 這種複雜度的專案中的 bug,畢竟 Helm 的原始碼量級已經遠遠超過 GPT-4 的上下文長度了。沒錯,GPT-4 無法理解 Helm 的原始碼,你得自己刷 Helm 原始碼啊,老大!咳咳,好像不是你要刷,是我要刷…… 慘慘慘。

4. 總結

GPT-4 能幫你乾點啥?那取決於你拿它來乾點啥。

啥?這個總結太敷衍?好吧,是有點。那就補幾句:

  • GPT-4 肯定能用來寫程式碼,能一定程度上提升開發效率;
  • GPT-4 不能保證寫的程式碼完全正確,人需要能夠看懂程式碼,識別錯誤,修復錯誤,才能把 GPT 給的程式碼真正用起來;
  • GPT-4 知識庫是21年之前的,很多問題的答案在當下已經變了,所以必要的時候得通過 Google 二次確認;
  • GPT-4 會存在「幻覺」,有時候會「一本正經地胡說八道」。比如信誓旦旦地說已經修復了一個 bug,給出了新的程式碼,結果還是錯的;
  • GPT-4 的對話 token 有大小限制,會聊到後面忘了前面;
  • GPT-4 更擅長在小型專案中,或者是獨立,邏輯不太複雜的小塊功能開發中發揮作用;大型專案或者是複雜演演算法往往「溝通成本」比「開發成本」更高。

本文通過 DevChat 和 GPT-4 互動。相比於 Copilot Chat,DevChat 可以更加靈活地指定聊天上下文,更加自由地自定義 Prompt 模板,因此可以獲得更加精準的 GPT 響應。如果你對 DevChat 感興趣,可以到 DevChat 的官網註冊試用。