インサイトの保存と取得
少なくとも 1 つの長期メモリ戦略で AgentCore Memory を設定し、戦略が ACTIVE になると、サービスは自動的に会話データの処理を開始し、インサイトを抽出して保存します。このプロセスには、未加工の会話を保存し、処理後に構造化されたインサイトを取得するという 2 つの異なるステップが含まれます。
ステップ 1: 会話イベントを保存して抽出をトリガーする
オペレーションを使用して会話データを短期メモリに保存すると、長期メモリプロセス全体がトリガーされますcreate_event。イベントを記録するたびに、分析するアクティブなメモリ戦略用の新しい原材料が提供されます。
重要
メモリ戦略のステータスが になった後に作成されたイベントのみが、長期メモリ抽出のために処理ACTIVEされます。戦略が追加されアクティブ化される前に保存された会話は含まれません。
次の例は、マルチターン会話をメモリリソースに保存する方法を示しています。
例 会話を一連のイベントとして保存する
#'memory_id' is the ID of your memory resource with an active summary strategy. from bedrock_agentcore.memory.session import MemorySessionManager from bedrock_agentcore.memory.constants import ConversationalMessage, MessageRole import time actor_id = "User84" session_id = "OrderSupportSession1" # Create session manager session_manager = MemorySessionManager( memory_id=memory_id, region_name="us-west-2" ) # Create a session session = session_manager.create_memory_session( actor_id=actor_id, session_id=session_id ) print("Capturing conversational events...") # Add all conversation turns session.add_turns( messages=[ ConversationalMessage("Hi, I'm having trouble with my order #12345", MessageRole.USER), ConversationalMessage("I am sorry to hear that. Let me look up your order.", MessageRole.ASSISTANT), ConversationalMessage("lookup_order(order_id='12345')", MessageRole.TOOL), ConversationalMessage("I see your order was shipped 3 days ago. What specific issue are you experiencing?", MessageRole.ASSISTANT), ConversationalMessage("The package arrived damaged", MessageRole.USER), ] ) print("Conversation turns added successfully!")
ステップ 2: 抽出されたインサイトを取得する
長期記憶の抽出と統合は、バックグラウンドで実行される非同期プロセスです。新しい会話からのインサイトが取得可能になるまでに 1 分以上かかる場合があります。アプリケーションロジックはこの遅延を考慮する必要があります。
構造化されたインサイトを取得するには、 retrieve_memory_recordsオペレーションを使用します。このオペレーションは、長期メモリストアに対して強力なセマンティック検索を実行します。戦略でnamespace定義した正しい と、探searchQueryしている情報を説明する を指定する必要があります。
次の例は、処理を待ってから、前のステップで保存した会話の概要を取得する方法を示しています。
例 セッション概要を待機して取得する
# 'session' is an existing session object that you created when adding the coversation turns # session should be created on a memory resource with an active summary strategy. # --- Example 1: Retrieve the user's shipping issues under a specific namespace --- memories = session.search_long_term_memories( namespace=f"/summaries/{actor_id}/{session_id}/", query="What problem did the user report with their order?", top_k=5 ) # --- Example 2: Retrieve the user's shipping issues under a particular namespace hierarchy (e.g.: shipping issues across multiple sessions) --- memories = session.search_long_term_memories( namespace_path=f"/summaries/{actor_id}/", query="What problem did the user report with their order?", top_k=5 ) print(f"Found {len(memories)} memories:") for memory_record in memories: print(f"Retrieved Issue Detail: {memory_record}") print("--------------------------------------------------------------------") # Example Output: # Retrieved Issue Detail: The user reported that their package for order #12345 arrived damaged.