第三章:AIに長期記憶とタスク委任能力を付与する (Memory & Delegation)
前章では、AgentにGoogle検索とウェブスクレイピングの武器を装備させました。この時点でAgentは優秀なインターンのように、資料を探すことができます。 しかし、複雑なビジネスプロジェクトでは、単一のAgentが単独で作業するだけでは不十分です。
通常、「マネージャー (Manager)」を設計し、2人の「ワーカー (Worker)」を組み合わせます。 この時、2つの大きな技術的課題が生じます:
- 彼らは以前の会話を「記憶」できるか? (マネージャーが朝に質問した内容を、午後にワーカーが再度スクレイピングする必要があるか?)
- マネージャーはタスクを「委任 (Delegate)」できるか? (上司がマネージャーに調査を依頼した時、マネージャーが自分で調査するのではなく)
これこそがCrewAIフレームワークが業界をリードする最も強力なコア機能です:Memory (記憶システム) と Delegation (委任メカニズム)。
🎯 本章の目標
- Crewインスタンスで1行のコードでMemoryシステムを有効にする方法を学ぶ
- CrewAIの背後にあるShort-term (短期)、Long-term (長期)、Entity (エンティティ)記憶の概念を理解する
- 上級Agentがタスクを分割し、下位Agentに割り当てる協働モードを実装する
🧠 ステップ1:AIの多層記憶システムを起動する (Memory)
あなたが上司で、昨日秘書に「TSMC 2026年財務報告」を調べさせたと想像してください。 今日「あの財務報告の要点は?」と尋ねた時、彼女に記憶がなければ、再びコンピュータを開き、Googleで検索し、100ページの報告書を読み直すでしょう。 実際のプログラミング世界では、これは追加のAPIトークン費用と10分の待ち時間を意味します!
CrewAIでは、複雑なベクターデータベース (Vector DB)を学ぶ必要もなく、チーム作成時にスイッチを入れるだけで記憶システムを有効にできます:
🔥【Vibe Prompt 実践呪文】
私はCrewAIを使用してCrewインスタンスを作成しています。Memory機能を有効にする方法を教えてください。1. Crew作成時にmemory=Trueを追加する短いコード例を示してください2. Memoryを有効にするにはOpenAIのEmbeddingモデルが必要と聞きました。必要な環境変数を教えてください3. CrewAI内部で自動的に動作する3種類の記憶(短期、長期、エンティティ)を繁体字中国語で説明してください
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 (長期記憶): 異なる実行サイクルを超えて、過去のタスクの成功・失敗経験を記憶できます。長期運用のカスタマーサービスボットに非常に重要です!
🗣️ ステップ2:マネージャーとワーカーのタスク委任 (Delegation)
正常に機能する会社では、マネージャーは通常自分でGoogle検索しません。マネージャーの役割は「上司の要求を理解し、タスクを分解し、研究者に割り当て、最後に研究者の報告を統合して上司に提出する」ことです。 これが Delegation (タスク委任) の真髄です。
CrewAIでこれを実現するには、特定のマネージャーAgentにallow_delegation=Trueの権限を与え、ワーカーの委任を禁止する必要があります!
🔥【Vibe Prompt 実践呪文】
CrewAIでマネージャーとワーカーの関係を実装する必要があります。1. allow_delegation=Trueを設定したManager Agent(プロジェクトマネージャー)を作成し、ツールは与えない2. allow_delegation=Falseを設定したJunior Researcher Agent(初級研究者)を作成し、検索ツール(SerperDevTool)を与える3. Managerに割り当てるTaskを作成し、descriptionで「このレポートを完成させる必要があるが、自分で資料を探す必要はなく、問題をJunior Researcherに委任できる」と指示する
コードは次のようになります:
# 👨💼 上司/マネージャー (委任権限あり、ツールなし)
manager = Agent(
role='厳格なプロジェクトマネージャー',
goal='市場調査レポートを完璧に作成し、作業を適切に分配する',
backstory='あなたは厳格なマネージャーで、自分で作業することはなく、複雑な問題を分解して部下に委任するのが得意です。',
allow_delegation=True # 委任権限を有効化!
)
# 👨💻 ワーカー (作業のみ可能、委任不可、検索ツール所持)
junior_researcher = Agent(
role='初級研究者',
goal='迅速かつ正確にインターネットで資料を検索しまとめる',
backstory='あなたは勤勉なインターンで、マネージャーが指示したことをGoogleで検索します。',
allow_delegation=False,
tools=[search_tool] # インターネット検索可能
)
このCrewを実行すると、ターミナルのログに印象的な「職場会話」が表示されます:
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に自動的に帳簿を確認させ財務報告書を生成させる!