Solución de problemas de Memory Bank

En este documento, se muestra cómo resolver problemas habituales cuando se usa el banco de memoria de Vertex AI Agent Engine.

No se generaron recuerdos

El proceso de generación de recuerdos incluye un paso crucial: determinar si la información del contenido fuente es lo suficientemente significativa como para conservarse. Una respuesta vacía indica que el proceso se ejecutó correctamente, pero no se encontró información que cumpliera con 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:

Verifica si se activó la generación de memoria

Primero, confirma que el proceso de generación de memoria se haya iniciado. La generación de memoria se inicia con la invocación de GenerateMemories (client.agent_engines.memories.generate(...)).

Si usas VertexAiMemoryBankService del 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 la generación de la memoria. Solo llama a tu instancia de Memory Bank si hay eventos propagados en el objeto de sesión. Si tu aplicación o agente del ADK invoca add_session_to_memory, pero no se activó la generación de memoria, es posible que no se completen los eventos del objeto Session. Esto es posible incluso si interactuaste con la sesión, en especial si usas adk.Runner. Para solucionar este problema, recupera 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)

Verifica que se haya completado el LRO de generación de memoria

La generación de recuerdos es una operación de larga duración (LRO) y puede tardar unos segundos en completarse. La latencia exacta depende de la duración de la conversación de entrada y 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 el LRO de generación de memoria.

Cuando se usa VertexAiMemoryBankService de ADK, add_session_to_memory es una operación no bloqueante. Solo activa la generación de memoria y no espera a que se complete el LRO.

Busca errores en la respuesta de la operación

La respuesta del LRO puede contener un mensaje de error similar que indique que la generación de la memoria no se realizó correctamente. Por ejemplo:

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

Entre los errores más comunes, se incluyen los siguientes:

  • Errores de agotamiento de recursos para Gemini cuando usas el modelo de pago por uso. Con la cuota compartida dinámica (DSQ), no hay límites de cuota predefinidos para tu uso. Para garantizar una alta disponibilidad de Memory Bank y obtener niveles de servicio predecibles para tus cargas de trabajo de producción, consulta Provisioned Throughput.

  • Datos de origen no válidos, como usar roles distintos de model y user en tu Content

Determina si la conversación fue significativa

Si el proceso se activó, se completó correctamente y no produjo errores, es probable que Memory Bank haya determinado que ninguna información de la conversación fuente 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 coincide con ningún tema configurado, 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 de pocos disparos ayuda a que tu instancia de Memory Bank se adapte a tus expectativas, ya que le enseña los matices de qué información se debe conservar y con qué redacción. Puedes pensar en la personalización de tu banco de memoria en dos pasos: contar y mostrar. Los temas de la memoria indican a Memory Bank qué información debe conservar. Los ejemplos muestran al banco de memoria qué tipo de información debe generar un recuerdo específico, lo que lo ayuda a aprender los patrones, los matices y la redacción que esperas que comprenda.