昨天建立了成員知識庫後,我初步的修改實作了「AI 摘要與任務提取」節點,但處理結果變得不穩定、摘要品質下降、任務指派錯誤,並且無法應對多個不同的任務期限。
今天的目標是專注在透過更準確的 Prompt 設計和程式碼邏輯,來引導並輔助 AI 做出更精準的判斷。
我嘗試讓每個 Prompt 都像一個專注於特定任務的專家角色,我的設計思路大致如下
generateDynamicParticipantPrompt
(參與者辨識專家):這個 Prompt 就是專心從轉錄後的逐字稿中找出「誰在場」,透過成員清單和一些通用詞彙,像是「各位」、「大家」給它參考,幫助它聚焦在比對和辨識上。generateDynamicTaskExtractionPrompt
(結構化任務專家):這是我為了解決任務混亂問題做的主要嘗試,不再讓 AI 回傳格式不定的 Markdown,而是透過這個 Prompt 引導 AI 輸出一個 JSON 陣列。generateDynamicMeetingAnalysisPrompt
(會議分析專家):我設計這個 Prompt 來讓 AI 專注完成會議摘要、判斷會議類型等綜合性任務,希望能提升摘要的品質。我發現單靠強化 Prompt 仍然不夠,AI 的判斷有時還是會出現偏差。因此,我這次花了不少心力與時間😿,在程式碼中建立了後處理的輔助機制,用來檢視、補強 AI 的輸出結果。
我為了解決人名辨識不準確的問題,因此建立了 buildAdvancedNameMappingTable
和 normalizePersonName
這兩個函式。
smartReplaceNamesInText
將逐字稿中的暱稱事先換成全名。normalizePersonName
整理一次 AI 的輸出,確保最終結果的一致性。我為了改善「張冠李戴」的問題,因此建立了 advancedTaskAssignment
函式,也是所設計的第二道防線。
assignee
是空的或無法辨識,就會觸發這個函式。intelligentTaskCategorization
嘗試分析任務描述,給任務貼上「技術」、「設計」等標籤。skillDatabase
(由成員職位和關鍵字推斷而來)中,從實際與會者裡,尋找具備相應技能的成員,同時它還會考慮每個人的工作量(已分配任務數),嘗試找出一個最合適的人選。為了管理這些複雜的 AI 呼叫和後處理邏輯,我對節點的執行流程也進行了調整。
Promise.all
讓一些可以獨立運作的 AI 呼叫並行處理,希望能縮短整體的等待時間,然後在這些初步結果都回傳後,再串行執行後續需要依賴這些結果的步驟。safeJsonParse
函式整合了多種正規表示式和修復邏輯,嘗試從混亂的字串中出找出可用的 JSON 物件。✅ 初步成效
task_list
格式,讓每項任務都能擁有獨立的屬性❌ 尚待改善
我今天透過更詳細的 Prompt 設計和更聰明的程式碼後處理,在一個節點裡面,建立了一套微型的分析流水線,嘗試去「輔導」而不是「命令」AI,讓它能更好地完成任務。
看到 Notion 裡的結果趨於穩定和正確,確實很有成就感,但同時我也意識到,目前的架構已經不太OK了,它現在就是一個功能強大但結構複雜的「巨石應用 (Monolith)」,繼續堆疊功能只會讓它越來越難以維護,也因為這個巨石應用導致我心力憔悴😭。
雖然如此,基於鐵人賽的精神,我可是不會放棄的!
🎯 明天計劃
導入 AI 任務鏈重構架構,將單一 AI 呼叫拆分為三個獨立節點,並為各節點分別設計簡化、目標單一的 Prompt。