Songkeys

Songkeys

Hello. Songkeys here~ :D
twitter

GPT-4 & Copilot 幫助我編寫了新項目 90% 的代碼

注意,這篇文章需要加入等候名單才可閱讀。

起因#

有人說 2023 是 waitlist 元年,因為各種項目(主要是 AI)亮相在用戶前的第一面都是要求用戶幹一件事情:加入等待名單(join the waitlist)。

Waitlist 是一種常見的策略,用於管理用戶的訪問和使用。它通常用於新產品或服務的推出,以便控制用戶流量並確保系統的穩定性。這個概念更早見於大學申請中,指的是學生提交入學申請給大學,學校再在一眾排隊等候名單中挑選學生來錄取。

Waitlist 的好處有:

gpt-waitlist-good-things.png

但我實在很受不了這麼多產品在還沒準備好的情況下就急於發布,並且都讓大家加入 waitlist。這可以理解,但非常滑稽。

所以「我」隨手做了一個嘲諷網站:JoinTheWaitlist

join-the-waitlist-website.png

沒錯,整個網站就一個按鈕:JOIN THE WAITLIST。這是一個「等候名單」的網站,加入等候名單,你就可以排隊等候以加入等候名單了。

然後「我」發了一條推文:

不難看出,推文內容本身(如哗眾取寵的 emoji 和文風)也非常經典和嘲諷。這歸功於 GPT-4:

gpt-write-a-tweet-prompt-join-the-waitlist.png

而寫這條推文是 GPT-4 為我的這個項目做的最後一件事。在此之前,它只花了一個小時,就幫我完成了幾乎整個項目的代碼編寫。

什麼!?幾乎全是 GPT-4 幫忙寫的?是的。因為這個想法在我填了又一個 waitlist 後衝上了我的腦子,但我實在懶得花時間寫代碼。這時,我突然想起推特上大家總是說 GPT-4 強到直接給你寫項目。我便疑惑真的有這麼神奇嗎?於是抱著實驗性的目的,拿這個項目試試 GPT。

結果非常成功。

這就是為什麼我剛剛說「我」的時候要加引號。

那這一切是怎麼完成的呢?

第零步:創建項目#

我使用了 Next.js (React) 來開發項目,直接用了個腳手架。耗時十秒。此部分略過。

如果你是編程零基礎,你可以問問 GPT 如何創建一個前端項目,相信也是小菜一碟。

第一步:打字口號(Typing Slogans)#

想幾個口號#

面對空白項目,我大概在腦海中想了一下佈局。最上面首先需要一個大大的 slogan 區域來不斷打字,說「Waitlist can help you....」。

有哪些 slogans 呢?問問 GPT 吧:

gpt-ask-for-slogan.png

很好,十分諷刺。我只字未改,複製過來放在了我的項目中。

打字效果#

接下來,詢問如何在 React 中實現打字效果:

gpt-ask-for-typing-slogan.png

它甚至直接告訴了我可以用 typeit-react,還直接寫出了使用代碼。我不需要去查有什麼庫可以用,這個庫該怎麼用。

但中間的 instance 語句比較繁瑣,我問了一下能不能簡寫:

gpt-ask-for-typing-slogan-improvement.png

我只輕描淡寫地給了個指示,它不光寫了,還解釋了。它真的,我哭死。😭😭😭

停止感動。立馬複製過來!

閃動光標#

接下來,我還想要在末尾加一個一直閃動的打字光標。這種小任務,我選擇直接讓 Copilot 幫我寫:

copilot-blinking-cursor

如圖所示,我所做的事情:

  • 寫了一句註釋,告訴 Copilot 接下來的代碼是做什麼的(即一個有動畫的閃動光標,和文字高度一樣)。
  • 換行。Copilot 提示這一行可以這樣寫。
  • 回車確認。
  • 換行。Copilot 提示這一行可以這樣寫。
  • 回車確認。
  • 換行。Copilot 提示這一行可以這樣寫。
  • 回車確認。
  • 「寫」完了……

我要認罪:這真的是大部分時候我的工作日常,我就負責寫註釋和瘋狂換行回車,Copilot 寫代碼。另外記得最後別忘了刪掉註釋,不留痕跡,破壞作案現場。

