En este documento se explica cómo resolver problemas habituales al usar Memory Bank de Vertex AI Agent Engine.
No se han generado recuerdos
El proceso de generación de memoria incluye un paso crucial: determinar si la información del contenido de origen es lo suficientemente significativa como para conservarse. Una respuesta vacía indica que el proceso se ha ejecutado correctamente, pero no se ha encontrado información que cumpla los criterios para guardarse. Si esperabas que se generaran recuerdos, esta guía puede ayudarte a identificar un posible error o una configuración incorrecta.
Para solucionar el problema por el que no se generan recuerdos, sigue estos pasos en orden:
Comprobar si se ha activado la generación de recuerdos
Primero, confirma que el proceso de generación de memoria se haya iniciado. La generación de recuerdos se inicia invocando GenerateMemories
(client.agent_engines.memories.generate(...)
).
Si usas VertexAiMemoryBankService
de ADK, la generación de memoria no se activa automáticamente. Debes asegurarte de que tu agente o aplicación haya llamado explícitamente al método add_session_to_memory
para activar el proceso.
add_session_to_memory
toma un objeto Session
como entrada y usa los eventos de la sesión como fuente de datos para generar la memoria. Solo llama a tu instancia de Memory Bank si hay eventos en el objeto de sesión. Si tu aplicación o agente del ADK invoca add_session_to_memory
, pero no se ha activado la generación de memoria, es posible que no se rellenen los eventos del objeto Session
. Esto es posible aunque hayas interactuado con la sesión, sobre todo si usas adk.Runner
. Para solucionar este problema, obtén la sesión y sus eventos en el entorno en el que invocas 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)
Verificar que se ha completado el LRO de generación de memoria
La generación de memoria es una operación de larga duración (OLD) y puede tardar unos segundos en completarse. La latencia exacta depende de la duración de la conversación de entrada y de la complejidad de la información que se procesa.
Cuando se usa el SDK de Agent Engine, la generación de memoria es una operación de bloqueo de forma predeterminada. Por lo tanto, client.generate_memories(...)
bloquea la ejecución de tu código hasta que se complete la operación de larga duración de generación de memoria.
Cuando se usa VertexAiMemoryBankService
de ADK, add_session_to_memory
es una operación que no bloquea. Solo activa la generación de memoria y no espera a que se complete la operación LRO.
Buscar errores en la respuesta de la operación
La respuesta de LRO puede incluir un mensaje de error similar que indique que no se ha podido generar la memoria. Por ejemplo:
RuntimeError: Failed to generate memory: {'code': 3, 'message': 'Failed to extract memories: Please use a valid role: user, model.'}
Entre los errores habituales se incluyen los siguientes:
Errores de recursos agotados de Gemini cuando usas la modalidad de pago por uso. Con la cuota compartida dinámica (DSQ), no hay límites de cuota predefinidos para tu uso. Para garantizar la alta disponibilidad de Memory Bank y obtener niveles de servicio predecibles para tus cargas de trabajo de producción, consulta Throughput aprovisionado.
Datos de origen no válidos, como usar roles distintos de
model
yuser
en tuContent
.
Determinar si la conversación ha sido útil
Si el proceso se ha activado, se ha completado correctamente y no ha producido ningún error, es probable que Memory Bank haya determinado que ninguna información de la conversación de origen era lo suficientemente significativa como para conservarse.
Memory Bank usa temas de memoria para identificar qué información es significativa. Si el contenido de tu conversación no se ajusta a ninguno de los temas configurados, no se generarán recuerdos.
Si crees que la información debería haberse conservado, puedes personalizar la configuración de tu instancia de Memory Bank para que se ajuste mejor a tus expectativas.
Configurar temas de memoria te permite definir qué información se debe conservar. Configurar ejemplos con pocos ejemplos ayuda a tu instancia de Memory Bank a adaptarse a tus expectativas, ya que le enseña los matices de la información que debe conservarse y con qué fraseo. Puedes personalizar tu banco de memoria en dos pasos: contar y mostrar. Los temas de Memoria indican a Memoria qué información debe conservar. Los ejemplos muestran a Memory Bank qué tipo de información debe dar lugar a una memoria específica, lo que le ayuda a aprender los patrones, los matices y las expresiones que quieres que entienda.