1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | 周加恩 【 零基礎,我用 AI 寫了一個機器人 】 ——以前要兩個月的學習時間,直接縮短到十天。 最近剛好工作上有需求,我想做一個機器人幫我處理一些瑣碎任務。 我研究了一些自動化工具,像是 Make、Zapier,然後很快地遇上了卡關,也找不到教學可以解決。 卡關完全是我的問題,繼續往下找一定可以解決。但心中一直有種「就算搞懂了,功能終究受限於別人的產品吧?」的感覺,很提不起勁往下繼續找。 卡關到一半,腦袋忽然出現這句話: 「修但幾壘,大家不是都說可以用 AI 寫程式?我為何不自己寫一個 Python 腳本?」 兩年前我試過學 Python,大概學了一個月後放棄。我的程度就停留在 print(‘hello world’) ,跟知道什麼是 Command Line,就這樣。 現在有這個想法,心中第一個疑問是: 「真的可以嗎?我連機器人要 host 在哪裡都不知道。總不會放在我自己的電腦吧?」 我不知道這個問題的答案, 但直覺告訴我,可以去哪裡找答案:問 AI。 於是我開始跟 ChatGPT 描述我要做的事情,一來一往十分鐘之後,我已經在「寫 code」了。時間快轉十天,我完成了一個部署在雲端伺服器上,有簡單功能的機器人,並且實際交付給案主使用。 我被嚇到了。 依照兩年前的學習經驗,如果要從零架設出這個機器人,從頭開始讀文件、學伺服器架構、知道怎樣串起來、搞懂工作細節....至少,兩個月以上(包含偷懶時間)。 因為 AI ,這件事縮短到了十天,至少加速了五倍的程式學習時間。 AI 寫程式不只可行,還真的有點厲害。 不過實際操作下來,一切並不是真的那麼輕鬆寫意。有簡單的地方,但也有很多困難的,甚至反直覺的地方。 所以這篇文,我想記錄一下我踩過的坑,跟你分享。如果你跟我一樣是想寫一些自動化腳本的小白,也許會對你有幫助。 ----------- 工具 ▋ 0. 我使用的工具:Cursor AI + Claude 核心概念 ▋ 1. 「步步為營」是最佳解。 ▋ 2. 反身性 ▋ 3. 還是要跟著「讀」 ▋ 4. 學習程式語言最快的方式 實作方法 ▋ 一:除了寫腳本以外,也寫一份文檔紀錄思考。 ▋ 二:Git 版本控制很重要。 ▋ 三:必要時借助第三方意見(另一個 AI)。 ▋ 四:用頭去撞牆。 結論 ▋ AI 就能寫程式了,學程式語言還有價值嗎? ------------ ▋ 0. 我使用的工具:Cursor AI + Claude 當然,你可以直接用 ChatGPT 寫程式。但是這樣做你得一直複製貼上,我覺很沒有效率,最好還是找 AI 寫 Code 的專門工具。 我使用的工具是「 Cursor AI 」,整體成熟度很高,在聊天介面中許願就可以直接針對文檔修改,使用者體驗真的是絲滑。 你可以選擇要串 GPT-4o 或者 Claude 3.5 來寫,GPT 喜歡用列點的,Claude 則比較偏人性。意外地我發現,Claude 在讀懂我的意思跟產出品質上都比 GPT 好一點,不時還會跟你說:「你說得對!我們應該採取這個方式比較好。讓我來修改...」。 我沒有認真比較過兩者,應該能力都差不多。我單純喜歡跟 Claude 寫程式那種對話感,很有風見跟阿斯拉對話的感覺。(有年代了,我知道) ▋ 1. 「步步為營」是最佳解。 AI 寫程式的過程,最反直覺的事情是這個: 「當我越想要描述清楚,就越容易出錯。」 這真的,非常弔詭。 畢竟任何人直覺,任何提詞教學都是「清晰描述我想要的東西」,對吧? 我一開始也是這樣想。 可是問題是「怎樣算是清晰」?我應該一次描述多少? 例如,假設我要做一個氣象機器人,我們可以從「抽象」推到「清晰」: 「我想做一個氣象機器人」 「我想做一個氣象機器人,我問了會告訴我天氣預報。」 「我想做一個氣象機器人,部署在 LINE 上,結合 Railway.app、WeatherAPI 和 GPT-3.5 語言模型,當用戶發問時會傳送日期、天氣預報、建議穿著」 「我想做一個機器人,它的工作流如下: 1. 用戶對機器人傳送訊息:「招喚氣象先生」 2. 機器人收到訊息,確認明天日期是幾月幾號。 3. 機器人使用天氣 API 查詢明天天氣 4. 機器人回傳明天天氣。 5. 機器人從圖庫傳送一張圖片給予今天的穿搭建議 ...(下略)」 基本上,如果你把「清晰」做到最徹底,你已經把程式寫完了。 一開始我以為要做到這樣的程度,用自然語言一次寫完整個工作流程,AI 才能寫成可以用的程式。反覆失敗撞牆,重來幾次之後,我意識到: 「不對啊,這個程式處在我的知識邊界之外。 我注定無法一開始就做到『有效的清晰』這件事。」 因此,真正的問題是: 當你完全不懂一件事的時候,要怎樣憑空做出「這件事」? 我發現,這個過程很像攀岩。 沒有人可以一次從地面跳到 300 公尺高的懸崖頂端,沒有人可以一次寫完整個程式。 你需要先從離你最近的「攀點」開始,一次確保三個點踩穩抓穩,然後只移動一個點。 「步步為營」。 每一步驟都跟 AI 一起搞清楚:一邊讓 AI 更了解「我要什麼」,一邊讓我更了解這個程式「究竟是什麼」。 這跟寫作很像——你不是有了清晰後才寫作,而是寫作之後才有了清晰。 不要貪心一次做出整個「氣象機器人」。 先做一個「部署在 LINE 上可以跟你說嗨的機器人」。 成功之後,加上 GPT-3.5。 再加上天氣 API。 再加上細節提詞。 再加上傳送圖片功能。 這已經不是「最小可行產品」(MVP)了,是更小的「最小單位部件」,一次只專注做一個最簡單的功能。反覆迭代,過沒多久你就有一個完整的氣象先生。 我認為這個方法有用,主要原因是「Token 限制」。 AI 有 Token 限制,你一次給它越多資訊,它就越容易犯錯。 人也有 Token 限制,你一次想要描述越多東西,你也越容易犯錯。 回頭看,每次我失敗的時候,都是躁進想一次做完的時候; 成功推進的時候,都是一次只做一個小功能,最不貪心的時候。 實際操作上,我認為最好的方法是「聊天」。像是跟朋友聊到這件事一樣跟 AI 一起開發: 我:「我想要做一個氣象先生機器人,串接語言模型回答我的天氣問題。你怎樣看?」 GPT:「(回答)」 我:「你說得不錯,可是我想要它做到X功能...」 GPT:「(回答)」 這樣的一來一往,一陣子之後我就可以開始做第一個功能了。 (你完全也可以請 AI 幫你把大概念拆解成小功能) ▋ 2. 反身性 你有沒有搭過一種電梯,除了門以外三面牆都是鏡子,因為無數次影像反射,產生出無限的鏡像層次? 跟 AI 一起開發的感覺,很像是那樣。 我稱之為「反身性」:我把雛形拿給 AI,AI 丟回應給我,我修正後再丟回去,它再丟給我...每一次反射,都是把 AI 當成槓桿,放大碰撞且迭代我的想法。 就是在這種一來一往之下,我做完了整個開發的過程: - 先有一個「想法」(雛形) - 餵給 AI 請他寫成 Python(AI 加強) - 我看程式哪裡不合理+實際部署後將錯誤訊息丟給 AI (我加強) - AI 修正錯誤,寫出更好的版本(AI 加強) - 反覆迴圈。 這個「反身性」不只用來寫程式,也可以用在任何 AI 協作領域。 例如快速學習的場景。假設我不會西班牙文,怎樣在最短的時間內學到基本會話程度? 我只需要知道一個核心概念:「學會 100 個單字,就可以掌握 50% 語境」, 然後直接告訴 ChatGPT: ``` 語言專家 Gabriel Wyner 說,「你只要專注在 1000 個最常用的單字,既可以掌握平均 70% 的文本。當你掌握 2000 的單字,你可以掌握 80% 。」 我現在想學西班牙文。請從語言學家 Wyner 的概念出發,幫我設計西班牙文中最精要、最高頻率使用的 100 個單字,每個單字都要附上一個例句。 你不用一次給我 100 個,先給我 20 個就好,我學習完了會跟你要下一個部分。 這些高頻率使用單字中,一定有大量的連接詞、主詞、受詞等,請也介紹基本的文法,並且附上使用情境與範例。 範例可以來些幽默點的,輕鬆些,不要都沉悶的。 ``` 你可以看看結果(連結放留言),這個西文單字表可能是我目前看過最好玩的。 而記完這些單字例句,你可以用同樣的概念,請 AI 抓出最重要的發音、文法、介系詞、語助詞、20 個最常用的日常口語例句... 不用幾天,你就有 A1 西班牙文的程度了。 你可以這樣理解「反身性」的概念—— 搜尋引擎問世之後,「知道答案」變得不重要,「知道怎樣搜尋答案」變得很重要。 AI 問世之後,「會不會」變得不重要,「知道怎樣可以會」變得很重要。 使用雛形餵給 AI,然後開始來回碰撞,你很容易有意想不到的產出。 ▋ 3. 還是要跟著「讀」 我記得大約是在腳本長度超過 600 行之後,Claude 開始出現問題。 例如,在一個區塊裡 AI 沒有讀到它認為該有的物件,就跟你說要重新編輯,可實際上那東西只是放在腳本的一開頭。 或者,我發現 import 的部分有報錯,AI 就說這是版本問題,重新安裝 LINE SDK、Python 版本、重新跑虛擬環境....然後問題還在,重來,再重來,再重來...直到第五個循環我受不了,手動殺掉這個迴圈才終止。 這些問題一定都超簡單,是工程師一眼就能看得出來那種。 但問題我是小白。 所以這個過程就是在跟 AI 比賽你的「程式直覺」:常識上來說,這個元件放在這裡合理嗎?這個流程合理嗎?為什麼寫這個步驟? 因此你不能只是躺平許願,你還是要跟著一起「讀 code」。 至少要知道整個架構怎樣運作,能判斷模型什麼時候在出錯,否則很快就會遇上瓶頸(我的話是 600 行)。 ▋ 4. 學習程式語言最快的方式 單從「開發」的目的來說,因為還是要跟著讀,AI 目前還沒有完全取代「寫程式」這件事,操作者還是要會基本的程式概念。 但如果從「學習寫程式」來說,這個方法絕對是最光速的方式。 這次開發過程,我從連「函數怎樣寫」都忘了,到讀懂了大量 Python 語法、搞懂伺服器怎樣運作、實際部署 Git 、Control Flow、OOP...只花了十天。 因為直接處理「實際應用場景」,所以你學的一切都是「最需要用到的核心技巧」。 如果是傳統的線上課或互動軟體,十天我可能都還沒開始「用 python 寫計算機」之類的練習。寫計算機沒有不好,只是真實世界裡,你通常不需要自己寫一台計算機。 不過,這種學習方式還是有限制的。我確實快速學會了 Python 的核心概念,但僅限於「讀」。真的要寫,還是只能靠 AI。 可是回頭來想:「會不會,只要這樣就夠用了?」 如果我維持「只會讀 code」的狀態,究竟到哪裡我才會開始撞牆,必須要手動寫 code? 這非常有趣。 我目前正在寫下一個腳本,這次用的語言是 JavaScript。也許我很快就會撞到這堵牆,再跟你回報。 但假設沒有這堵牆,那是很可怕的一件事:只要你想,你可以快速學習各種程式語言:JS、C++、Go、php、Rust...甚至 Lisp,如果你想不開的話。 當語言學習成本減少到五分之一時,我們怎樣重新看待「寫程式」這件事? 一個單獨工程師的能力邊界,可以被增強放大到哪裡? ---- 全文未完,剩下: 實作方法 ▋ 一:除了寫腳本以外,也寫一份文檔紀錄思考。 ▋ 二:Git 版本控制很重要。 ▋ 三:必要時借助第三方意見(另一個 AI)。 ▋ 四:用頭去撞牆。 結論 ▋ AI 就能寫程式了,學程式語言還有價值嗎? 我放在《書不起》: https://www.chiukaun.com/p/ai-192 |
Direct link: https://paste.plurk.com/show/SJ8ifgfCBs97zh3ogbM1