跳至主要內容

里程碑

用 n8n + LINE 打造專屬的日文歌詞學習小精靈 🎵

9ana @iam9ana發布於

ꕤ 主題發想與動機

最近蠻喜歡聽日文歌,每次聽到超好聽的旋律時,總希望能順便了解這首歌的意涵,但是我的日文程度只停留在五十音和基本問候,因此我想要透過日文歌來學裡面的單字與文法,甚至深入了解背後的創作理念與歌手故事。然而,手動去查辭典或看零散的網路翻譯往往耗時,且缺乏系統性的互動引導。

此外,在技術學習上,我想藉由這個專案掌握「如何將 AI 輸出的結構化資料自動存入資料庫」的實務流程。透過資料庫作為中間的狀態暫存層,每次分析都嚴格鎖定在「最新存入的那一筆歌曲」,讓資料狀態清晰可控,也讓聽歌與語言學習能更有架構地進行。

ꕤ 我想先講講心得

這是我第一次接觸 AI 自動化流程,並且學習使用 n8n 串接 LINE 做出自己的 AI 小精靈,在看上哲兄的教學影片時,我完全就像寶寶一樣被教學哈哈哈~ 課程中都會用生活中的例子來說明,我覺得非常好理解!很期待之後的課程!

在製作自己的小專案時,過程中會炸出很多例外,像是 AI 出現幻覺,或是我的 system prompt不夠清楚讓他誤會,就要一直想解決方案並調整流程架構,最後可以依照不同情境分流成功執行出來,得到了一點成就感呢~好玩好玩!期待之後上哲兄的課程,想要學習更多酷東西~ BTW 這個網站的小世界也太可愛了吧!超級用心~還有小彩蛋,牛掰阿~~~


ꕤ 功能與流程架設

整個架構透過 n8n 串接 LINE Messaging API、OpenAI 模型與 n8n 資料庫:

  1. 項目自然語言輸入與結構化分類:
  • 使用者傳入訊息後,透過 Webhook 接收並觸發 LINE Loading 動畫(維持良好的等待體驗)。
  • 透過提示詞規範,模型會將使用者輸入轉換為嚴格的 JSON 格式,分類出 CHAT(閒聊/缺漏引導)、MUSIC(儲存後提供快速選單)或具體指令(日文歌詞學習、歌曲解析、歌手介紹)。
  1. 資料庫寫入與狀態隔離:
  • 當歌曲三要素齊全時,立即將解析出的歌名、歌手、歌詞寫入資料庫(Insert row),落實結構化資料儲存。
  • 後續需要產出教學或透過 Quick Reply 互動時,一律只從資料庫撈取「最新的一筆歌曲紀錄(Get row(s) 最新資料)」傳給模型。這樣做確保每次 AI 都只專注分析當下這首歌,從架構層面隔離干擾。
  1. 多輪分支路由(Switch Router):
  • 資訊完整且指定需求:寫入資料庫 ➔ 撈取該筆資料 ➔ 呼叫模型生成深度解析 ➔ 回傳 LINE。
  • 資訊完整但未指定需求:寫入資料庫 ➔ 回傳 LINE Quick Reply 按鈕([日文歌詞學習]、[歌曲解析]、[歌手介紹]),讓使用者一鍵點選。
  • 缺少必要資訊或閒聊:回傳溫暖引導訊息,提醒補齊資訊,不寫入資料庫。

ꕤ 遇到的困難與解決方案

在實作過程中,經歷了幾次卡關與問題解決:

  1. 多輪對話的跨歌曲幻覺問題:
  • 問題:如果單純仰賴 AI 的對話記憶,當使用者連續問了兩三首歌後,模型很容易把上一首的歌詞和新一首的歌名混在一起,產生記憶污染與幻覺。
  • 解決:導入資料庫作為單一真實資料來源)。每當資訊完整就直接結構化入庫,後續分析(例如點選 Quick Reply 時)直接從資料庫撈取最新的那筆歌曲資料餵給 AI,完全拋棄不必要的長記憶。這樣一來,AI 每次都能 100% 專注分析最新那首歌,徹底根絕了跨歌曲混淆的幻覺!
  1. 避免 AI 自行補齊歌詞:
  • 問題:初期測試時,只要使用者少給了歌詞,AI 就會嘗試自己「通靈」補齊,但日文歌詞經常拼湊錯誤,導致錯誤資料直接寫入資料庫。
  • 解決:重構 Prompt 邏輯,明確規範「歌手、歌名、歌詞三者必須全由使用者提供,嚴禁自行搜尋或猜測」。只要少一項就強行落入 CHAT 分類並回傳親切引導,確保進資料庫的資料品質絕對純淨。
  1. Loading 動畫提前消失:
  • 問題:LINE Loading 動畫提前中斷,使用者可能會以為 AI 消失了,但其實他還在思考。
  • 優化:將 LINE Loading 動畫的 loadingSeconds 調高至 30 秒,確保動畫在背景運算期間持續播放,直到最終訊息回傳瞬間自然結束。

ꕤ 未來改善與優化方向

  • 資料庫歷史清單與複習功能:目前設計是鎖定「最新一筆」,未來可以加入「我的學習歌單」指令,讓使用者能回查過去存入資料庫的所有歌曲與生詞筆記。
  • 更平滑的多輪確認機制:未來希望在使用者少給歌詞時,系統能主動提問確認,使用者僅需回覆「是」即可由流程自動對齊並寫入資料庫,兼顧資料正確性與使用者體驗。
  • 排版升級為 LINE Flex Message:將解析產出的生詞與文法模組化為精美的圖文卡片,提升在手機上的閱讀與複習體驗。

0 個愛心0 則留言

登入並驗證手機後就能留言。登入