# ADK 2.0の便利だけど知られていない機能
🌍 エージェントが「先週の会話の内容」を覚えていてくれたら、もっと自然なやり取りができると思いませんか?
ADK 2.0のメモリ機能は、セッションを超えた長期的な知識をエージェントに提供するための仕組みです。過去の会話や学習した情報を記憶し、必要に応じて呼び出すことができます。
📌 タイトル:メモリ
🔗 URL:
🧩 概要
メモリはStateとは異なり、セッション横断の長期的な知識を管理します。3つのメモリサービス実装が用意されています。InMemoryMemoryServiceは開発・テスト用のインメモリ実装、VertexAiMemoryBankServiceはセマンティック検索ベースの本番向け実装、VertexAiRagMemoryServiceはベクトルベースのRAG実装です。メモリの取得にはPreloadMemory(セッション開始時に自動ロード)とLoadMemory(オンデマンドでロード)の2つのビルトインツールが用意されており、プログラムからはtool_context.search_memory()でアクセスできます。
🛠 使い方
メモリサービスを設定し、エージェントにメモリツールを組み込みます。
```python
from google.adk.memory import InMemoryMemoryService
from import PreloadMemory, LoadMemory
# 開発用:インメモリ実装
memory_service = InMemoryMemoryService()
# エージェントにメモリツールを追加
agent = Agent(
name="assistant",
tools=[PreloadMemory(), LoadMemory()],
...
)
# Runnerにメモリサービスを設定
runner = Runner(
agent=agent,
memory_service=memory_service,
...
)
```
ツール内からプログラム的にメモリを検索する場合は以下のようにします。
```python
def my_tool(query: str, tool_context: ToolContext) -> str:
results = tool_context.search_memory(query="過去の会話")
return str(results)
```
複数のメモリサービスを組み合わせる場合は、カスタムツールを作成して統合できます。
🏗 本番システムへの組み込み方
・開発時はInMemoryMemoryServiceで素早くプロトタイプし、本番ではVertexAI系に切り替える
・PreloadMemoryで頻繁に必要な情報を自動ロードし、レスポンス品質を向上させる
・メモリに保存するデータの範囲を適切に設計し、不要なデータの蓄積を防ぐ
・カスタムツールで複数のメモリソースを統合し、包括的な知識ベースを構築する
💡 ユースケース
🧠 過去の会話履歴をもとに、ユーザーの好みに合わせた応答を生成
📚 プロジェクトの過去の議論や決定事項を長期記憶として保持
🔍 セマンティック検索で関連する過去のやり取りを自動的に取得
🤝 複数のエージェント間で共有知識ベースとしてメモリを活用
⚠️ 注意点
InMemoryMemoryServiceはプロセス終了時にデータが失われるため、本番環境では使用しないでください。VertexAI系のサービスはGCPのセットアップが必要です。また、メモリに保存されるデータ量が増えると検索のレイテンシに影響するため、適切なデータ管理戦略を検討してください。
✨ メモリ機能により、エージェントはセッションを超えた文脈を持つことができます。長期的なユーザー体験の向上に大きく貢献する機能です。
#
ADK# #
AIAgent#