跳至主要內容

里程碑

尚未調教完成的選擇困難小精靈,拯救選擇障礙的我自己

ㄌㄏ @sirius_acma發布於 已編輯

身為一個完美主義 + ADD + 選擇障礙的人類,每天都在面對各種選擇。

連這一項作業題目的選擇我也是挑挑揀揀在截止日當天才決定的 ~(>_<。)\

從小大到都一直不知道如何作取捨,這樣長大的我一直很希望自己可以學會怎麼好好的做決定,並認可自己的決定。

於是這隻可愛的小精靈就誕生啦

一、為什麼會選擇做一隻選擇困難小精靈呢?

其實在他誕生之前,我做了另一個關於「warframe」這款遊戲的專案,奈何我學不乖,之前就知道他無論是官方還是玩家產物都是史山代碼,想當然這次又双叒撞大霧了。

於是我開始重新思考我要選什麼主題來做新的專案,大概思考了不下20個想法。在跟 AI 溝通的過程中,他說了一句話:『不要選「AI 可以幫我做什麼」,要選「世界發生變化時,我希望系統自動幫我完成什麼」』,這讓我想到每次我覺得世界快要崩塌的時候,通常就是做不出決定死線又快到的時候。

二、他有什麼功能呢?

首先,他不是單純的聊天機器人(雖然你要跟他聊天也是可以 awa),而是一個「會幫你記住選項,並強迫你面對現實的傢伙」。

主要核心是由四條線路組成的:

  1. 全新決策 :記錄新的煩惱到 Notion。
  1. 持續討論:陪你討價還價,甚至幫你排時間。
  1. 回報結果:任務結案,幫你在 Notion 打勾。
  1. 修改設定 / 閒聊:可以隨時切換暱稱和公開狀態,不會干擾原本的任務。

先來看看他的全貌吧!

嗯......真的很亂呢......

三、第一個閘門:身份驗證

這個閘門主要是用來分辨使用者的身份狀態,運作的邏輯如下:

1. 當使用者透過 LINE 傳送訊息時,系統會先查詢 n8n Data Table 中的使用者資料,並透過 Switch 節點判斷目前使用者所處的狀態,分為以下三種情況:

A. 新的用戶:

當系統查詢不到使用者的註冊資料時,會把他當成新使用者,登記的部分我是使用 n8n 內建的 DB 去處理(雖然有串 Notion,但是剛開始打算把公開資料跟個人資料分開放,於是整個專案最終有三個 DB (⊙_⊙;)),系統會先保留該使用者的 LINE User ID,接著透過 LINE 詢問使用者希望使用的暱稱,等使用者完成註冊。

查無此人就會走這條
實際聊天樣式

B. 等待暱稱:

當使用者已進入註冊流程,但還沒提供暱稱時,訊息會被導向這個分支。系統會接收使用者輸入的暱稱,並將暱稱與先前保留的 LINE User ID 建立對應關係,儲存至 n8n Data Table,完成使用者註冊。

透過這項設計,系統能夠在後續對話中辨識使用者,避免每次收到訊息時都要求重新註冊。

C. 已註冊用戶:

完成註冊後,使用者後續的訊息便會進入主要對話流程。在正式判斷訊息意圖之前,系統會先取得 Notion 中相關的既有紀錄,並透過 Aggregate 節點彙整資料,再交由 AI 分析訊息的意圖。

這個階段的目的是讓系統能有上下文記憶,也能把當前對話內容跟已經建立的項目搭在一起,進而決定接下來應執行的處理流程。

2. 完成前置資料彙整後,系統會透過 AI 判斷使用者目前的訊息想要幹嘛,再將判斷結果交給第二個 Switch 節點,依照訊息的類型放行。

