使用 nodejs 開發 AI 基礎應用的範例程式碼。
npm i --save- Google Drive
- 下載
@huggingface.zip之後,解壓縮到nodejs_ai_basics當中的node_modules資料夾裡面,有同樣資料夾名稱沒關係,直接覆蓋過去就行了。
- 下載
- 通則
- 「結業前」可提問、討論,要把多餘時間和資源,留給當前上課的學員。
- 寫信
- E-mail:
[email protected] - 信件標題寫上你的班別和姓名,或是在哪裡參與我的課程,例如
[資展 <班別和代號> / 臺大計中 / 聯成]你的主旨 ○○○。 - 提問的內容要與本專案有關,其它課程的部分,去請益原本授課的老師。
- 不要把程式碼寄給我,可能沒時間看,討論儘量以解決問題的方向為主。
- 不符合以上幾點,將直接刪除,敬請見諒。
- E-mail:
- 上課的範例程式碼都放在
examples資料夾裡面,可以用來參考。 - 我們將上課資料夾
nodejs_ai_basics當作根目錄。每次都會讓學員們在nodejs_ai_basics資料夾裡,手動新增一個.js程式檔案,例如1-1.js,不會直接用到examples資料夾裡的程式碼。
- AI 基礎概論與演進
- AI 應用概論
- 電腦視覺
- 圖片特徵擷取與相似度計算
- 物件偵測
- 圖片分類
- 自然語言處理
- 文字特徵擷取與相似度計算
- 文字分類
- 情感分析
- 文字生成
- 翻譯
- 語音處理
- 音訊特徵擷取與相似度計算
- 語音轉文字
- 文字轉音樂
- 文字轉語音
- 知識挖掘
- 建立向量資料庫
- 向量檢索 (使用文字描述)
- 向量檢索 (使用音訊檔案)
- 智慧文件處理
- 圖片內容檢視
- 語音內容檢視
- 電腦視覺
- 生成式 AI (optional)
- 文字生成 (一次性回應、串流回應與多輪對話)
- 圖片生成
- 語音生成
- 文件解讀
- 圖像解讀
- 體驗 AI 應用的基本概念與技術,建立基本的 AI 應用開發能力。
- 整合一到多個 AI 應用範例,成為專案的主要或次要功能。
- 學過
react,可以參考這個 連結,裡面有一些使用transformers.js+react的範例程式碼。 - 有些範例教學也值得一看 Transformers.js - State-of-the-art Machine Learning for the Web --> Building a Vanilla JavaScript Application。
覺得有些 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 64和nvm install 22.17.0 32。
- 有些課可能需要用到 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 應用功能,而且功能有整合性,同時包含一些團隊或個人的創意。
- 例如:
- 心情點播機
- 使用者透過瀏覽器錄製自己的語音,系統將語音轉換成文字。
- 生成模型判斷文字的意圖和情境,生成一段文字,同時讓系統產生一段符合情境的音樂(秒數自定)。
- 系統將音樂片段與文字內容結合,輸出成類似廣播節目主持人邊講邊播音樂的效果,使用者可以隨時在網頁上播放系統生成的內容。
- 心情點播機
- 例如: