模型 / 資料集
microsoft/generative-ai-with-javascript avatar
microsoft/generative-ai-with-javascript

microsoft/generative-ai-with-javascript:八堂課、一套角色對話 App,以及它不打算教你的東西

Join a time-traveling adventure where you meet history’s legends while learning Generative AI technologies! ✨

1,264 個 Star840 個 ForkJavaScriptMIT

秒懂

它是什麼?
這是一門用 JavaScript 教生成式 AI 的微軟課程,附帶一個可實際執行的歷史人物對話 App。它的價值在課程編排與 Codespaces 開箱即用,但課程本身不是產品,採用前要先想清楚你要的是教材還是程式庫。
適合誰用?
這門課適合已經會寫 JavaScript、想在動手做之前先建立生成式 AI 心智模型的開發者,以及需要現成教材帶內部讀書會或課程的講師。不適合已經在用 RAG 或 tool calling 出貨、想找可直接依賴的 SDK 或框架的人,這個倉庫裡沒有任何可安裝的套件。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 4 天前。
用什麼語言寫的?
主要是 JavaScript(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它解決的不是技術問題,是學習順序問題

生成式 AI 的入門資料不缺,缺的是順序。多數人第一次接觸是從某個 API 的 quickstart 開始,寫出一個能呼叫模型的函式,然後卡住:什麼時候該調 prompt、什麼時候該接外部資料、什麼時候該讓模型去呼叫工具。這三件事在實作上是不同的架構決策,但入門文件通常把它們混在同一段範例裡。

這個倉庫把順序明寫成八課。第一課談 LLM 的基本原理與限制,第二課建出第一個 App 並解釋 system prompt,第三課才進 prompt engineering,第四課處理 structured output,第五課 RAG,第六課 tool calling,第七與第八課是 MCP 與「用 LLM 強化 MCP client」。這個排列的意圖很清楚:先讓你有一支能跑的程式,再逐層加上能力,每一層都對應一個具體的失敗經驗。

對象也很明確。README 說這是給想把生成式 AI 整合進 JavaScript 應用的人,而課程全程用 JavaScript,不是 Python。這一點在 2026 年仍然有實際意義,前端與 Node.js 生態的開發者不需要為了學概念先換語言。至於那個時間旅行、跟達文西與 Ada Lovelace 對話的包裝,是教學載體而非技術賣點;它讓每一課有同一個可觸摸的目標物,companion app 就是這個目標物的實作。

課程、App 與影片三條線如何互相支撐

倉庫的結構可以從 README 直接讀出來。lessons/ 底下是八個編號目錄,每一課包含書面教材、作業與測驗、解答,以及可互動的角色。app/ 目錄是那個 companion app,README 指向 app/README.md 說明如何執行。docs/ 放設定文件與圖片,其中 docs/setup/README.md 同時涵蓋 Codespaces 與本機兩條路徑。videos/ 底下則按場次分放 slides、demos 與 script,README 的表格列出每一場對應的投影片檔案與 YouTube 連結。

三條線的分工是:lessons/ 是主線,videos/ 是同一批主題的講述版本,app/ 是讓角色對話真的發生的執行體。這種切法的好處是你可以只取其中一條。想快速理解概念的人看影片與投影片;想動手的人跑 app 並照著 lessons 做作業。

需要留意的是這三條線並非嚴格同步。README 的影片表格從場次 0 的系列介紹開始,一路排到 prompt engineering 等主題,而 lessons/ 是另一套編號。兩邊的對應關係要靠標題自行判斷,倉庫沒有提供一份對照表。另外 README 的課程表格只列到第八課,並註明新課會持續加入,所以目錄結構本身是會變動的。

MCP 那兩課是後來補上的,README 用「NEW」標示。這代表課程仍在演進,也代表你若在幾個月前 fork 過,內容可能已經落後。

怎麼跑起來:Codespaces 與本機兩條路徑

README 給的起步流程很短。在倉庫頁面按 Fork,進到自己 fork 出來的副本,點 Code 按鈕,切到 Codespaces 分頁,選 Create codespace。這個環境是預先設定好的,README 說你可以接著用 GitHub Models 執行範例並與模型互動,不需要額外設定。

這條路徑的關鍵在 GitHub Models。它讓你在 Codespaces 裡就能取得模型端點,省掉申請金鑰與設定環境變數的步驟。對於只是要跟著課程跑一遍的人來說,這是摩擦最小的方式。

另一條路是本機執行。README 指向 docs/setup/README.md 的 Option 2,標題是 Running the app locally,並指向 app/README.md 取得 companion app 的細節。這裡必須說清楚:我沒有實際安裝或執行過這個專案,所以本機路徑具體需要哪些環境變數、要填哪些 config key,只能從文件確認,而提供的材料只給到路徑層級,沒有列出變數名稱。如果你要在本機跑,第一步就是把 app/README.md 與 docs/setup/README.md 讀完,確認模型端點與憑證的設定方式,再決定要不要走 Codespaces。

另外 README 提到課程內容有音訊標籤(audio tags),可以讀也可以聽。這是教材層級的功能,與執行環境無關。

翻譯部分:lessons/ 底下每一課都有一個 translations/ 目錄,檔名格式是 README.<language code>.md,例如 README.es.md。倉庫在 README 裡公開徵求翻譯。

你可能會誤判的兩件事:這不是函式庫,也不是產品

第一個誤判是把它當成可依賴的套件。倉庫裡沒有任何 npm 套件說明,topics 標的是 samples 與 training,語言標 JavaScript,授權是 MIT。它的產出是教材與範例程式,不是 API 表面。你不會在這裡找到版本號、semver 承諾或 changelog,因為它不對外提供介面。

第二個誤判是把範例當成生產架構。課程的目標是讓你理解機制,範例會為了教學清晰而省略錯誤處理、重試、成本控制與觀測性。RAG 那一課教你整合外部資料,但一門課的篇幅不可能涵蓋向量庫選型、索引更新策略與召回品質評估。tool calling 那一課教你怎麼把函式交給模型,但不會教你怎麼防止模型呼叫了不該呼叫的工具。這些都是採用時要自己補的。

還有一個更實際的限制:課程會持續新增,而 lessons/ 的內容深度取決於作者投入。README 自己說「New lessons will be added to the course over time」,這對讀者是好事,對想把課程當成穩定教材的人則是變數。你要嘛接受內容會變,要嘛在 fork 之後凍結一份自己的版本。

最後,README 有一段指向 Responsible AI disclaimer 的說明,companion app 讓你和歷史人物對話這件事本身涉及生成內容的風險。課程有提,但這類免責聲明不構成技術防護。

同樣是學生成式 AI,它跟一般教學資源差在哪

最接近的替代品是各家模型供應商自己的 quickstart 與 cookbook。那些資源的優點是貼近 API 現況,範例通常可以直接複製進專案;缺點是它們以單一供應商的介面為中心,你學到的是「怎麼用這家的 API」,而不是「生成式 AI 應用有哪些層次」。這個倉庫的課程順序刻意先講原理與限制,再進 prompt、structured output、RAG、tool calling,最後才是 MCP,這個順序本身就是它的差異點。

另一個替代方向是通用型的 LLM 教學倉庫,語言多半是 Python。對 JavaScript 開發者來說,換語言的成本不只是語法,還包括生態工具與部署路徑。這個倉庫從第一課就鎖定 JavaScript,companion app 也是 JavaScript 寫的,這是它相對同類教材的實際優勢。

第三種替代是直接讀 MCP 或各家框架的規格文件。如果你的目標只是把工具介面接起來,規格文件比課程快得多。課程的價值在於它把 MCP 放在第七、第八課,前面已經鋪了 tool calling 的基礎,讓你理解為什麼需要一個標準化的協定來描述 prompts、resources 與 tools。順序帶來的理解,規格文件不會給你。

反過來說,如果你已經清楚這個順序,只是需要一份 API 參照,這個倉庫就是繞遠路。

維護成本、授權與課程型專案的特殊風險

授權是 MIT。這表示你可以重製、修改、散布課程內容與範例程式,包含商業用途,條件是保留著作權與授權聲明。README 自己也寫「Reuse, tweak, and share this content freely」,與 MIT 一致。我不是律師,以下不是法律意見:如果你要把課程內容包進內部訓練平台或對外販售的教材,請自行確認 MIT 的署名要求在你的散布形式下如何落實,尤其是投影片與影片腳本這類容易被忽略的檔案。

維護成本要分兩層看。作為使用者,你的成本主要是追蹤內容更新。倉庫的最後推送時間是 2026 年 9 月,且沒有檢索到任何 release,代表它沒有版本化的發佈節奏。課程型倉庫通常就是這樣運作,變更直接進 main。如果你 fork 之後做了自己的修改,之後要同步上游會遇到衝突,因為教材的改動常常是整段重寫而非逐行修補。

作為貢獻者,成本在翻譯與範例維護。README 徵求翻譯,格式是 lessons/<課號>/translations/README.<語言>.md。翻譯的成本不只是文字,還有當上游課程改版時的同步。模型 API 與 MCP 規格都在變動,範例程式碼的保鮮期比一般教材短,這是所有生成式 AI 課程共同的問題。

還有一點:倉庫的 topics 包含 samples,但沒有 release 機制,所以你不會收到「這一課的範例已更新」的通知。要追蹤變更只能看 commit。

誰該採用,誰該跳過

該採用的人有兩類。第一類是已經會寫 JavaScript、但對生成式 AI 只有零散認識的開發者。八課的順序能幫你把 prompt、structured output、RAG、tool calling 之間的關係排好,而且全程用你熟悉的語言。第二類是需要教材的講師或內部培訓負責人。MIT 授權讓你可以直接改編,companion app 提供一個現成的示範體,影片與投影片省下大量備課時間。

該跳過的人也很明確。如果你已經在生產環境使用 RAG 或 tool calling,這個倉庫不會給你新東西,它的深度停在入門。如果你在找可安裝的 SDK、框架或工具鏈,這裡沒有。如果你需要穩定的版本化教材,課程持續新增內容這件事對你是負面因素,你得自己凍結一份。

決定採用之前,先確認三件事。第一,翻開 lessons/ 目錄,確認你要的那一課已經寫完、作業與解答都在,而不是只有標題。第二,讀 app/README.md 與 docs/setup/README.md,確認 companion app 需要哪些環境變數與模型端點;提供的材料只到路徑層級,沒有列出變數名稱,這一步必須自己看。第三,決定執行環境,Codespaces 走 GitHub Models 幾乎不用設定,本機路徑則要自己處理憑證。

最後一個具體判斷:這個倉庫的價值集中在 lessons/ 與 app/ 兩個目錄,videos/ 是補充。如果你只打算花兩小時,跑 Codespaces 加第二課與第三課,會比從第一課順讀到底更划算。

編輯結論

這門課適合已經會寫 JavaScript、想在動手做之前先建立生成式 AI 心智模型的開發者,以及需要現成教材帶內部讀書會或課程的講師。不適合已經在用 RAG 或 tool calling 出貨、想找可直接依賴的 SDK 或框架的人,這個倉庫裡沒有任何可安裝的套件。採用前先確認三件事:lessons/ 目錄下你要的那一課是否已經寫完(README 明說新課會陸續加入)、app/ 目錄的 companion app 需要哪些環境變數與模型端點、以及你打算跑在 GitHub Codespaces 還是本機,因為這兩條路徑的設定步驟在 docs/setup/README.md 裡是分開寫的。

官方來源

  1. Issues
  2. License: MIT
  3. microsoft/generative-ai-with-javascript on GitHub
  4. Project website
  5. README
社群筆記

社群筆記