

# インサイトの保存と取得
<a name="long-term-saving-and-retrieving-insights"></a>

少なくとも 1 つの長期メモリ戦略で AgentCore Memory を設定し、戦略が ACTIVE になると、サービスは自動的に会話データの処理を開始し、インサイトを抽出して保存します。このプロセスには、未加工の会話を保存し、処理後に構造化されたインサイトを取得するという 2 つの異なるステップが含まれます。

## ステップ 1: 会話イベントを保存して抽出をトリガーする
<a name="long-term-step-1-save-conversational-events"></a>

オペレーションを使用して会話データを短期メモリに保存すると、長期メモリプロセス全体がトリガーされます`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: 抽出されたインサイトを取得する
<a name="long-term-step-2-retrieve-extracted-insights"></a>

長期記憶の抽出と統合は、バックグラウンドで実行される**非同期プロセス**です。新しい会話からのインサイトが取得可能になるまでに 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.
```