エージェントへのメモリの追加
AIエージェントの構築には、単なるモデル以上のものが必要です。ユーザーが誰であるかを記憶する方法が必要なのです。
AWS Briefing Agentの構築に関するシリーズの中で、私はステートレスなインタラクションからパーソナライズされた体験へと移行する方法を模索しています。
標準的なmicroVMの問題点は、それらがステートレスであることです。セッションが終了すると、環境は破棄されます。これによりデータの漏洩は防げますが、同時にエージェントがすべてを忘れてしまうことも意味します。メモリがなければ、ユーザーはログインするたびに毎回好みを伝え直さなければなりません。
私はこれを、AgentCore MemoryとStrands Agentsを使用して解決しました。
アーキテクチャの仕組みは以下の通りです:
- 短期メモリ:チャット中のコンテキストを維持するために、生のインタラクションを90日間保存します。
- 長期メモリ:会話を永続的な知識に変えるために、2つの特定の戦略を使用します。
- セマンティック戦略:ユーザーが本番環境で使用しているAWSサービスなど、事実に基づいたデータを抽出します。
- ユーザーの好み戦略:サーバーレスツールへの好みなど、スタイルや関心を特定します。
データを安全に保つため、システムは名前空間(namespaces)を使用します。{actorId}変数を使用することで、あるユーザーのデータが別のユーザーのセッションに漏洩しないようにしています。
また、安全な認証のためにAWS Cognitoを統合しました。エージェントはJWTトークンを検証して身元を確認します。検証されると、システムはトークンから一意の 'sub' クレームを抽出します。このIDがactor_idとなり、エージェントはこれを使用して正しいメモリレコードを取得します。
統合はシームレスです。AgentCoreMemorySessionManagerを使用することで、エージェントは自動的に以下の操作を行います:
- 短期メモリから会話履歴をロードする。
- 長期メモリから関連する事実や好みを検索する。
- 回答する前に、そのコンテキストをエージェントの状態に注入する。
その結果、パーソナライズされた感覚を持つエージェントが実現しました。ユーザーが何度も同じことを繰り返すことなく、ユーザーの専門知識レベルや特定のAWSへの関心を理解してくれます。
Source: https://dev.to/aws-heroes/adding-memory-to-the-agent-181k
Optional learning community: https://t.me/GyaanSetuAi