iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
生成式 AI

打造基於 MCP 協議與 n8n 工作流的會議處理 Agent系列 第 17

Day 17 任務鏈精煉 — 精準配對與獨立期限解析

  • 分享至 

  • xImage
  •  

昨天我成功完成了將龐大的「巨石應用」節點拆分為三個職責分明的 AI 任務鏈,讓系統的整體架構變得更加模組化也更容易維護。

今天的目標是在這個基礎上,進一步將系統的智慧化程度往「精準」的方向推進。

今天的目標與挑戰

  • 在「獲取參與者」節點中,移除舊的全體配對邏輯,改為精準配對 Notion User ID
  • 在「提取結構化任務」節點中,接收 JSON 結果後,遍歷陣列對每個任務獨立調用日期解析功能
  • 將解析後的標準化日期整合回每個任務的資料結構中
  • 確保在加入這些新邏輯後,整體工作流程依然能穩定、順暢地執行

Step 1:優化「獲取參與者」節點的配對邏輯

1-1 移除不精準的全員標記策略

在先前的版本中,系統有時會將資料庫中所有的成員都標記為參與者,這會導致任務指派的資訊過於泛濫,不夠精準。因此,我決定在「獲取參與者」節點中徹底移除這種策略。新的邏輯將嚴格遵守 AI 的判斷結果:

  • 只針對 AI 從逐字稿中識別出來的參與者名稱進行後續處理。
  • 利用「格式化成員列表」節點提供的完整成員資料(包含姓名與暱稱),進行一對一的精準配對

1-2 強化 Notion User ID 配對函式

為了實現精準配對,我強化了 matchParticipantsToNotionIds 這個函式,它會接收 AI 辨識出的參與者姓名陣列,然後遍歷這個陣列,為每個名字在我們的成員資料庫中尋找對應的 Notion User ID。

這個函式支援了正名暱稱兩種配對方式,大幅提高了配對的成功率與準確性。

// 將參與者姓名對應到 Notion User ID
function matchParticipantsToNotionIds(participants, memberData) {
  const participantIds = [];
  participants.forEach(participantName => {
    // 尋找配對的成員,支援正名和暱稱比對
    const matchedMember = memberData.find(member => {
      // 條件為成員姓名須完全相符或參與者名稱出現在該成員的暱稱清單中
      return member.name === participantName || (member.nicknames && member.nicknames.includes(participantName));
    });

    // 如果找到配對成員且該成員有 Notion ID,就加入清單
    if (matchedMember && matchedMember.notion_user_id) {
      participantIds.push(matchedMember.notion_user_id);
    }
  });
  return participantIds;
}

Step 2:在「提取結構化任務」節點中新增獨立期限解析

在昨天的架構中,期限解析是在最後的步驟中進行的,這表示它只能提取一個最晚的期限。為了實現讓每個任務都有自己獨立的截止日期,我對「提取結構化任務」節點的邏輯進行了升級。

2-1 迭代處理每一個任務

在 AI 透過 extractStructuredTasks 函式回傳結構化的任務清單(tasks 陣列)後,我不再直接將它傳遞給下一步,而是先用一個迴圈來遍歷這個陣列。

2-2 為每個任務單獨調用日期解析

在迴圈裡會為每一個任務單獨調用日期解析的功能,簡單來說就是為每個任務都指派一位「時間解析專家」,它會專注於該任務的 time_expression(原始時間描述),並且將其轉換為標準的 YYYY-MM-DD 格式。

2-3 將解析結果回寫到任務資料中

當日期解析完成後再將解析出的標準化日期,作為一個新的屬性,像是 deadline_date,新增回該任務的物件中。這樣一來每個任務物件都同時擁有了 original_time_expressiondeadline_date 這兩個欄位,讓資料結構變得更加完整。


Step 3:整合新邏輯並進行測試驗證

完成以上的兩大強化後,我將配對好的參與者 Notion ID 陣列,以及處理完獨立期限的任務清單,送入後續的流程裡。

我使用了之前準備的音訊檔案進行進行測試,結果驗證了

  • 參與者配對準確:只有在音訊檔中被明確提及的成員,才會被成功配對並標記
  • 多期限解析成功:每個任務都成功解析出各自對應的截止日期,並正確寫入 Notion
  • 資料流穩定:整個工作流程在增加了新邏輯後,依然能夠順暢執行

今天的成果總結

完成項目

  • 成功將參與者辨識邏輯,從全體標記升級為與 Notion User ID 做精準配對
  • 在「提取結構化任務」節點中,實現了對每個任務進行獨立的期限解析,大幅提升了時間處理的能力
  • 強化了任務的資料結構,使其同時包含標準化日期與原始時間描述
  • 完成了新舊邏輯的整合與測試,確保了整體工作流程的穩定性

心得

如果說昨天的架構重構是「搭骨架」,那麼今天的進度就是對這個骨架進行「精雕細琢」。😁

透過參與者的精準配對,我解決了過去任務指派可能不夠準確的問題;而透過獨立的期限解析,我讓系統的時間管理能力從「單一期限」進化到了「多重期限」,這對於真實際會發生的情況來說,是一個非常大的進步。

每一步的最佳化都讓這個 AI 會議助理變得更加可靠與實用。看著系統從一個模糊的雛形,逐漸變得清晰、精準,這種感覺真的很有成就感。

🎯 明天計劃

將 AI 任務鏈與所有 Code 節點進行測試,並建立包含多種場景的測試案例,對系統進行全面驗證與微調,目標是讓摘要、參與者、任務、指派、期限等項目的準確率達到 90% 以上!


上一篇
Day 16 架構重構 — 導入 AI 任務鏈
系列文
打造基於 MCP 協議與 n8n 工作流的會議處理 Agent17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言