Memory Bank te permite construir recuerdos a largo plazo a partir de conversaciones entre el usuario y tu agente. Luego, Memory Bank consolida y selecciona automáticamente los recuerdos de un usuario específico agregando, actualizando y quitando recuerdos con el tiempo. En esta página, se describe cómo activar la generación de recuerdos y obtenerlos.
Cuando activas la generación de recuerdos, Memory Bank realiza automáticamente las siguientes operaciones:
Extracción: Extrae información sobre el usuario de sus conversaciones con el agente.
Consolidation: Identifica si se deben borrar o actualizar los recuerdos existentes con el mismo alcance. Memory Bank verifica que los recuerdos nuevos no sean duplicados ni contradictorios antes de combinarlos con los recuerdos existentes.
No todas las interacciones del usuario-agente generan la creación o actualización de recuerdos. Memory Bank solo conserva la información que se considera valiosa para las interacciones futuras, lo que puede incluir los siguientes tipos de información:
- Información sobre el usuario, como preferencias, nombres, relaciones, pasatiempos y fechas importantes Por ejemplo, "Trabajo en Google", "Prefiero el asiento del pasillo" o "Mi aniversario de boda es el 31 de diciembre".
- Eventos clave de la conversación y resultados de las tareas Por ejemplo, "Reservé boletos de avión para un viaje de ida y vuelta entre JFK y SFO. Me voy el 1 de junio de 2025 y regreso el 7 de junio de 2025".
- Es la información que el usuario le pide explícitamente al agente que recuerde. Por ejemplo, si el usuario dice "Recuerda que uso Python principalmente", Memory Bank genera un recuerdo como "Uso Python principalmente".
Los recuerdos solo se pueden extraer del texto, los archivos intercalados y los datos de archivos del contenido fuente. Todo el resto del contenido, incluidas las llamadas a funciones y las respuestas, se ignora cuando se generan recuerdos.
Los recuerdos se pueden extraer de imágenes, videos y audios proporcionados por el usuario. Si Memory Bank considera que el contexto proporcionado por la entrada multimodal es significativo para las interacciones futuras, es posible que se cree una memoria textual que incluya la información extraída de la entrada. Por ejemplo, si el usuario proporciona una imagen de un golden retriever con el texto "Este es mi perro", Memory Bank genera un recuerdo como "Mi perro es un golden retriever".
Configura tu entorno
Antes de comenzar a generar recuerdos, debes configurar tu entorno y la instancia de Agent Engine. En esta sección, se supone que configuraste un entorno de desarrollo de Python o que usas un tiempo de ejecución con un entorno de desarrollo de Python (como Colab).
Importa las bibliotecas
Instala el SDK de Vertex AI:
pip install google-cloud-aiplatform>=1.100.0
Configura un cliente del SDK de Vertex AI
import vertexai
client = vertexai.Client(
project="PROJECT_ID",
location="LOCATION",
)
Reemplaza lo siguiente:
- PROJECT_ID: ID del proyecto
- LOCATION: Tu región. Solo se admite
us-central1
para el banco de memoria de Vertex AI Agent Engine.
Configura tu instancia de Agent Engine
Para recuperar recuerdos de Memory Bank, primero necesitas una instancia de Agent Engine. Puedes crear una instancia nueva o obtener una existente. Las instancias nuevas están vacías, a menos que primero crees o generes recuerdos.
Crear
agent_engine = client.agent_engines.create()
Usar existente
agent_engine = client.agent_engines.get(name="AGENT_ENGINE_NAME")
Reemplaza lo siguiente:
- AGENT_ENGINE_NAME: Es el nombre del motor de agentes. Debe tener el formato
projects/.../locations/.../reasoningEngines/...
. Solo puedes usar instancias de Agent Engine enus-central1
para el banco de memoria de Vertex AI Agent Engine.
Generar recuerdos
Puedes activar la generación de recuerdos con GenerateMemories
al final de una sesión o en intervalos regulares dentro de una sesión. La generación de memoria extrae el contexto clave de las conversaciones fuente y lo combina con los recuerdos existentes para el mismo alcance. Por ejemplo, puedes crear recuerdos a nivel de la sesión con un alcance como {"user_id": "123", "session_id": "456"}
. Los recuerdos con el mismo alcance se pueden consolidar y recuperar juntos.
Cuando llames a GenerateMemories
, debes proporcionar la conversación de origen a través de sesiones de Agent Engine o directamente en formato JSON:
Sesiones de Agent Engine
Con las sesiones de Agent Engine, Memory Bank usa los eventos de la sesión como la conversación fuente para la generación de memoria.
Para definir el alcance de los recuerdos generados, el Banco de recuerdos extrae y usa el ID del usuario de la sesión de forma predeterminada. Por ejemplo, el alcance de los recuerdos se almacena como {"user_id": "123"}
si el user_id
de la sesión es "123". También puedes proporcionar un scope
directamente, lo que anula el uso del user_id
de la sesión como alcance.
client.agent_engines.generate_memories(
name=agent_engine.api_resource.name,
vertex_session_source={
"session": "SESSION_NAME"
},
# Optional when using Agent Engine Sessions. Defaults to {"user_id": session.user_id}.
scope=SCOPE,
config={
"wait_for_completion": True
}
)
Reemplaza lo siguiente:
SESSION_NAME: Es el nombre de la sesión.
SCOPE: Es un diccionario que representa el alcance de los recuerdos generados (opcional). Por ejemplo,
{"session_id": "MY_SESSION"}
Solo se consideran para la consolidación los recuerdos con el mismo alcance. Si no se proporciona, se usa{"user_id": session.user_id}
.
Formato JSON
Si usas un almacenamiento de sesión diferente de las sesiones de Agent Engine, proporciona la conversación fuente directamente en formato JSON:
client.agent_engines.generate_memories(
name=agent_engine.api_resource.name,
direct_contents_source={
"events": EVENTS
},
scope=SCOPE,
config={
"wait_for_completion": True
}
)
Reemplaza lo siguiente:
- EVENTS: Es una lista de diccionarios de contenido. Por ejemplo:
[
{
"content": {
"role": "user",
"parts": [
{"text": "I'm work with LLM agents!"}
]
}
}
]
- SCOPE: Es un diccionario que representa el alcance de los recuerdos generados. Por ejemplo,
{"session_id": "MY_SESSION"}
Solo se consideran para la consolidación los recuerdos con el mismo alcance.
GenerateMemories
devuelve un AgentEngineGenerateMemoriesOperation
que contiene una lista de recuerdos generados:
AgentEngineGenerateMemoriesOperation(
name="projects/.../locations/.../reasoningEngines/.../operations/...",
done=True,
response=GenerateMemoriesResponse(
generatedMemories=[
GenerateMemoriesResponseGeneratedMemory(
memory=Memory(
"name": "projects/.../locations/.../reasoningEngines/.../memories/..."
),
action=<GenerateMemoriesResponseGeneratedMemoryAction.CREATED: "CREATED">,
),
GenerateMemoriesResponseGeneratedMemory(
memory=Memory(
"name": "projects/.../locations/.../reasoningEngines/.../memories/..."
),
action=<GenerateMemoriesResponseGeneratedMemoryAction.UPDATED: "UPDATED">,
),
GenerateMemoriesResponseGeneratedMemory(
memory=Memory(
"name": "projects/.../locations/.../reasoningEngines/.../memories/..."
),
action=<GenerateMemoriesResponseGeneratedMemoryAction.DELETED: "DELETED">,
),
]
)
)
Cada recuerdo generado incluye la action
que se realizó en ese recuerdo:
CREATED
: Indica que se agregó un recuerdo nuevo, lo que representa un concepto novedoso que no se capturó en los recuerdos existentes.UPDATED
: Indica que se actualizó un recuerdo existente, lo que sucede si el recuerdo abarcaba conceptos similares a la información recién extraída. El hecho de la memoria se puede actualizar con información nueva o permanecer igual.DELETED
: Indica que se borró la memoria existente porque su información era contradictoria con la información nueva extraída de la conversación.
En el caso de los recuerdos de CREATED
o UPDATED
, puedes usar GetMemories
para recuperar el contenido completo del recuerdo. Cuando se recuperan recuerdos de DELETED
, se produce un error 404.