Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Ingérer du contenu dans la mémoire à long terme
Permet IngestData de soumettre du contenu directement à des fins d'extraction de mémoire à long terme, sans le conserver en tant qu'événement de mémoire à court terme.
Quand utiliser IngestData
À utiliser IngestData lorsque vous avez besoin d'un contenu distillé dans la mémoire à long terme, mais que vous n'avez pas besoin de conserver l'interaction brute en tant qu'événement récupérable. Par exemple :
-
Vous n'avez besoin que des enregistrements de mémoire extraits, pas de l'interaction mot pour mot.
-
Vous voulez éviter les frais de stockage à court terme liés à la persistance d'un événement que vous ne liriez jamais.
-
Votre application conserve déjà les interactions brutes, vous n'avez donc besoin que des enregistrements à long terme qui en sont extraits.
Comme il IngestData ne stocke pas d'événement de courte durée, le contenu soumis ne peut pas être récupéré à l'aide de GetEvent ListEventsListSessions, ou réorganisé à l'aide de branchements.
Note
Pour conserver l'interaction brute en tant qu'événement à court terme, utilisez CreateEvent plutôt.
Comment IngestData fonctionne
Une demande réussie confirme que votre contenu a été accepté ; les enregistrements de mémoire à long terme qui en résultent sont disponibles une fois le contenu traité.
Une fois le traitement terminé, récupérez les enregistrements de mémoire à long terme qui en résultent en utilisant RetrieveMemoryRecordsListMemoryRecords, ou GetMemoryRecord — les mêmes opérations que celles utilisées pour tout autre enregistrement de mémoire à long terme.
IngestDataprend en charge deux types de charge utile :
- Conversationnel
-
Un message de conversation avec un rôle (par exemple,
USERouASSISTANT) et un contenu textuel. - JSON
-
JSON-formatted des données, telles que des événements comportementaux, des journaux d'activité ou des événements système.
Vous pouvez éventuellement joindre des métadonnées pour enrichir les enregistrements extraits. Pour plus d'informations, consultez la section Métadonnées structurées pour les mémoires à long terme.
Les enregistrements extraits sont limités à un espace de noms. Pour plus d'informations, voir Spécifier l'organisation de la mémoire à long terme avec des espaces de noms.
actorIdIdentifie l'entité (par exemple, un utilisateur final ou un agent) et le contenu sessionId des groupes au sein d'une session. Le contenu partageant le même actorId espace sessionId de noms est traité comme un contexte connexe lors de l'extraction.
Note
IngestDatadiffuse le contenu vers les stratégies de mémoire à long terme configurées de la mémoire, à l'exception des stratégies autogérées, qui disposent de leurs propres flux de travail de traitement de la mémoire.
Exemple
L'exemple suivant ingère à la fois du contenu conversationnel et non conversationnel.
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']}")
Suivez la progression de l'ingestion
Pour suivre ce qui se passe après une demande réussie et détecter les problèmes, utilisez les approches suivantes.
Vérifier les résultats d'extraction
Après l'ingestion, les enregistrements de mémoire apparaissent généralement en quelques secondes à quelques minutes, en fonction de la taille du contenu et de la configuration de la stratégie. Pour confirmer que l'extraction est terminée :
-
Utilisez ListMemoryRecords ou RetrieveMemoryRecords pour vérifier si les enregistrements de mémoire à long terme attendus sont apparus.
-
Configurez un flux Kinesis pour recevoir des notifications en temps réel lorsque des enregistrements de mémoire sont créés. Consultez la section Diffusion en continu des enregistrements de mémoire pour les instructions de configuration.
Gérer les échecs d'extraction
Si l'extraction échoue, AgentCore déplace la tâche échouée vers une file d'attente dédiée pour votre ressource mémoire. ListMemoryExtractionJobsUtilisez-le pour afficher les tâches ayant échoué et StartMemoryExtractionJob pour les relancer après avoir traité la cause première. Pour connaître les codes des raisons des défaillances, les étapes de correction et la manière de configurer une surveillance proactive à l'aide de la FailedExtraction CloudWatch métrique, voir Redrive les ingestions échouées.
Pour activer les journaux et les traces des applications afin d'obtenir une meilleure visibilité sur le cycle de vie des traitements, consultez la section Activation de l'observabilité pour l' AgentCore exécution, la mémoire, la passerelle, les outils intégrés et les ressources d'identité.