Agent Platform メモリバンク

Agent Platform メモリバンクを使用すると、ユーザーとエージェントの会話に基づいて長期記憶を動的に生成できます。これらの記憶は、複数のセッションにわたって保持されるパーソナライズされた情報であり、エージェントはコンテキストと継続性に合わせて応答を適応させ、パーソナライズできます。

機能

メモリバンクを使用すると、記憶を管理して、エージェントがユーザーとやり取りする方法をパーソナライズし、コンテキスト ウィンドウを管理できます。メモリバンクは、スコープごとに分離された記憶のコレクションを維持します。各記憶は、エージェントが利用できるコンテキストを拡張するために使用できる、独立した自己完結型の情報です。次に例を示します。

{
  "name": "projects/.../locations/.../reasoningEngines/.../memories/...",
  "scope": {
    "agent_name": "My agent",
    "user": "my user ID"
  },
  "fact": "I use Memory Bank to manage my memories."
}

メモリバンク には次の機能があります。

ユースケース

Memory Bank を使用すると、ステートレスなエージェントのやり取りを、エージェントが時間とともに記憶、学習、適応するステートフルなコンテキスト対応のエクスペリエンスに変換できます。Memory Bank は、次の要件を満たすアプリケーションに最適です。

  • 長期的なパーソナライズ: 個々のユーザーに合わせてカスタマイズされたエクスペリエンスを構築します。Memory Bank は、記憶を特定の ID にスコープ設定することで、エージェントが複数のセッションにわたってユーザーの好み、履歴、重要な詳細を記憶できるようにします。

    • 例: ユーザーの過去のサポート チケットや商品の好みに関する重要な情報を記憶し、再度質問する必要のないカスタマー サービス エージェント。
  • LLM による知識の抽出: 手動操作なしで、会話や マルチモーダル コンテンツから最も重要な情報を自動的に 識別して保持する必要がある場合に使用します。

    • 例: 一連の技術論文を読み、主な調査結果、方法論、結論の統合された記憶を構築する研究エージェント。
  • 動的で進化するコンテキスト: 静的でない知識ソースが必要な場合は、メモリバンクを使用します。メモリバンクは、エージェントからの新しい情報を継続的に統合し、新しいデータが利用可能になると、保存された記憶を改良して更新するように設計されています。これにより、エージェントが依存するコンテキストが常に最新かつ正確になります。RAG には静的な外部ナレッジベースがありますが、メモリバンクはエージェントから提供されるコンテキストに基づいて進化できます。

使用例

Agent Platform メモリバンクのコンセプトの概要

Agent Platform Sessions とともにメモリバンクを使用すると、次のプロセスで保存されたセッションから記憶を生成できます。

  1. (セッション)CreateSession: 会話の開始時に新しいセッションを作成します。エージェントが使用する会話履歴は、このセッションに限定されます。セッションには、ユーザーとエージェント間のやり取りのメッセージとアクション(SessionEvents)の時系列順のシーケンスが含まれます。すべてのセッションにユーザー ID が必要です。このセッションで抽出されたメモリ(GenerateMemories を参照)はこのユーザーにマッピングされます。

  2. (セッション)AppendEvent: ユーザーがエージェントとやり取りすると、イベント (ユーザー メッセージ、エージェントの応答、ツール アクションなど)が セッションにアップロードされます。イベントは会話履歴を保持し、記憶の生成に使用できる会話の記録を作成します。

  3. (セッション)ListEvents: ユーザーがエージェントとやり取りすると、エージェントは 会話履歴を取得します。

  4. (メモリーバンク) 記憶を生成または作成する:

    • GenerateMemories: エージェントは会話履歴を使用してメモリを生成するトリガーを、指定された間隔(セッションの終了時やターンの終了時など)で起動できます。ユーザーに関する事実が会話履歴から自動的に抽出され、現在または将来のセッションで使用できるようになります。

    • CreateMemory: エージェントはメモリをメモリバンクに直接書き込むことができます。たとえば、エージェントはメモリを書き込むタイミングや保存する情報を決定できます(メモリをツールとして使用)。エージェントが抽出するファクトをより詳細に制御する場合は、CreateMemory を使用します。

  5. (メモリバンク)RetrieveMemories: ユーザーがエージェントとやり取りすると、エージェントはそのユーザーについて保存された記憶を取得できます。すべての記憶を取得することも(単純な取得)、現在の会話に最も関連性の高い記憶のみを取得することもできます(類似性検索による取得)。 その後、取得した思い出をプロンプトに挿入できます。

クイックスタート

次のクイックスタートを使用してメモリバンクを使ってみましょう。

  • REST API を使用したクイックスタート: REST API クイックスタートに沿って、 セッションと メモリバンクに API 呼び出しを直接行います。

  • Agent Development Kit (ADK)を使用したクイックスタート: ADK エージェントにセッションと メモリバンク への呼び出しを オーケストレートする場合は、 Agent Development Kit(ADK)のクイックスタートに沿って操作します。

プロンプト インジェクションのセキュリティ リスク

Agent Platform の責任の共有で説明されているセキュリティ上の責任に加えて、長期記憶を使用する際にエージェントに影響を与える可能性のあるプロンプト インジェクションとメモリ ポイズニングのリスクを考慮してください。メモリ ポイズニングは、誤った情報がメモリバンクに保存されたときに発生します。エージェントは、その後のセッションでこの誤った情報や悪意のある情報に基づいて動作する可能性があります。

メモリ ポイズニングのリスクを軽減するには、次の手順を実施します。

  • Model Armor: Model Armorを使用して、メモリバンクに送信されるプロンプトやエージェントから送信されるプロンプトを検査します。

  • 敵対的テスト: 攻撃をシミュレートして、プロンプト インジェクションの脆弱性について LLM アプリケーションを事前にテストします。これは一般に「レッドチーム」と呼ばれます。

  • サンドボックス実行: エージェントが外部システムや重要なシステムを実行または操作できる場合、これらのアクションは厳格なアクセス制御と人間によるレビューが行われるサンドボックス環境で実行する必要があります。

詳細については、Google のセキュア AI エージェントに対するアプローチをご覧ください

次のステップ

クイックスタート

Memory Bank API を使ってみて、長期記憶を管理しましょう。

クイックスタート

Agent Development Kit(ADK)を使ってみましょう。

ガイド

メモリバンクの設定方法を確認する。