Ce document explique comment résoudre les problèmes courants lors de l'utilisation de la banque de mémoire Vertex AI Agent Engine.
Aucun souvenir n'a été généré
Le processus de génération de mémoire 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 répondant aux critères d'enregistrement n'a été trouvée. 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 le problème de non-génération de souvenirs, suivez ces étapes dans l'ordre :
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 souvenirs a bien été lancé. La génération de mémoire est lancé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.
add_session_to_memory
accepte 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. Elle 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 mémoire n'a pas été déclenchée, il est possible que les événements de l'objet Session
ne soient pas 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 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 saisie et de la complexité des informations traitées.
Lorsque vous utilisez le SDK Agent Engine, la génération de mémoire est une opération de blocage par défaut. Par conséquent, client.generate_memories(...)
bloque l'exécution de votre code jusqu'à ce que l'opération LRO de génération de mémoire soit terminée.
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 la tarification à l'usage. 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
etuser
dans votreContent
.
Déterminer si la conversation a été utile
Si le processus a été déclenché, s'est terminé avec succès et n'a produit aucune erreur, il est probable que la Banque de mémoire 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 des thèmes configurés, 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 sujets 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 la mémoire indiquent à la banque de données de la mémoire quelles informations conserver. Les exemples montrent à la banque de mémoire 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.