成果:

typing-slogon

第二步:酷炫按鈕#

既然是 Waitlist,那當然需要一個大大的按鈕來點擊加入。我希望這個按鈕非常酷炫。讓我問問 GPT:

現在請為我編寫一個非常閃亮的按鈕,具有終極動畫效果,例如懸停、點擊、發光、動畫、過渡、漸變等。讓每個人都想要點擊它!展示給我 CSS 代碼。

gpt-ask-for-button.png

我承認我不是一個好的 prompt engineer,但它還是幫我寫出來了。

需要注意的是,網頁端的 ChatGPT 回覆如果過長會戛然而止。不要慌,輸入「continue」或者「繼續」就可以了。

gpt-ask-for-button-continue.png

經過兩輪 continue 後,按鈕到手,效果非常出色!

gpt-waitlist-button.gif

但我發現按鈕沒有點擊效果。沒關係,這點小事就讓 Copilot 幫忙吧 ——

copilot-clicking-effect.gif

看看效果:

copilot-clicking-effect-preview.gif

行,差不多就這樣吧!

第三步:用戶評價卡片#

接下來,我希望在頁面上展示一組用戶評價。

現在寫一些推特用戶的評價,誇「JoinTheWaitlist」很棒。

gpt-ask-for-waitlist-review.png

再生成一些有意思的假用戶名。

gpt-ask-for-fake-twitter-username.png

這時我突然意識到,我得自己把評論和名字一句句複製起來,並且寫成代碼裡的數據結構,太麻煩了。於是我直接問:

用以下數據結構,幫我把這些數據混合起來。

gpt-ask-for-review-data-generation.png

好了,這下可以直接複製了。

哦對了,忘了直接伸手要 UI 組件的代碼了:

幫我寫一個 Tailwind React 組件叫 UserReviews,用推特的風格展示這些評論。

gpt-ask-for-user-review-react-component.png

複製過來,看看效果:

gpt-user-review-ui-preview.png

最終效果的形成另外還借助了一些 Copilot 的力量。以及頭像使用了 Pravatar 的隨機生成服務。

簡直太完美了。

第四步:加上 Rick Roll#

其他的一些實現這裡就略過不討論了,因為大相徑庭 —— 問它,它給你,你複製粘貼。

gpt-copy-paste-keyboard.png

這裡想提一個比較有意思是:我想實現的一個效果是,點擊 JOIN THE WAITLIST 按鈕後,會跳轉到 YouTube 的 Rick Roll 視頻。

rick-roll-video-cover.png

我抱著試一試的心態,打下了 https://yout,然後:

copilot-rick-roll-hint.png

Copilot 提示了一個視頻鏈接。

我心想不會吧……

接著我把視頻鏈接打開一看 —— https://youtu.be/dQw4w9WgXcQ

這個 moment 讓我覺得非常歡樂。

第五步:部署上線#

最後小手一點,代碼推送到了 GitHub,並借助 Vercel 的自動部署服務。JoinTheWaitlist 花了一分鐘部署上線了。

第六步:發條推特#

如開頭所示,我還讓 GPT 幫我做了一下 marketing。

gpt-write-a-tweet-prompt-join-the-waitlist.png

收尾的話#

除了中間我出去吃了個飯的時間,整個過程耗時不到一小時,沒有超過目前 GPT-4 網頁版的 25 條 / 3 小時限制。很多問題的回答基本是一擊就中,不需要額外修改和追問!而且我並沒有非常仔細地斟酌我的 prompt,而是簡單隨意地跟它對話。

做完之後,我回想了一下整件事情,我在其中的參與主要有以下部分

  • 提出想法
  • 寫 prompts 給 GPT
  • 複製粘貼
  • 讓 Copilot 幫潤色修改,幫寫一些小功能 / 模板代碼
  • 保存代碼,推送代碼,部署代碼

我在其中原創了任何東西嗎?🤔

我這麼多年代碼經驗給我帶來的除了經驗還有什麼?🤔

以後的產品開發又會是怎樣的?🤔

……

合上電腦,我思緒萬千,愁斷了腸。

正在感嘆之時,我突然猛然一驚 ——

gpt-please-meme.png

Oh shit!

to-be-continued.png
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。