從 百草堂 到 三味書屋
從 Copilot 到 ChatGPT
從 ChatGPT 到 Copilot Chat
從 Copilot Chat 到 DevChat
燒掉了數不清的 token,走過了數不盡的彎路,被 GPT 逗笑過,也被 GPT 坑哭過……
今日個我想從程式設計師視角和大夥聊聊我用 GPT-4 幹過點啥,GPT-4 又能幹點啥?換個高階一點的說法就是:探索下 GPT-4 在軟體工程領域的能力邊界。
低調。低調一點。
NOTICE: 如果你在追更我的文章,那麼下文的內容或許會讓你感到「似曾相識」。今天的文章更像是一次總結,下文提到的各種 GPT-4 玩法都在我以前的文章中出現過。所以,你自己決定是不是看下去咯~
還記得 ChatGPT 開始爆火的那些日子嗎?你還記得自己當時的感受不?焦慮過沒?恐慌過沒?
那些天,各種 ChatGPT 吊炸天的報道鋪天蓋地,炸了又炸,似乎地主家的「人工智障」一夜之間長大了,智慧了,真正的「人工智慧」來了!似乎這忽如一夜,第五次工業革命它就來了,AI 要搶走我們的飯碗了,教師要失業了,律師要失業了,程式設計師要失業了……
你開啟手機,只見各種 AI 相關的故事鋪天蓋地:
你不禁感慨:這一生,有幸親歷一次工業革命,見證人類步入新時代,也是無憾!
不過 ChatGPT 出來了大半年了,GPT-4 問世也近半載了,至今,你卻發現身邊並沒有人真的用 GPT-4 開起了自己的公司,賺到了大錢,走上了人生巔峰;你也沒見產品經理親自寫程式碼,把程式設計師都逼去賣煎餅果子,當起了跑腿小哥;甚至你身邊的程式設計師也沒能完全用 GPT 來生成程式碼,甚至很大比例的程式設計師覺得和 GPT 聊天是浪費口水,花那時間澄清需求,偵錯 Prompt,還不如手撕程式碼來得快。
潮起,滿是泡沫;潮去,一地海鮮。
能力不夠,GPT 來湊,我拿到 GPT 後先學了下程式設計……
本文通過 DevChat 和 GPT-4 互動。相比於 Copilot Chat,DevChat 可以更加靈活地指定聊天上下文,更加自由地自定義 Prompt 模板,因此可以獲得更加精準的 GPT 響應。如果你對 DevChat 感興趣,可以到 DevChat 的官網註冊試用。
如下圖,你可以就某個知識點追問 GPT,讓它給你講解講解。
經過不知道多少輪的提問,最終我總結了三篇筆記:
而後感覺功力大漲,於是用剛學到的「並行程式設計」技能寫了一個開源的 Golang Worker Pool - GoPool:
看著還行,沒過多少天漲了大幾十 star:
其實「G老師」沒那麼貼心,她不會主動把知識點都吐給你。你需要做好「挑螺螄肉」的準備,不停地追問,還得主動思考、上手實操:
假如你現在需要寫一個 API 服務吧,你能很快決定選擇哪個 web 框架嗎?假如你是個 Java 程式設計師,啥?你說你是寫 Python 的?沒關係,OKOK,那我就和你聊聊 Golang 吧。你不熟悉 Golang,於是你祭出 GPT-4,你可以這樣問她:
你也可以換個姿勢這樣問她:
也別高興太早,你需要時刻謹記:GPT-4 的訓練資料並不是最新的,所以重要的結論你最好 Google 一下,二次確認。
儘管 GPT-4 告訴你 Gin 是最優的,不過,假如,萬一,咱就是有沒有可能最近1年就是有某個新框架後來者居上了?咱就說有沒有可能 Gin 社群沒落,核心開發者跑路,這個框架已經被拋棄?總之,GPT-4 並不對它的「承諾」負責。它就那麼一說,你就那麼一聽,最終做決定在你,擔責的也是你。
曾幾何時,我需要一個 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 也挺痛快,直接給了一段炫酷的程式碼:
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
它沒見過呀;你要說不怪它吧,難不成怪我啊?那我更不忍心了。
「人生苦短,我用 Python……」,轉眼已經六年沒有寫過 Python 了,我在腦子裡檢索了半天知識庫,卻發現關於 Python 的就只剩下這句話了。
這不,好巧不巧,這天需要寫一個「小程式」,感覺用 Python 是最合適的。儘管我已經對 Python 的語法很陌生,不過這不是有 GPT-4 的嘛,挑戰下吧:
最後程式的執行效果如下圖,自動建立了一個很大的 md 表格,也生成了一堆 md 檔案,皆大歡喜:
你猜對了,用 GPT 寫程式碼哪有什麼歲月靜好一帆風順?這不,GPT-4 這次給的 Python 裡藏了一個 bug,於是我又得和它來回解釋:
如果你對那天晚上的故事感興趣,可以跳轉這篇文章吃瓜。
當別人給你提 bug 時,別忙著改程式碼,你得先復現問題,萬一人家耍你呢?
這不,那天陽光明媚,萬里無雲,我在逛 GitHub,發現 Helm 被提了一個 bug,於是我就小手一抖,領了。
哎,真是手賤。我隨口一說,人家真的把 issue 指給我了。於是,我祭出了 GPT-4:
一派和諧,歌舞昇平啊!GPT-4 就這麼一頓輸出,我就這麼一頓複製貼上,然後:
bug 復現了。
最終我也順利地給 Helm 提了一個 PR,修復了這個 bug。
復現歸復現,GPT-4 並不能幫助你定位到 Helm 這種複雜度的專案中的 bug,畢竟 Helm 的原始碼量級已經遠遠超過 GPT-4 的上下文長度了。沒錯,GPT-4 無法理解 Helm 的原始碼,你得自己刷 Helm 原始碼啊,老大!咳咳,好像不是你要刷,是我要刷…… 慘慘慘。
GPT-4 能幫你乾點啥?那取決於你拿它來乾點啥。
啥?這個總結太敷衍?好吧,是有點。那就補幾句:
本文通過 DevChat 和 GPT-4 互動。相比於 Copilot Chat,DevChat 可以更加靈活地指定聊天上下文,更加自由地自定義 Prompt 模板,因此可以獲得更加精準的 GPT 響應。如果你對 DevChat 感興趣,可以到 DevChat 的官網註冊試用。