本專案將訊息處理分為四種情況:

  • 全新決策: 使用者提出尚未建立紀錄的新問題,需要 AI 協助分析並提供建議。
  • 持續討論: 使用者針對先前提出的問題繼續討論、比較選項或調整想法,需要參考既有對話紀錄。
  • 回報結果: 使用者準備結束某項決策的討論,系統需要整理最終結果並更新原有紀錄。
  • 其他訊息: 包含一般聊天及設定相關操作,會依照訊息類型進入對應分支。

透過這項設計,系統可以區分「開始一個新問題」與「延續先前的決策」,避免每次收到新訊息時都重新建立決策紀錄,也讓同一項決策能夠在多次對話中持續更新。

四、 第二個閘門:決策狀態辨識

  1. 新決策:建立問題與提供建議

當 AI 判斷使用者提出新的問題時,系統會將相關訊息交由 AI 生成回覆,再透過 LINE 傳送給使用者,並將這次決策的相關內容紀錄至 Notion 資料庫。

這條流程的重點在於建立新的決策紀錄,使後續的討論與結果更新能夠有對應的資料可供查詢。

  1. 持續討論:延續既有決策

當使用者仍在考慮選項,尚未做出最終決定時,系統會先從 Notion 取得既有的決策紀錄,再透過 Aggregate 節點彙整相關資料,提供後續處理流程使用。

接著,系統會將相關內容交由 LINE 回覆流程傳送給使用者,並更新 Notion 中原有頁面的內文,保留此次討論的進展。

由於這項功能需要直接修改 Notion 頁面的內文,本專案使用 HTTP Request 節點串接 Notion API,以 JSON 格式執行更新,而非完全依賴 n8n 原生的 Notion 節點。

透過持續更新同一筆紀錄,系統可以保留決策討論的脈絡,而不只是將每次訊息當成互不相關的問題。

下圖是 Notion 的對話紀錄樣式

我覺得很漂亮 OWO
  1. 決策結案:整理最終結果

當使用者決定結束某項決策的討論時,系統會先取得該決策的既有紀錄,再將相關內容交由 AI 產生回覆。

接著,系統會更新 Notion 頁面的內文與決策狀態,整理本次決策的最終結果,並透過 LINE 回覆使用者。

此外,結案流程也預留了後續回饋機制:系統在回覆使用者時會觸發 n8n 表單,預計用來收集使用者執行決定後的感受與實際結果,作為未來個人化建議及公開決策紀錄的資料來源。

目前表單回饋與後續個人化分析尚未完成,因此現階段主要實作的是決策討論、紀錄更新與狀態管理。

五、AI 模型與資料處理方式

下圖是我的 AI 節點,幾乎每一組都長這樣,右下角那顆 Structured Output Parser 是可以讓他更聰明的賽博腦子

嗯對我花轟把所有的 Basic LLM Chain 都串到同一顆 Groq

本專案的 AI 節點統一採用 n8n 的 Basic LLM Chain,並使用透過 Groq 提供的 openai/gpt-oss-20b 模型。

AI 在整體流程中主要負責兩項工作:

  1. 訊息意圖判斷: 根據使用者訊息及相關對話紀錄,判斷目前屬於新決策、持續討論、決策結案或其他訊息。
  1. 自然語言回覆生成: 根據目前的決策情境與相關資料,產生適合回傳給使用者的內容。

另一方面,使用者身分查詢、流程分流、Notion 資料讀取及更新等工作,則由 n8n 的一般節點與條件判斷負責。

這種分工讓 AI 專注於語意理解與文字生成,而資料查詢與流程控制則交由明確的自動化邏輯處理,降低整個系統對 AI 自行判斷執行流程的依賴。

六、其他訊息與後續擴充功能

除了決策相關的訊息外,系統也預留了其他訊息的處理分支。

  1. 一般聊天

當訊息不屬於新的決策、持續討論或決策結案時,系統會將其導向一般聊天分支,處理非決策類型的對話,讓使用者不必每次都以正式的決策問題格式與機器人互動。

  1. 設定與個人化功能

