Dépannage d'Agent Platform Memory Bank

Ce document explique comment résoudre les problèmes courants liés à l'utilisation d'Agent Platform Memory Bank sur Agent Platform. Il fournit des étapes de dépannage pour les cas où aucun souvenir n'est généré et explique comment vérifier que l'opération est terminée.

Aucun souvenir n'a été généré

Le processus de génération de souvenirs comprend une étape cruciale : déterminer si les informations du contenu source sont suffisamment pertinentes pour être conservées. Une réponse vide indique que le processus s'est exécuté avec succès, mais qu'aucune information ne répondait aux critères de sauvegarde. Si vous vous attendiez à ce que des souvenirs soient générés, ce guide peut vous aider à identifier une erreur ou une mauvaise configuration potentielle.

Pour résoudre les problèmes de génération de souvenirs, procédez comme suit :

Vérifier si la génération de souvenirs a été déclenchée

Tout d'abord, vérifiez que le processus de génération de la mémoire a bien été lancé. La génération de mémoire est initiée en appelant GenerateMemories(client.agent_engines.memories.generate(...)).

Si vous utilisez VertexAiMemoryBankService de l'ADK, la génération de mémoire n'est pas déclenchée automatiquement. Vous devez vous assurer que votre agent ou application a explicitement appelé la méthode add_session_to_memory pour déclencher le processus.

La méthode add_session_to_memory prend un objet Session comme entrée et utilise les événements de la session comme source de données pour la génération de la mémoire. La méthode n'appelle votre instance Memory Bank que si des événements sont renseignés dans l'objet de session. Si votre application ou agent ADK appelle add_session_to_memory, mais que la génération de la mémoire n'a pas été déclenchée, les événements de l'objet Session peuvent ne pas être renseignés. Cela est possible même si vous avez interagi avec la session, en particulier si vous utilisez adk.Runner. Pour résoudre ce problème, récupérez la session et ses événements dans l'environnement où vous appelez add_session_to_memory :

session = await session_service.get_session(
    app_name=app_name,
    user_id=user_id,
    session_id=session.id
)
# Confirm that events are populated.
print(session.events)
memory_service.add_session_to_memory(session)

Vérifier que le LRO de génération de la mémoire est terminé

La génération de souvenirs est une opération de longue durée qui peut prendre quelques secondes. La latence exacte dépend de la longueur de la conversation d'entrée et de la complexité des informations traitées.

Lorsque vous utilisez le SDK Agent Engine, la génération de la mémoire est une opération de blocage par défaut. Ainsi, client.generate_memories(...) bloque l'exécution de votre code jusqu'à ce que le LRO de génération de la mémoire soit terminé.

Lorsque vous utilisez VertexAiMemoryBankService de l'ADK, add_session_to_memory est une opération non bloquante. Elle ne déclenche que la génération de la mémoire et n'attend pas la fin de l'opération de longue durée.

Rechercher les erreurs dans la réponse de l'opération

La réponse LRO peut contenir un message d'erreur indiquant que la génération de mémoire a échoué. Exemple :

RuntimeError: Failed to generate memory: {'code': 3, 'message': 'Failed to extract memories: Please use a valid role: user, model.'}

Voici quelques erreurs courantes :

  • Erreurs de ressources épuisées pour Gemini lorsque vous utilisez le paiement à l'utilisation. Avec le quota partagé dynamique, il n'y a pas de limites de quota prédéfinies pour votre utilisation. Pour garantir une haute disponibilité pour Memory Bank et obtenir des niveaux de service prévisibles pour vos charges de travail de production, consultez Débit provisionné.

  • Données sources non valides, par exemple si vous utilisez des rôles autres que model et user dans votre Content.

Déterminer si la conversation était pertinente

Si le processus a été déclenché, s'est terminé avec succès et n'a produit aucune erreur, il est probable que la Memory Bank ait déterminé qu'aucune information de la conversation source n'était suffisamment pertinente pour être conservée.

Memory Bank utilise des thèmes de mémoire pour identifier les informations pertinentes. Si le contenu de votre conversation ne correspond à aucun thème configuré, aucun souvenir n'est généré.

Si vous pensez que des informations auraient dû être conservées, vous pouvez personnaliser la configuration de votre instance Memory Bank pour mieux répondre à vos attentes.

La configuration des thèmes de mémoire vous permet de définir les informations à conserver. Configurer des exemples few-shot aide votre instance Memory Bank à s'adapter à vos attentes en lui apprenant les nuances des informations à conserver et la façon de les formuler. Vous pouvez personnaliser votre Memory Bank en deux étapes : en indiquant et en montrant. Les thèmes de mémoire indiquent à la Memory Bank quelles informations conserver. Les exemples montrent à la Memory Bank quel type d'informations doit entraîner une mémoire spécifique, ce qui l'aide à apprendre les modèles, les nuances et les expressions que vous attendez qu'elle comprenne.