《Node.js生成式AI應用開發實戰》:從探索到落地的生成式 AI 開發實踐

這本書,比較像是一段學習歷程的整理
新書即將出版,這本書對我來說,更像是一段時間累積而來的學習歷程。
過去一年,我把大部分時間投入在生成式 AI 的探索上。從一開始呼叫 API,到逐漸理解模型的特性與限制,也開始嘗試不同框架、實作各種應用場景。過程中踩了不少坑,也留下了許多零散的筆記與實驗結果。
這些內容在反覆整理與驗證之後,慢慢形成一條相對清晰的學習脈絡,最後成為這本書的基礎。對我來說,它不只是知識的整理成果,更是一段持續試錯、逐步建立技術觀點的過程。
如果你也正在學習生成式 AI,或正在摸索如何將它應用在實務場景中,也許其中的一些經驗,能提供你一些參考。
一開始,其實沒有那麼多規劃
回頭看,整個過程其實沒有一個明確的起點。比較像是在某個時間點開始,意識到這個領域的重要性,然後就一路往下走。
最初的嘗試其實很直覺,只是想確認這些模型在實際應用中可以做到什麼程度。但很快就會發現,問題不在於「能不能做」,而是在於「做到什麼程度之後,才算真的能用」。
這個差異,在 demo 階段不明顯,但一旦開始嘗試把東西接進實際系統,就會變得非常具體。
當系統開始出現結構
隨著實作的內容逐漸增加,原本單一的功能會慢慢演變成一個有結構的流程。從單次回應,到需要維持對話脈絡;從單純生成內容,到必須結合既有資料;再到多個步驟之間的串接與控制。
在這個過程中,會開始面對一些比較本質的問題。例如,模型輸出的不確定性該如何被控制,哪些邏輯應該交給系統處理,哪些部分才適合交給模型,或者在什麼情境下,引入外部資料(例如 RAG)才是合理的選擇。
這些問題沒有一個標準答案,但在反覆嘗試之中,會逐漸形成一些相對穩定的做法。也讓整個開發過程,從單純「把功能做出來」,轉變為「如何讓這些功能在現實環境中運作」。
筆記與整理,變成過程的一部分
隨著嘗試的內容變多,另一個明顯的變化是,記錄開始變得不可或缺。
許多問題會以不同形式反覆出現,而一些看似可行的設計,在不同情境下可能會失效。如果沒有留下過程,很容易在一段時間後再次回到同樣的起點。
因此,後來的習慣變成在每一次嘗試之後,都試著把決策過程記錄下來。這些記錄不只是結果,也包含當時的假設、替代方案,以及最後選擇某種做法的原因。
當這些筆記逐漸累積之後,其實會開始看到一些共通的模式。例如,有些問題其實不需要複雜的架構就能解決,而有些設計在抽象化之後,反而會增加理解與維護的成本。
從工具到問題本身
在這段過程中,一個比較關鍵的轉變,是關注的重心從工具轉移到問題本身。
一開始學習時,很容易把焦點放在框架或工具上,試圖理解它們能做什麼、該怎麼用。但隨著經驗累積,會慢慢意識到,工具只是其中一個面向,真正需要釐清的是問題本身的結構。
在某些情境下,引入抽象層是有幫助的,但在另一些情況下,過度抽象反而會讓系統變得更難掌控。這些取捨,通常不會在工具文件中出現,而是需要透過實際經驗慢慢建立。
這樣的思考方式,也影響了書中內容的安排。比起單純介紹工具,我更傾向整理在不同情境下的選擇方式,以及這些選擇背後的考量。
整理,比學習更困難
將這些內容整理成一個有結構的形式,其實比學習本身更花時間。
許多原本只是直覺的理解,在試圖寫下來時,會被迫重新檢視。某些看似合理的結論,需要再做一次驗證,確認它不是來自於特定條件下的偶然結果。
這個過程某種程度上,是把原本模糊的經驗,轉換成可以被他人理解與重現的內容。也讓一些原本沒有被意識到的問題,變得更加清楚。
關於這本書
如果要說這本書在做什麼,我比較傾向把它看成是一條學習路徑的整理。
從最基礎的模型呼叫開始,逐漸延伸到如何建立穩定的流程,如何讓模型與外部資料互動,最後再到較為複雜的決策與任務處理。這些內容本來是分散的,但在整理之後,形成了一個相對連續的脈絡。
這並不是唯一的路徑,但至少是在這段時間內,我認為相對可行、也比較容易落地的一種方式。
最後
對我來說,這本書並不是一個完成的結果,而是一個階段性的整理。
它記錄的是某一段時間的理解,以及在那個時間點,我對這個領域的看法。未來技術一定會持續變化,現在的做法也可能需要被調整。
但至少在這個階段,這些經驗被系統性地整理下來了。
如果你剛好也在這條路上,也許其中有一些片段,會對你有所幫助。