本專案也規劃了設定功能,預計讓使用者管理相關參數,並作為後續公開紀錄與個人化建議的基礎。

未來可進一步讓系統根據使用者過往的決策紀錄與回饋,找出與當前問題相關的經驗,協助 AI 提供更符合個人需求的建議。同時,也可讓使用者決定哪些紀錄可以公開,並將經授權的內容同步至 Notion。

目前設定功能仍停留在參數規劃階段,相關的實際執行節點尚未完成,因此尚不具備完整的設定操作與個人化分析能力。

七、整體設計總結

「選擇困難小精靈」的核心並不是單純使用 AI 回答問題,而是透過使用者辨識、訊息意圖判斷、決策狀態管理與外部資料庫整合,建立一個能夠持續追蹤決策過程的對話系統。

透過 n8n 的條件分流與自動化流程,系統可以區分不同階段的決策需求;透過 AI 理解自然語言與生成回覆,使用者可以用自然對話的方式進行決策討論;透過 Notion 紀錄與更新機制,系統則能保留決策的發展過程,為未來的結果回饋、個人化建議及公開紀錄功能奠定基礎。

最後這邊給你們看一下我剛剛的小掙扎,我是真的有去使用他喔!

我真的很認真在焦慮 TT
最終還是決定不發小精靈的連結 (#`-_ゝ-)
Notion DB 端的對話紀錄

八、除不盡的蟲蟲

在這個過程中,我也是遇到了非常多的問題,即使我不算是個 n8n 新手。

  1. AI 不聽話:真的是不孤單,AI 原地轉圈圈應該是所有人都有撞過的南牆,調整的過程真的需要超級多的耐心以及轉不停的腦子,同時還要面對 token 不足的問題,解決方法並不難,但真的算是最折磨的部分
  1. Notion & LINE 原生節點不給力:眾所皆知,LINE 是沒有官方節點的,所以完全只能手搓;Notion 關於 DB 內文更新的部分也不完整,所以我也花了點時間研究,才讓它可以看起來漂漂亮亮(其實如果用基礎一點的 MD 語法是可以只用原生節點,但我看不下去)
  1. 決策紀錄對不上:剛剛前面說 AI 不聽話是最折磨的,那這個紀錄對不上就是最難處理的,因為構造做得很醜,所以資料的流動也是很匪夷所思,時常會遇到第一筆跑出來是正確的,但後面紀錄一多就蟲蟲危機。最終的解決方法其實也是毅力加上腦子,但因為我使用的輔助 AI 沒有辦法很清楚的確定我的每一步是怎麼接得,所以很多時候真的是一個一個慢慢核對慢慢抓蟲
  1. 測試地獄:測試就是一個體力活,加上 LINE 對於回應的要求很高,回應時間不能拖太久、不吃 MD 語法、格式跟別的會話軟體比起來相較麻煩一點,總之,都是 LINE 的錯(?)

九、關於我怎麼做得完......

老實說,我也不知道ㄏㄏ,轉頭看了一眼我的紀錄軟體,局然有整整九個小時,也算是盡力了(盡力個頭,誰叫你拖拖拉拉)。

好啦認真說,因為我過去已經有玩過 n8n,並且透過 n8n 專案申請入學到了我現在的學校(沒有人說全是 n8n 的原因,但我覺得很大一部分是),並且我對於感興趣的 idea 總是可以研究到廢寢忘食,再加上開頭提到的完美主義,我想要做我就一定做得到!

雖然說另外的 ADD 以及 選擇困難真的給了我很大很大的阻礙,但是換個方向思考,要不是有他們倆,也不會有這個如此膨脹的專案出世(這真的是好事嗎 OWO),最後也向期待著體驗的夥伴們說聲抱歉,我真的不允許我的小精靈以目前這個衣衫不整的狀態出去裸奔......

1 個愛心0 則留言

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