# ADKの便利で実践的な使い方
セッションを超えた「長期記憶」を実現するMemory機能。過去の会話から学び、ユーザーを深く理解するエージェントを作りましょう🧠
📌 **タイトル**: Memory
🔗 **URL**:
## 🧩 概要
Memoryは、セッションを横断して検索可能な長期知識を管理する機能です。Stateが「今の会話」のデータを保持するのに対し、Memoryは「過去の会話から得た知識」を蓄積し、自然言語で検索できます。
主要なAPIは以下の2つです。
- `add_session_to_memory` / `add_events_to_memory`: セッションやイベントの内容をメモリに追加
- `search_memory`: 自然言語クエリでメモリを検索
バックエンドにはChromaなどのベクトルDBを使用でき、RAG(Retrieval-Augmented Generation)パターンでエージェントの応答品質を向上させます。
## 🛠 使い方
`google.adk.memory` から `InMemoryMemoryService` をインポートしてインスタンス化します。セッション終了時に `await memory_service.add_session_to_memory(session)` でセッション内容をメモリに追加します。検索時は `await memory_service.search_memory(app_name=..., user_id=..., query="以前のネットワーク接続の問題")` のように自然言語クエリを渡します。返されたresultsの各 `memory` オブジェクトの `memory.content` から、過去の関連する会話内容を取得してエージェントの文脈に活用できます。
## 🏗 実践的な使い方
**カスタマーサポートでの活用:**
1. ユーザーが「ネットワークがまた繋がらない」と問い合わせ
2. Memoryを「ネットワーク接続の問題」で検索
3. 「前回(3日前)も同じ問題で問い合わせがあり、ルーターの再起動で解決しました」という情報を取得
4. エージェントが「前回の問題は解決しましたか?同じ症状でしたらルーターの再起動をお試しください」と提案
過去の対応履歴を踏まえた、パーソナライズされたサポートが実現します。
**学習支援エージェント:**
1. 「微分がわからない」とユーザーが相談
2. Memoryを検索し、「このユーザーは視覚的な説明を好む」「前回は具体例から理解した」という知識を取得
3. グラフを使った具体例ベースの説明を提供
## 💡 ユースケース
- 🎧 カスタマーサポート: 過去の問い合わせ履歴を踏まえた対応。「前回の問題は解決しましたか?」
- 📚 学習支援: ユーザーの学習スタイルや理解度を記憶し、最適な教え方を選択
- 🏥 健康管理: 過去の相談履歴から傾向を把握し、継続的なアドバイスを提供
- 🛒 パーソナルショッパー: 購買履歴や好みを記憶し、的確な商品提案
## ⚠️ 注意点
- メモリに個人情報を保存する場合、プライバシーポリシーとデータ保護規制への準拠が必要です
- ベクトルDBの検索精度はエンベディングモデルの品質に依存します。適切なモデルを選択してください
- メモリの量が増えると検索コストも増加します。定期的な整理やTTL(有効期限)の設定を検討しましょう
- `InMemoryMemoryService` はプロセス再起動でデータが消えます。本番ではChromaなどの永続化バックエンドを使用してください
✨ Memory機能でエージェントに長期記憶を持たせれば、ユーザーとの関係が深まり、回を重ねるほど賢くなるエージェントが実現します!
#
ADK# #
AIAgent#