View a markdown version of this page

長期メモリにコンテンツを取り込む - Amazon Bedrock AgentCore

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

長期メモリにコンテンツを取り込む

IngestData を使用して、コンテンツを短期メモリイベントとして保持することなく、長期メモリ抽出のために直接送信します。

IngestData を使用するタイミング

コンテンツを長期メモリに抽出IngestDataする必要があるが、未加工のインタラクションを取得可能なイベントとして保持する必要がない場合に使用します。例えば、次のようになります。

  • 抽出されたメモリレコードのみが必要で、逐語的な操作は必要ありません。

  • 一度も読み返さないイベントを保持するという短期的なストレージオーバーヘッドを回避したいと考えています。

  • アプリケーションはすでに raw インタラクションを保持しているため、そこから抽出された長期レコードのみが必要です。

IngestData は短期イベントを保存しないため、送信されたコンテンツを GetEvent、、ListEventsまたは で取得したりListSessions、分岐で再編成したりすることはできません。

注記

raw インタラクションを短期イベントとして保持するには、代わりに CreateEvent を使用します。

IngestData の仕組み

リクエストが成功すると、コンテンツが承諾されたことが確認されます。コンテンツが処理されると、長期メモリレコードが使用可能になります。

処理が完了したら、RetrieveMemoryRecords、、または を使用して、結果の長期メモリレコードを取得します。GetMemoryRecordこれはListMemoryRecords、他の長期メモリレコードと同じオペレーションです。

IngestData は 2 つのペイロードタイプをサポートしています。

会話型

ロール ( USERや などASSISTANT) とテキストコンテンツを含む会話メッセージ。

JSON

動作イベント、アクティビティログ、システムイベントなどの JSON 形式のデータ。

オプションでメタデータをアタッチして、抽出されたレコードを強化できます。詳細については、「長期的な記憶のための構造化メタデータ」を参照してください。

抽出されたレコードは名前空間にスコープされます。詳細については、「名前空間を使用して長期メモリ組織を指定する」を参照してください。

actorId は、エンティティ (エンドユーザーやエージェントなど) を識別し、セッション内のコンテンツをsessionIdグループ化します。同じ actorId、、および 名前空間を共有するコンテンツはsessionId、抽出中に関連コンテキストとして扱われます。

注記

IngestData は、独自のメモリ処理ワークフローを持つ自己管理型戦略を除き、メモリが設定した長期メモリ戦略にコンテンツを供給します。

例

次の の例では、会話コンテンツと非会話コンテンツの両方を取り込みます。

import boto3 from datetime import datetime # Initialize the Boto3 client for data plane operations data_client = boto3.client('bedrock-agentcore', region_name='us-west-2') response = data_client.ingest_data( memoryId='mem-12345abcdef', actorId='customer-123', sessionId='session-456', contentTimestamp=datetime.now(), source={ 'inline': { 'payload': [ { 'conversational': { 'content': {'text': 'I prefer window seats on flights.'}, 'role': 'USER' } }, { 'conversational': { 'content': {'text': "Noted — I'll remember your window seat preference."}, 'role': 'ASSISTANT' } }, { 'json': { 'content': { 'customer_tier': 'gold', 'preferences': {'seat': 'window', 'meal': 'vegetarian'}, 'loyalty_points': 48200 } } } ] } } ) # IngestData is asynchronous; the response echoes the session the content was ingested into. print(f"Ingested content into session: {response['sessionId']}")

取り込みの進行状況を追跡する

リクエストが成功した後に何が起こるかを追跡し、問題を検出するには、次のアプローチを使用します。

抽出結果の検証

取り込み後、メモリレコードは通常、コンテンツサイズと戦略設定に応じて数秒から数分以内に表示されます。抽出が完了したことを確認するには:

抽出の失敗を処理する

抽出が失敗した場合、AgentCore は失敗したジョブをメモリリソースの専用キューに移動します。ListMemoryExtractionJobs を使用して失敗したジョブを表示し、根本原因に対処した後にStartMemoryExtractionJobジョブを再処理します。障害理由コード、修復手順、FailedExtractionCloudWatch メトリクスでプロアクティブモニタリングを設定する方法については、「Redrive failed ingestions」を参照してください。

アプリケーションログとトレースを有効にして処理ライフサイクルをより詳細に可視化するには、AgentCore ランタイム、メモリ、ゲートウェイ、組み込みツール、アイデンティティリソースのオブザーバビリティを有効にする」を参照してください。