我用 ChatGPT 寫了一個 ChatGPT 指令大全網站

2023年9月15日

🚀 ChatGPT 求職工作術
想透過 ChatGPT 提升求職與工作效率嗎?《ChatGPT 高效求職與工作術》限時 46 折優惠中👉 前往上課

去年底橫空出世的 ChatGPT 在網路上有越來越多的應用,但網路上有人提到使用 ChatGPT 收到的答覆並沒有太大幫助。之所以會這樣,是因為指令給的不夠精確與到位。在網路上其實已經有一些 ChatGPT 插件,讓你可以用快捷鍵生成 ChatGPT 指令。只是這些插件對於不熟悉 ChatGPT 的人來說,光是安裝就有難度。

image

於是我們決定寫一個簡易的小網頁,讓大家能夠一鍵複製精準有效的 ChatGPT 指令,然後修改成符合自己需求的指令,然後將指令貼上 ChatGPT,就可以得到更有幫助的回覆。我們分別做了中文版與英文版的指令大全。

而這個 ChatGPT 指令大全網站,正是在 ChatGPT 的幫助下完成的。透過這篇文章,希望跟其他同為前端工程師的人分享,可以如何透過 ChatGPT 加速完成你的工作;同時也想跟非工程師的人分享,現在有了這些 AI 工具,如果你有自己想做的 side project,不一定需要找工程師,也可能一步步把功能實踐出來。

用 ChatGPT 幫忙寫程式的注意事項

請 ChatGPT 協助寫程式時有一些注意事項,包含

  • 用什麼語言寫:要讓它知道用什麼語言、框架來寫。可以透過指令 Act as an expert of [某個程式語言] 來做到,例如 Act as an expert of python
  • 註明典範或設計模式:如果你想要它用特定的典範或設計模式寫,要記得特別標注。因為要達成某項功能,通常能有很多種不同實踐方式。如果你想讓 ChatGPT 的寫法跟你平時的風格一致的話,你必須給它這個指令。舉例來說,透過 Implement [某個功能] using functional programming 可以讓它用函式編程來寫該功能。
  • 描述要清楚:你的邏輯描述要夠清楚。雖然後多人會戲稱有 ChatGPT 幫忙後可以用嘴巴寫程式,但要真的做得好,你嘴巴說出來的邏輯要是夠明確的。假如你講得不清楚或有誤,可能會導致 ChatGPT 寫不出你真正想要的東西。
  • 提供例子:如果能提供例子,會有助於 ChatGPT 更明白你想要的。假如要請它幫忙寫一個函式,你可以提供一個輸入,以及預期的輸出。
  • 寫測試:雖然 ChatGPT 可以幫忙寫,但是請務必還是自己測試一下,確保功能有如你的預期。如果你想要比較自動化地驗證程式的正確性,可以請 ChatGPT 幫忙寫測試案例,然後跑一下那些測試案例來確認沒問題。這可以透過 Write 5 test cases for [某段程式碼] 來做到。

在了解以上的注意事項後,接著讓我們一起來看看可以如何透過 ChatGPT 幫忙寫程式。為了不讓這篇文章的篇幅過長,文章會舉三個實際請 ChatGPT 寫的例子。這三個都是有代表性的例子,因為都是一般 React 與 JavaScript 新手需要花時間去查才寫得出來的功能。

根據特定字串來畫重點

在逛 ChatGPT 指令大全 時,你可以看到每個指令中,要替換掉的字詞,我們都有用淺藍色來畫重點。這件事該怎麼做到呢? 我們當然不是每個指令都去畫一次重點,不然如果有一千個指令,就要畫一千次。用程式的角度來看,我們可以透過特定格式,讓程式看到該格式後,自動幫忙做轉換。

用程式來幫你自動畫重點
用程式來幫你自動畫重點

但是這件事要如何做到呢? 該如何把 你現在是一個 [程式語言] 專家 的程式語言自動畫上重點? 如果沒有 ChatGPT,大概會是這樣執行:

  • 先想辦法判斷 [] 在一個字串中,有沒有符合這個規則的文字
  • 要判斷這個,通常會用正規表達式 (Regex),但因為我不熟正規表達,所以去 StackOverflow (一個工程師們查東西的網站) 上面查,然後根據 StackOverflow 上的回答來試試。很多時候上面回答品質不佳,所以要試很多次才能做到
  • 在能判斷出 [] 這個規則後,接著需要寫一個函式,把 [] 的文字替換成具有畫重點效果的。

基本上,如果能夠描述出上面的想法,就可以讓 ChatGPT 根據上面的內容,來幫你寫程式。下面這段是我輸入到 ChatGPT 的指令。

請幫我用 TypeScript 寫一個 highlightText 函式,它會接收一個字串,接收的字串中可能帶有 [文字],這個函式會辨別 [文字],然後把 [] 內的文字改成用 <span className="bg-sky-100 text-slate-800"> 包住。

