第三章:賦予 AI 長期記憶與任務委派能力 (Memory & Delegation)
在上一章,我們給了 Agent 裝備上了 Google 搜尋與網頁爬蟲的武器。這時的 Agent 已經能像一個優秀的實習生一樣,幫你找資料了。 但在複雜的商業真實專案中,只有一個 Agent 單打獨鬥是遠遠不夠的。
我們通常會設計一個「主管 (Manager)」,搭配兩個「基層員工 (Worker)」。 這時會產生兩個巨大的工程挑戰:
- 他們能「記住」之前說過的話嗎? (主管早上問過的問題,下午員工還要重新爬蟲一次嗎?)
- 主管能夠把任務往下「委派 (Delegate)」給基層員工嗎? (而不是老闆叫主管查,主管就自己傻傻去查。)
這正是 CrewAI 框架之所以能在業界稱霸的最強大核心功能:Memory (記憶系統) 與 Delegation (委派機制)。
🎯 本章目標
- 學習如何在 Crew 實例中一行程式碼開啟 Memory 系統。
- 聽懂 CrewAI 背後的 Short-term (短期)、Long-term (長期) 與 Entity (實體) 記憶概念。
- 實作讓高階主管 Agent 主動把任務切碎,並指派給低階 Agent 的協作模式。
🧠 第一步:喚醒 AI 的多層記憶系統 (Memory)
想像你是一個老闆,你昨天叫秘書去查一份「台積電 2026 財報」。 今天你再問她:「那份財報有什麼重點?」,如果她沒有記憶,她就會重頭打開電腦、再去 Google 搜尋一次,然後再讀一次 100 頁的報告。 在真實的程式世界裡,這代表你多花了一次 API Token 的錢,也多等了 10 分鐘!
在 CrewAI 中,要開啟記憶系統,甚至不需要你去學什麼複雜的向量資料庫 (Vector DB),只要在建立團隊時打開開關即可:
🔥【Vibe Prompt 實戰咒語】
我正在使用 CrewAI 建立一個 Crew 實例。請教我如何開啟 Memory 功能。1. 請給我一小段程式碼範例,示範建立 Crew 時加上 memory=True。2. 我聽說開啟 Memory 需要用到 OpenAI 的 Embedding 模型,請告訴我需要確保什麼環境變數存在?3. 請用繁體中文幫我解釋 CrewAI 內部自動運作的三種記憶 (短期、長期、實體) 到底是什麼意思?
AI 會教你修改你原本的 Crew 宣告,並解釋背後的黑魔法:
from crewai import Crew, Process
# 將原本的 Crew 加上 memory=True
crew = Crew(
agents=[manager, researcher, writer],
tasks=[big_project_task],
process=Process.hierarchical, # 階層式管理
memory=True, # 🧠 關鍵:開啟多層次記憶系統!
verbose=True
)
[商業技術觀念補充]:
當你設定 memory=True 時,CrewAI 會在你的電腦背景自動啟動一個小型的資料庫機制 (通常依賴 OpenAI 的 Embeddings 服務)。
- Short-term Memory (短期記憶): Agent 在執行當下這項任務時,會記住它剛剛用工具查了什麼。如果它發現自己要查同樣的東西,它會直接從記憶提取,避免重複打 API。
- Entity Memory (實體記憶): 系統會把討論過程中出現的關鍵人物/公司 (例如 "Elon Musk", "NVIDIA") 抽取出來建立關聯地圖。當你下次提到 "NVIDIA" 時,Agent 會瞬間聯想到前面查過的財報。
- Long-term Memory (長期記憶): 甚至可以跨越不同的執行週期,記住過去任務的成功與失敗經驗,這對於長期維護的客服機器人非常重要!
🗣️ 第二步:主管與員工的任務委派 (Delegation)
一間正常運作的公司裡,經理通常不會自己去 Google 查資料。經理的職責是「理解老闆的需求,把任務拆解,然後丟給下面的研究員去做,最後把研究員的報告統整起來交給老闆」。 這就是 Delegation (任務委派) 的精髓。
要在 CrewAI 中達成這點,我們需要賦予特定的主管 Agent allow_delegation=True 的權限,並禁止基層員工委派!
🔥【Vibe Prompt 實戰咒語】
我需要在 CrewAI 中實作主管與基層員工的關係。1. 建立一個 Manager Agent (專案經理),設定 allow_delegation=True,不給他任何工具。2. 建立一個 Junior Researcher Agent (初階研究員),設定 allow_delegation=False,給他搜尋工具 (SerperDevTool)。3. 建立一個 Task,派給 Manager,並在 description 裡告訴 Manager:「你需要完成這份報告,但你不必自己找資料,你可以把問題交給 Junior Researcher 去找」。
你的程式碼會變成這樣:
# 👨💼 老闆/主管 (具備發包權限,沒有工具)
manager = Agent(
role='嚴格的專案經理',
goal='確保市場調查報告完美產出,並適當分配工作',
backstory='你是一個嚴格的經理,你從不自己動手,你擅長把複雜問題拆解並發包給下屬。',
allow_delegation=True # 開啟委派權限!
)
# 👨💻 基層員工 (只能做事,不能再發包,但手上有搜尋武器)
junior_researcher = Agent(
role='初階研究員',
goal='快速且精準地上網尋找資料並彙整',
backstory='你是一個勤奮的實習生,主管交代什麼你就去 Google 什麼。',
allow_delegation=False,
tools=[search_tool] # 只有他能上網
)
當你執行這個 Crew 時,你會在終端機的 Log 裡看到超震撼的「職場對話」:
Manager Action: Delegate work to co-worker
Manager Action Input: {"coworker": "初階研究員", "task": "幫我去搜尋 2026 最新固態電池突破", "context": "老闆需要撰寫一篇報告,這部分交給你處理"}
然後你會看到 Junior Researcher 默默地接下任務,開始執行 Action: Search the internet,查完之後再回報給 Manager。
✅ 本章小結
加入了 Memory 和 Delegation,你的 Multi-Agent 系統就真正擁有了一間「公司」的雛形。他們不再是一群死板執行指令的腳本,而是一個會互相溝通、分工合作、且有記憶的「虛擬團隊」。
如果能用 AI 取代查資料的實習生,那我們能不能用 AI 來取代負責對帳的財務會計? 在下一章,我們將挑戰把商業價值拉滿:實作 ECPay (綠界金流) 的 Custom Tool,讓你的 AI 幫你自動查帳並產生財務報表!