我已經使用 n8n 和 Ollama 建立本地端主機幾週了(透過 Docker 和內部網路,並經 tcpdump 確認零外部通訊)。我第一個建立的工作流程就是將會議記錄分解成任務。原因很簡單,因為我每次都必須手動重複相同的步驟,也就是閱讀會議記錄、提取必要資訊,並整理出誰該在何時完成什麼任務。
這個工作流程的設計是:Form Trigger(表單觸發)→ Ollama Chat Model(使用 llama3.2:3b 模型,僅限 CPU,4GB 記憶體)→ Code 節點解析截止日期並分配優先級 → 最後儲存為 JSON 檔案。我只讓大型語言模型(LLM)負責資訊提取。日期計算和優先級判斷則由 Code 節點處理,因為讓 3B 模型執行複雜的邏輯判斷似乎有些困難。
以下是測試時使用的輸入範例:October 10, 2026 - Weekly Team Meeting Attendees: Sarah, Mike, Tom, Lisa Finalize the packaging design for Product A by October 25 (Sarah) Conduct price negotiation with the supplier this week (Mike) Submit the budget proposal for next month’s trade show by Monday next week (Tom) Complete the inventory management system migration by end of November (Lisa)。
輸出結果如下:[ {"index":1,"title":"Finalize the packaging design for Product A","assignee":"Sarah","deadline":"October 25","priority":"medium"}, {"index":2,"title":"Conduct price negotiation with the supplier this week","assignee":"Mike","deadline":"This week","priority":"high"}, {"index":3,"title":"Submit the budget proposal for next month's trade show","assignee":"Tom","deadline":"Monday next week","priority":"medium"}, {"index":4,"title":"Complete the inventory management system migration","assignee":"Lisa","deadline":"End of November","priority":"low"} ]
優先級是根據距離會議日期的天數來判斷的(7 天內為高優先級 / 8 到 30 天為中優先級 / 超過 30 天為低優先級)。這同樣是由 Code 節點而非 LLM 進行判斷。這個工作流程在僅有 4GB 記憶體且未搭載 GPU 的電腦上運行。為了防止記憶體不足(OOM),我設定了以下 Ollama 環境變數:
OLLAMA_NUM_CTX=2048 OLLAMA_FLASH_ATTENTION=1 OLLAMA_KV_CACHE_TYPE=q8_0 OLLAMA_NUM_PARALLEL=1 OLLAMA_KEEP_ALIVE=0 OLLAMA_MAX_LOADED_MODELS=1。其中最後兩個設定特別重要。當請求完成時,模型會立即從記憶體中釋放,這樣可以避免在連續執行時記憶體不斷累積。
工作流程的 JSON 檔案將會貼在下方的回覆中。歡迎大家複製(Fork)並嘗試使用。