舉例來說, 輸入:你現在是一個 [程式語言] 專家 輸出:你現在是一個 <span className="bg-sky-100 text-slate-800">程式語言</span>

透過上面的指令,來看看 ChatGPT 寫出了什麼。成果非常驚人,首先它給了一個正確的正規表達式 const regExp = /\[(.*?)\]/g; 然後透過 splitmap 方法,幫我把每一個 [] 都替換成有畫重點的字。只花五分鐘不到,我就完成了這個畫重點的功能。

用 ChatGPT 幫忙完成畫重點功能
用 ChatGPT 幫忙完成畫重點功能

實作點擊後滑動到最上方的按鈕

在使用 ChatGPT 指令大全 時,如果你往下滑動,你會看到網頁的右下角,有一個圓形的按鈕,裡面有個向上的箭頭。這是許多網站都有的功能,當使用者點擊後,頁面會自動滑到最上方。這個常見的功能該如何實作呢? 直接請 ChatGPT 來幫忙吧。

我給 ChatGPT 的指令如下

你現在是名精通 TypeScript、React 與 TailwindCSS 的專家。今天我想用這三個技術,寫一個元件。這個元件是一個放置在頁面右下方的圓形按鈕,只有在頁面往下滑動後才會出現,假如頁面在最上方時不要出現。當使用者點擊時,要讓頁面滑動回最上方,在滑動到最上方時,這個按鈕要隱藏,直到使用者又向下滑動才顯示

一起來看看 ChatGPT 幫忙寫的成果。

用 ChatGPT 幫忙寫滑動到最上方的按鈕
用 ChatGPT 幫忙寫滑動到最上方的按鈕

因為程式碼有點長,上面的截圖僅截到邏輯的部份。可以看到 ChatGPT 幫你在三十秒內寫完了這個功能。它透過 const [showButton, setShowButton] = useState(false); 來控制按鈕的呈現狀態,然後透過 window.pageYOffset > 0 這個判斷讓按鈕只有在向下滑動後才出現。

因為是用 React 寫,ChatGPT 知道如果要跟 React 以外的外部系統互動 (這邊是跟瀏覽器中的執行環境),必須把邏輯寫到 useEffect 裡面。同時因為在這邊註冊了一個 scroll 監聽器,在 React 元件的生命週期最後,要把這個監聽給移除,這樣才能避免記憶體外洩。這是很多 React 新手會忘記做的事情,但是 ChatGPT 沒有忘記,它有記得用 removeEventListener 來移除監聽。

useEffect(() => {
  window.addEventListener("scroll", handleScroll);
  return () => {
    window.removeEventListener("scroll", handleScroll);
  };
}, []);

你可以自己試試看,把上面那段指令丟到 ChatGPT,你會發現你也做得出來在許多網站中常見的,點擊滑動回頁面最上方的按鈕了 😉

類別與過濾

最後來講另一個許多網站中常見的功能 — 類別與過濾。在 ChatGPT 指令大全 的網頁最上方,有一排 ChatGPT 色的類別,當你點擊後,會自動幫你過濾到你所選的類別。這個功能常見的實作方式有兩種,一種是資料量比較小時,會直接把所有資料放在前端,然後在前端進行過濾;另一種是資料量大時,把資料存在資料庫,然後當使用者點擊某個類別時,帶上該類別的參數,讓後端過濾完後,重送過濾後的資料到前端展示。

因為 ChatGPT 指令大全 目前有的指令數還沒有多到要把指令資料額外放到資料庫 (我們實測後,這邊如果額外打 API 拿資料,網路傳輸來回的時間成本讓我們覺得暫時還不值得這樣做),所以我們暫時先都放在前端,然後讓前端這邊直接過濾。

一起來看看我下的指令,以及 ChatGPT 寫出來的成果吧。再一次地,ChatGPT 讓我用不到一分鐘,打完指令後就幫我寫出這個基本功能。必須說,ChatGPT 在變數命名上,都命的清楚好懂,真心覺得有這個幫手真好 😎

用 ChatGPT 幫忙寫過濾功能
用 ChatGPT 幫忙寫過濾功能

小結論 — 快速原型製作

這次做這個簡易的 ChatGPT 指令大全,比我過往在做 side project 的原型 (prototype) 都快非常多,這多虧了 ChatGPT 的幫忙。在 Copilot 與 ChatGPT 相繼問世後,讓我深深感覺到,要做一個網站原型的成本又比過去小非常多,這也意味著,如果你有創意與想法,實踐這個想法的阻礙變得更小。所以如果你有任何想要嘗試做的網站,不要躊躇不前,快找 ChatGPT 幫忙加速實現吧!

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們