Skip to content

telunyang/nodejs_ai_basics

Repository files navigation

nodejs_ai_basics

使用 nodejs 開發 AI 基礎應用的範例程式碼。

node.js 網址

套件安裝

npm i --save

上課使用到的模型 (optional)

  • Google Drive
    • 下載 @huggingface.zip 之後,解壓縮到 nodejs_ai_basics 當中的 node_modules 資料夾裡面,有同樣資料夾名稱沒關係,直接覆蓋過去就行了。

提問

  • 通則
    • 「結業前」可提問、討論,要把多餘時間和資源,留給當前上課的學員。
  • 寫信
    • E-mail: [email protected]
    • 信件標題寫上你的班別和姓名,或是在哪裡參與我的課程,例如 [資展 <班別和代號> / 臺大計中 / 聯成] 你的主旨 ○○○。
    • 提問的內容要與本專案有關,其它課程的部分,去請益原本授課的老師
    • 不要把程式碼寄給我,可能沒時間看,討論儘量以解決問題的方向為主。
    • 不符合以上幾點,將直接刪除,敬請見諒。

範例程式碼

  • 上課的範例程式碼都放在 examples 資料夾裡面,可以用來參考。
  • 我們將上課資料夾 nodejs_ai_basics 當作根目錄。每次都會讓學員們在 nodejs_ai_basics 資料夾裡,手動新增一個 .js 程式檔案,例如 1-1.js,不會直接用到 examples 資料夾裡的程式碼。

大綱

  • AI 基礎概論與演進
  • AI 應用概論
    • 電腦視覺
      • 圖片特徵擷取與相似度計算
      • 物件偵測
      • 圖片分類
    • 自然語言處理
      • 文字特徵擷取與相似度計算
      • 文字分類
      • 情感分析
      • 文字生成
      • 翻譯
    • 語音處理
      • 音訊特徵擷取與相似度計算
      • 語音轉文字
      • 文字轉音樂
      • 文字轉語音
    • 知識挖掘
      • 建立向量資料庫
      • 向量檢索 (使用文字描述)
      • 向量檢索 (使用音訊檔案)
    • 智慧文件處理
      • 圖片內容檢視
      • 語音內容檢視
  • 生成式 AI (optional)
    • 文字生成 (一次性回應、串流回應與多輪對話)
    • 圖片生成
    • 語音生成
    • 文件解讀
    • 圖像解讀

課程目標

  • 體驗 AI 應用的基本概念與技術,建立基本的 AI 應用開發能力。
  • 整合一到多個 AI 應用範例,成為專案的主要或次要功能。

補充 transformers.js

將 Hugging Face 模型轉換成 ONNX

覺得有些 hugggingface 上的模型很有趣,但沒有 onnx 可以用,可以考慮使用 Export a model to ONNX with optimum.exporters.onnx 來將常見模型轉換成 onnx 格式(也可能讀取特定資料夾裡的模型 連結),但是你要學習如何使用 python 指令,並且安裝 optimum 套件,當然~你可以請 ChatGPT 教你如何解決前述的問題。

可能會碰到的問題

  • 原則上安裝 64 位元的 Node.js nvm install <LTS version> 64 (不寫 64,預設 64)。
    • 有些課可能需要用到 32 位元的版本,可以考慮使用 nvm install <LTS version> 32 來安裝 32 位元的 Node.js。
    • 同個版本的 Node.js,64 位元和 32 位元無法並存,需要分成不同版本安裝。例如 nvm install 22.17.1 64nvm install 22.17.0 32
  • 自行輸入的程式碼無法執行或持續報錯,可以先複製 examples 資料夾當中的範例程式碼,執行看看 (有些同學會用 Diffchecker 來比對自己和上課範例的差異)。

作業說明

  • 僅限授課學員。
  • 同學之間可以互相討論,但千萬不要抄襲。
  • 依興趣選擇至少 1 個 AI 應用,開發一個 Node.js 的 Web 應用程式,例如過去的學員曾經開發:
    • 文字
      • 取得圖書館的問答集,之後將資料轉換成向量資料庫,並使用向量檢索技術,實現問答系統。
        • 使用者輸入「請問要如何辦理借閱證呢?」(Q),系統會使用文字向量檢索技術,從向量資料庫中找到相似的問題(Q),例如第一筆是「如何申請借閱證?」,再用這個問題的答案(A)中作為回覆,回傳給使用者,顯示資料列表或表格在網頁上。
      • 取得景點描述和圖片,之後將資料轉換成向量資料庫,並使用向量檢索技術,實現景點推薦。
        • 使用者輸入「我想去看海」,系統會使用文字向量檢索技術,從向量資料庫中找到相似的描述,例如第一筆是「這裡有美麗的海灘」,再用這個描述的圖片和圖片介紹作為回覆,回傳給使用者,顯示圖片和介紹在網頁上。
    • 語音
      • 將語音人聲抽出來
        • 製作成逐字稿,之後交由文字生成模型將逐字稿重點整理成會議記錄。
        • 將中文語音的文字翻譯成英文,再交給處理英文的情緒分類模型(當然也可以找直接處理中文的模型),將你的情緒進行分析。
        • 製作成 YouTube 影片的字幕檔,之後再使用文字生成模型將字幕檔重點整理成影片說明。
      • 建立音樂的向量資料庫,之後錄一段 5 ~ 10 秒的音樂片段,然後使用向量檢索技術,找出相似的音樂片段和資訊(還可以在網頁上播放音樂片段),實現音樂檢索。
    • 圖片
      • 蒐集大量的衣物或家具、家電圖片,之後將資料轉換成向量資料庫,並使用向量檢索技術,實現圖片檢索(以圖搜圖)。
  • 可以使用本地端的模型和工具(可能速度較慢),或是使用 Gemini 這類強大的雲端模型(有限的免費額度和存取限制;可能需要付費),評估工具選用的可行性和效能。
  • AI 的應用領域太大,可以不受限於課程內容,依照自己的興趣和需求,選擇適合的 AI 應用。
  • 如果有向量檢索的機制,可以建立相似度門檻(例如 0.8 或 0.9,依你的經驗而定),當相似度低於這個門檻時,可以回覆「抱歉,找不到類似的問題」。
  • 課程結束後,兩個禮拜內繳交作業(可現場討論),不用給我程式碼,只要拍一段網頁操作的影片,展示你的 AI 應用程式的功能,不限制時間長度,不一定要口頭說明,可以將用到哪些功能寫在網頁上,例如在本地端、雲端用到的 AI 工具或模型有哪些,他們做了些什麼等等:
    • 70 分: 1 個 AI 應用功能。
    • 80 分: 2 個 AI 應用功能,可以單獨展示,或是串接起來,成為一個整合應用功能。
    • 90 分: 3 個 AI 應用功能,可以單獨展示,或是串接起來,成為一個整合應用功能。
    • 100 分: 4 個(含以上)AI 應用功能,而且功能有整合性,同時包含一些團隊或個人的創意。
      • 例如:
        • 心情點播機
          • 使用者透過瀏覽器錄製自己的語音,系統將語音轉換成文字。
          • 生成模型判斷文字的意圖和情境,生成一段文字,同時讓系統產生一段符合情境的音樂(秒數自定)。
          • 系統將音樂片段與文字內容結合,輸出成類似廣播節目主持人邊講邊播音樂的效果,使用者可以隨時在網頁上播放系統生成的內容。

About

教材: 透過 Node.js 來體驗基礎的 AI 模型

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published