原理可參考這篇綜論: How Agents for LLM Perform Task Planning。大型語言模型的代理如何進行任務規劃
🧠 語意記憶(Semantic Memory)
語意記憶,在人類與 AI agent 中,指的是對特定事實與概念的長期記憶。
在人類身上,這可能包括在學校學到的知識、概念間的關聯等。而對於 AI agent 而言,語意記憶常用於個人化應用,例如記住使用者過去提供的事實或偏好,以便產生更相關的回應。
🔸 注意:不要把語意記憶(semantic memory)與「語意搜尋(semantic search)」混淆。
- 語意記憶是心理學術語,指儲存知識與事實。
- 語意搜尋則是一種透過「語意(意義)」找出相似內容的技術,常基於嵌入向量(embeddings)。
模式 | 👤 Profile 模式 | 📄 Collection 模式 |
---|---|---|
圖示 | ||
概念 | 一份持續更新的 JSON 文件,描述使用者或實體的屬性 | 多份小型文件,每筆文件代表一個具體記憶片段 |
儲存格式 | 單一 Profile(如 JSON){"name": "Alex", "language_preference": "Traditional Chinese"} |
多個記憶文件,獨立產生與擴充 |
優點 | - 結構完整 - 易於掌握全貌 |
- 易於更新 - 範圍小,產生簡單 - 對於新知識 的「召回率(recall)較高 |
更新方式 | - 傳入舊 profile - 模型輸出新 profile 或 JSON Patch |
- 模型新增、刪除、更新文件 |
挑戰 | - Profile 越大越難維護 - 結構易錯 - 需 schema 驗證 |
- 需處理去重/合併問題 - 記憶查找成本高 - 缺乏整體脈絡 |
適用工具 | JSON schema validation | Trustcall、LangSmith |
先建立基本的 Email Assistant架構,紅、綠、藍色的字體代表Memory的額外設計。
根據 Lesson 2_Baseline Email Assistant.ipynb
中的段落 ## Define the first part of the agent - triage.
,以下是詳細的執行流程和參數的 mermaid 流程圖:
triage_router
triage_router
的詳細工作流程:
根據程式碼段落 ## Main agent, define tools
,以下是詳細的執行流程和參數的 mermaid 流程圖:
mermaid 流程圖:
write_email
工具。
to
(收件人)、subject
(主題)和 content
(內容)作為輸入參數。schedule_meeting
工具。
attendees
(參加者列表)、subject
(主題)、duration_minutes
(持續時間)和 preferred_day
(首選日期)作為輸入參數。check_calendar_availability
工具。
day
(日期)作為輸入參數。Prompt 名稱 | 差異 | 輸入 | 輸出 |
---|---|---|---|
agent_system_prompt |
基本代理提示,包含基本工具 | {full_name} , {name} , {instructions} |
格式化的系統提示 |
triage_system_prompt |
分類郵件的提示,包含分類規則 | {full_name} , {name} , {user_profile_background} , {triage_no} , {triage_notify} , {triage_email} , {examples} |
格式化的系統提示,包含分類規則和示例 |
triage_user_prompt |
用戶提示,用於分類郵件 | {author} , {to} , {subject} , {email_thread} |
格式化的用戶提示,包含郵件詳細信息 |
Semantic Memory實作:在Response
Agent內加入事實/語意記憶的管理與查找功能(as tool),可以將使用者輪廓資料作為Prompt的一部分
在Response_Agent中加入manage_memory_tool
與create_manage_memory_tool
langmem
的create_manage_memory_tool()
與 create_search_memory_tool()
manage_memory_tool()
create_search_memory_tool()
功能/特性 | manage_memory_tool() |
search_memory_tool() |
---|---|---|
目的 | 儲存使用者資訊、行為或指示 | 搜尋使用者過去的資訊 |
輸入參數 (Parameters) | memory_type , user , data_type , content |
memory_type , user , data_type , query |
輸出 (Output) | 儲存成功訊息或錯誤提示 | 搜尋結果或「無結果」提示 |
應用場景 (Use Case) | 儲存指示、行為偏好、個人化資訊 | 檢索過往郵件、過往指示或互動記錄 |
response_agent
中加入memory toolmemory_tool
還是需要透過InMemoryStore
將儲存的記憶pass給agentagent_system_prompt
與 agent_system_prompt_memory
的差異特點/功能 | agent_system_prompt |
agent_system_prompt_memory |
---|---|---|
額外工具 (Memory Tools) | ❌ 無額外的記憶管理工具。 | ✅ 4 個額外工具: 4. manage_memory("collection") 5. manage_memory("user_profile") 6. search_memory("collection") 7. manage_memory("instructions") |
使用者檔案 (User Profile) | ❌ 未包含 profile (用戶偏好、背景等個人化資訊)。 |
✅ 包含 profile ,用於儲存使用者的背景、喜好與行為資訊。 |