Antes de trabajar con el banco de memoria de Vertex AI Agent Engine, debes configurar tu entorno. Ten en cuenta que, si bien Memory Bank forma parte de Agent Engine, no es necesario que implementes tu código en Agent Engine Runtime para usar Memory Bank.
Configura tu Google Cloud proyecto
Cada proyecto se puede identificar de dos maneras: con el número o con el ID del proyecto. El PROJECT_NUMBER
se crea automáticamente cuando creas el proyecto, mientras que el PROJECT_ID
lo creas tú o la persona que haya creado el proyecto. Sigue estos pasos para configurar un proyecto:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
Si no usas Vertex AI en modo express, sigue las instrucciones en Autentícate en Vertex AI.
Si usas Vertex AI en modo exprés, configura la autenticación estableciendo la clave de API en el entorno:
os.environ["GOOGLE_API_KEY"] = "API_KEY"
PROJECT_ID
es el ID del proyecto.LOCATION
es una de las regiones admitidas para Memory Bank.Crea o actualiza una instancia de Agent Engine: Cuando creas o actualizas una instancia, puedes anular los valores predeterminados de Agent Engine para realizar las siguientes modificaciones en la instancia:
Establece la configuración para determinar cómo Memory Bank genera y administra los recuerdos.
Implementa tu agente en el entorno de ejecución de Agent Engine.
- AGENT_ENGINE_NAME: Es el nombre del motor de agentes. Debe tener el formato
projects/.../locations/.../reasoningEngines/...
. Consulta las regiones admitidas para Memory Bank. Establece la configuración para determinar cómo Memory Bank genera y administra los recuerdos.
Implementa tu agente en el entorno de ejecución de Agent Engine.
agent_engine = client.agent_engines.create( # Optional. Set this argument if you want to deploy to Agent Engine Runtime. agent_engine=..., # Optional. Set this argument if you want to change the Memory Bank configuration. config=... )
Las instancias nuevas están vacías hasta que crees o generes recuerdos.
Necesitas el nombre de tu Agent Engine para leer o escribir recuerdos:
agent_engine_name = agent_engine.api_resource.name
- AGENT_ENGINE_NAME: Es el nombre del motor de agentes. Debe tener el formato
projects/.../locations/.../reasoningEngines/...
. Consulta las regiones admitidas para Memory Bank. - Configuración de personalización: Configura cómo se deben extraer los recuerdos de los datos de origen.
- Configuración de la búsqueda de similitud: Configura qué modelo de embedding se usa para la búsqueda de similitud. La configuración predeterminada es
text-embedding-005
. - Configuración de generación: Configura qué LLM se usa para la generación de memoria. La configuración predeterminada es
gemini-2.0-flash-001
. - Configuración de TTL: Configura cómo se establece automáticamente el TTL para los recuerdos creados o actualizados. El valor predeterminado es sin TTL.
- Configura temas de memoria: Define el tipo de información que Memory Bank debe considerar significativa para conservarla. Memory Bank solo conservará la información que se ajuste a uno de estos temas de memoria.
- Proporcionar ejemplos de pocas tomas: Demuestra el comportamiento esperado para la extracción de memoria en Memory Bank.
Temas administrados: La etiqueta y las instrucciones las define Memory Bank. Solo debes proporcionar el nombre del tema administrado. Por ejemplo:
Diccionario
memory_topic = { "managed_memory_topic": { "managed_topic_enum": "USER_PERSONAL_INFO" } }
Basado en clases
from vertexai.types import ManagedTopicEnum from vertexai.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic from vertexai.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic memory_topic = MemoryTopic( managed_memory_topic=ManagedMemoryTopic( managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO ) )
Memory Bank admite los siguientes temas administrados:
- Información personal (
USER_PERSONAL_INFO
): Es la información personal importante sobre el usuario, como nombres, relaciones, pasatiempos y fechas importantes. Por ejemplo, "Trabajo en Google" o "Mi aniversario de bodas es el 31 de diciembre". - Preferencias del usuario (
USER_PREFERENCES
): Me gusta, No me gusta, estilos preferidos o patrones explícitos o implícitos Por ejemplo, "Prefiero el asiento del medio". - Eventos clave de la conversación y resultados de tareas (
KEY_CONVERSATION_DETAILS
): Son los hitos o las conclusiones importantes dentro del diálogo. 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". - Instrucciones explícitas para recordar o olvidar (
EXPLICIT_INSTRUCTIONS
): Es la información que el usuario le pide explícitamente al agente que recuerde o olvide. Por ejemplo, si el usuario dice "Recuerda que uso principalmente Python", Memory Bank genera un recuerdo como "Uso principalmente Python".
- Información personal (
Temas personalizados: Tú defines la etiqueta y las instrucciones cuando configuras tu instancia de Memory Bank. Se usarán en la instrucción del paso de extracción de Memory Bank. Por ejemplo:
Diccionario
memory_topic = { "custom_memory_topic": { "label": "business_feedback", "description": """Specific user feedback about their experience at the coffee shop. This includes opinions on drinks, food, pastries, ambiance, staff friendliness, service speed, cleanliness, and any suggestions for improvement.""" } }
Basado en clases
from vertexai.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic from vertexai.types import MemoryBankCustomizationConfigMemoryTopicCustomMemoryTopic as CustomMemoryTopic memory_topic = MemoryTopic( custom_memory_topic=CustomMemoryTopic( label="business_feedback", description="""Specific user feedback about their experience at the coffee shop. This includes opinions on drinks, food, pastries, ambiance, staff friendliness, service speed, cleanliness, and any suggestions for improvement.""" ) )
Cuando uses temas personalizados, te recomendamos que también proporciones ejemplos de aprendizaje con pocos datos que demuestren cómo se deben extraer los recuerdos de tu conversación.
- EMBEDDING_MODEL: Es el modelo de incorporación de texto de Google que se usará para la búsqueda de similitud, en el formato
projects/{project}/locations/{location}/publishers/google/models/{model}
. - LLM_MODEL: Es el modelo de LLM de Google que se usará para extraer y consolidar recuerdos, en el formato
projects/{project}/locations/{location}/publishers/google/models/{model}
. TTL predeterminado: El TTL se aplicará a todas las operaciones que creen o actualicen una memoria, incluidas
UpdateMemory
,CreateMemory
yGenerateMemories
.Diccionario
memory_bank_config = { "ttl_config": { "default_ttl": f"TTLs" } }
Basado en clases
from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigTtlConfig as TtlConfig memory_bank_config = MemoryBankConfig( ttl_config=TtlConfig( default_ttl=f"TTLs" ) )
Reemplaza lo siguiente:
- TTL: Es la duración en segundos del TTL. En el caso de los recuerdos actualizados, la fecha de vencimiento recién calculada (ahora + TTL) reemplazará la fecha de vencimiento anterior del recuerdo.
TTL granular (por operación): El TTL se calcula en función de la operación que creó o actualizó la memoria. Si no se configura para una operación determinada, la operación no actualizará la fecha de vencimiento de la memoria.
Diccionario
memory_bank_config = { "ttl_config": { "granular_ttl": { "create_ttl": f"CREATE_TTLs", "generate_created_ttl": f"GENERATE_CREATED_TTLs", "generate_updated_ttl": f"GENERATE_UPDATED_TTLs" } } }
Basado en clases
from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigTtlConfig as TtlConfig from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigTtlConfigGranularTtlConfig as GranularTtlConfig memory_bank_config = MemoryBankConfig( ttl_config=TtlConfig( granular_ttl_config=GranularTtlConfig( create_ttl=f"CREATE_TTLs", generate_created_ttl=f"GENERATE_CREATED_TTLs", generate_updated_ttl=f"GENERATE_UPDATED_TTLs", ) ) )
Reemplaza lo siguiente:
- CREATE_TTL: Es la duración en segundos del TTL de los recuerdos creados con
CreateMemory
. - GENERATE_CREATED_TTL: Es la duración en segundos del TTL de los recuerdos creados con
GeneratedMemories
. - GENERATE_UPDATED_TTL: Es la duración en segundos del TTL de los recuerdos actualizados con
GeneratedMemories
. La fecha de vencimiento recién calculada (ahora + TTL) reemplazará la fecha de vencimiento anterior de la memoria.
- CREATE_TTL: Es la duración en segundos del TTL de los recuerdos creados con
- STAGING_BUCKET: Es tu bucket de Cloud Storage que se usará para la etapa intermedia de tu Agent Engine Runtime.
- Guía de inicio rápido del SDK de Vertex AI Agent Engine
- Guía de inicio rápido del Kit de desarrollo de agentes
Obtén los roles necesarios
Para obtener los permisos que necesitas para usar Vertex AI Agent Engine,
pídele a tu administrador que te otorgue el
rol de IAM de Usuario de Vertex AI (roles/aiplatform.user
)
en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Si realizas solicitudes a Memory Bank desde un agente implementado en Google Kubernetes Engine o Cloud Run, asegúrate de que tu cuenta de servicio tenga los permisos necesarios. El agente de servicio de Reasoning Engine ya tiene los permisos necesarios para leer y escribir recuerdos, por lo que las solicitudes salientes de Agent Engine Runtime ya deberían tener permiso para acceder a Memory Bank.
Configura tu entorno
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).
Instala bibliotecas
Instala el SDK de Vertex AI:
pip install google-cloud-aiplatform>=1.104.0
Autenticación
Las instrucciones de autenticación dependen de si usas Vertex AI en modo rápido:
Configura un cliente del SDK de Vertex AI
Ejecuta el siguiente código para configurar un cliente del SDK de Vertex AI:
import vertexai
client = vertexai.Client(
project="PROJECT_ID",
location="LOCATION",
)
donde
Configura tu instancia de Agent Engine para Memory Bank
Para comenzar a usar Memory Bank, primero necesitas una instancia de Agent Engine.
Puedes realizar una de las siguientes acciones:
Usar una instancia existente
Si no necesitas modificar una instancia existente de Agent Engine, ejecuta el siguiente comando para configurar la instancia para Memory Bank:
agent_engine = client.agent_engines.get(name="AGENT_ENGINE_NAME")
Reemplaza lo siguiente:
Puedes usar la instancia en cualquier entorno, incluidos Google Kubernetes Engine y Cloud Run. Para comenzar, necesitas el nombre de Agent Engine que identifica el banco de memoria y el permiso suficiente para llamar al banco de memoria.
Crea o actualiza una instancia
Crear
Memory Bank está habilitado de forma predeterminada cuando creas una instancia de Agent Engine. Crear un nuevo Agent Engine sin un tiempo de ejecución solo debería tardar unos segundos.
agent_engine = client.agent_engines.create()
También puedes anular los valores predeterminados de Agent Engine cuando creas una instancia de Agent Engine para realizar las siguientes modificaciones:
Actualizar
Puedes actualizar una instancia existente de Agent Engine si deseas actualizar Agent Engine y, al mismo tiempo, conservar los recuerdos que se almacenaron en la instancia. Puedes realizar actualizaciones, como cambiar la configuración de Memory Bank o implementar tu agente en el entorno de ejecución de Agent Engine.
agent_engine = client.agent_engines.update(
# If you have an existing AgentEngine, you can access the name using `agent_engine.api_resource.name`.
name="AGENT_ENGINE_NAME",
# Optional. Set this argument if you want to deploy to Agent Engine Runtime.
agent_engine=...,
# Optional. Set this argument if you want to change the Memory Bank configuration.
config=...
)
Reemplaza lo siguiente:
Cómo configurar tu Banco de recuerdos
Puedes configurar tu Banco de recuerdos para personalizar la forma en que se generan y administran los recuerdos. Si no se proporciona la configuración, Memory Bank usa la configuración predeterminada para cada tipo de configuración.
La configuración del banco de memoria se establece cuando creas o actualizas tu instancia de Agent Engine:
client.agent_engines.create(
...,
config={
"context_spec": {
"memory_bank_config": memory_bank_config
}
}
)
# Alternatively, update an existing Agent Engine's Memory Bank config.
agent_engine = client.agent_engines.update(
name=agent_engine.api_resource.name,
config={
"context_spec": {
"memory_bank_config": memory_bank_config
}
}
)
Puedes configurar los siguientes parámetros para tu instancia:
Configuración de personalización
Si deseas personalizar la forma en que se extraen los recuerdos de tus datos fuente, puedes configurar el comportamiento de extracción de recuerdos cuando configures tu instancia de Agent Engine. Existen dos variables de ajuste que puedes usar para la personalización:
De manera opcional, puedes configurar un comportamiento diferente para los distintos niveles de alcance. Por ejemplo, los temas que son significativos para los recuerdos a nivel de la sesión pueden no serlo para los recuerdos a nivel del usuario (en varias sesiones). Para configurar el comportamiento de un subconjunto determinado de recuerdos, establece las claves de alcance de la configuración de personalización. Solo las solicitudes GenerateMemories
que incluyan esas claves de alcance usarán esa configuración. También puedes configurar el comportamiento predeterminado (que se aplica a todos los conjuntos de claves de alcance) si omites el campo scope_key
. Esta configuración se aplicará a todas las solicitudes que no tengan una configuración que coincida exactamente con las claves de alcance de otra configuración de personalización.
Por ejemplo, user_level_config
solo se aplicaría a las solicitudes de GenerateMemories
que usen exactamente la clave de alcance user_id
(es decir, scope={"user_id": "123"}
sin claves adicionales). default_config
se aplicaría a otras solicitudes:
Diccionario
user_level_config = {
"scope_keys": ["user_id"],
"memory_topics": [...],
"generate_memories_examples": [...]
}
default_config = {
"memory_topics": [...],
"generate_memories_examples": [...]
}
config = {
"customization_configs": [
user_level_config,
default_config
]
}
Basado en clases
from vertexai.types import MemoryBankCustomizationConfig as CustomizationConfig
user_level_config = CustomizationConfig(
scope_keys=["user_id"],
memory_topics=[...],
generate_memories_examples=[...]
)
Cómo configurar temas de memoria
Los "temas de memoria" identifican qué información considera Memory Bank significativa y, por lo tanto, debe conservarse como recuerdos generados. Memory Bank admite dos tipos de temas de memoria:
Con la personalización, puedes usar cualquier combinación de temas de la memoria. Por ejemplo, puedes usar un subconjunto de los temas de memoria administrada disponibles:
Diccionario
{
"memory_topics": [
"managed_memory_topic": { "managed_topic_enum": "USER_PERSONAL_INFO" },
"managed_memory_topic": { "managed_topic_enum": "USER_PREFERENCES" }
]
}
Basado en clases
from vertexai.types import MemoryBankCustomizationConfig as CustomizationConfig
from vertexai.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
from vertexai.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic
from vertexai.types import ManagedTopicEnum
CustomizationConfig(
memory_topics=[
MemoryTopic(
managed_memory_topic=ManagedMemoryTopic(
managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO)
),
MemoryTopic(
managed_memory_topic=ManagedMemoryTopic(
managed_topic_enum=ManagedTopicEnum.USER_PREFERENCES)
),
]
)
También puedes usar una combinación de temas administrados y personalizados (o solo temas personalizados):
Diccionario
{
"memory_topics": [
"managed_memory_topic": { "managed_topic_enum": "USER_PERSONAL_INFO" },
"custom_memory_topic": {
"label": "Jargon",
"description": """Specific user feedback about their experience at
the coffee shop. This includes opinions on drinks, food, pastries, ambiance,
staff friendliness, service speed, cleanliness, and any suggestions for
improvement."""
}
]
}
Basado en clases
from vertexai.types import MemoryBankCustomizationConfig as CustomizationConfig
from vertexai.types import MemoryBankCustomizationConfigMemoryTopic as MemoryTopic
from vertexai.types import MemoryBankCustomizationConfigMemoryTopicCustomMemoryTopic as CustomMemoryTopic
from vertexai.types import MemoryBankCustomizationConfigMemoryTopicManagedMemoryTopic as ManagedMemoryTopic
from vertexai.types import ManagedTopicEnum
CustomizationConfig(
memory_topics=[
MemoryTopic(
managed_memory_topic=ManagedMemoryTopic(
managed_topic_enum=ManagedTopicEnum.USER_PERSONAL_INFO)
),
MemoryTopic(
custom_memory_topic=CustomMemoryTopic(
label="business_feedback",
description="""Specific user feedback about their experience at
the coffee shop. This includes opinions on drinks, food, pastries, ambiance,
staff friendliness, service speed, cleanliness, and any suggestions for
improvement."""
)
)
]
)
Varios ejemplos
Los ejemplos de pocas tomas te permiten demostrar el comportamiento esperado de extracción de memoria en Memory Bank. Por ejemplo, puedes proporcionar una conversación de entrada de muestra y los recuerdos que se espera que se extraigan de esa conversación.
Recomendamos usar siempre ejemplos con pocos datos con temas personalizados para que Memory Bank pueda aprender el comportamiento previsto. Los ejemplos de pocos disparos son opcionales cuando se usan temas administrados, ya que Memory Bank define ejemplos para cada tema. Demuestra conversaciones que no se espera que generen recuerdos proporcionando una lista generated_memories
vacía.
Por ejemplo, puedes proporcionar ejemplos con pocos ejemplos que demuestren cómo extraer comentarios sobre tu empresa a partir de los mensajes de los clientes:
Diccionario
example = {
"conversationSource": {
"events": [
{
"content": {
"role": "model",
"parts": [{ "text": "Welcome back to The Daily Grind! We'd love to hear your feedback on your visit." }] }
},
{
"content": {
"role": "user",
"parts": [{ "text": "Hey. The drip coffee was a bit lukewarm today, which was a bummer. Also, the music was way too loud, I could barely hear my friend." }] }
}
]
},
"generatedMemories": [
{
"fact": "The user reported that the drip coffee was lukewarm."
},
{
"fact": "The user felt the music in the shop was too loud."
}
]
}
Basado en clases
from google.genai.types import Content, Part
from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExample as GenerateMemoriesExample
from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSource as ConversationSource
from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSourceEvent as ConversationSourceEvent
from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleGeneratedMemory as ExampleGeneratedMemory
example = GenerateMemoriesExample(
conversation_source=ConversationSource(
events=[
ConversationSourceEvent(
content=Content(
role="model",
parts=[Part(text="Welcome back to The Daily Grind! We'd love to hear your feedback on your visit.")]
)
),
ConversationSourceEvent(
content=Content(
role="user",
parts=[Part(text= "Hey. The drip coffee was a bit lukewarm today, which was a bummer. Also, the music was way too loud, I could barely hear my friend.")]
)
)
]
),
generated_memories=[
ExampleGeneratedMemory(
fact="The user reported that the drip coffee was lukewarm."
),
ExampleGeneratedMemory(
fact="The user felt the music in the shop was too loud."
)
]
)
También puedes proporcionar ejemplos de conversaciones que no deberían generar recuerdos proporcionando una lista vacía para el resultado esperado (generated_memories
):
Diccionario
example = {
"conversationSource": {
"events": [
{
"content": {
"role": "model",
"parts": [{ "text": "Good morning! What can I get for you at The Daily Grind?" }] }
},
{
"content": {
"role": "user",
"parts": [{ "text": "Thanks for the coffee." }] }
}
]
},
"generatedMemories": []
}
Basado en clases
from google.genai.types import Content, Part
from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExample as GenerateMemoriesExample
from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSource as ConversationSource
from vertexai.types import MemoryBankCustomizationConfigGenerateMemoriesExampleConversationSourceEvent as ConversationSourceEvent
example = GenerateMemoriesExample(
conversation_source=ConversationSource(
events=[
ConversationSourceEvent(
content=Content(
role="model",
parts=[Part(text="Welcome back to The Daily Grind! We'd love to hear your feedback on your visit.")]
)
),
ConversationSourceEvent(
content=Content(
role="user",
parts=[Part(text= "Thanks for the coffee!")]
)
)
]
),
generated_memories=[]
)
Configuración de la búsqueda por similitud
La configuración de la búsqueda de similitud controla qué modelo de embedding usa tu instancia para la búsqueda de similitud. La búsqueda de similitud se usa para identificar qué recuerdos deberían ser candidatos para la consolidación y para la recuperación de recuerdos basada en la búsqueda de similitud. Si no se proporciona esta configuración, Memory Bank usa text-embedding-005
como modelo predeterminado.
Si esperas que las conversaciones de los usuarios sean en idiomas distintos del inglés, usa un modelo que admita varios idiomas, como gemini-embedding-001
o text-multilingual-embedding-002
, para mejorar la calidad de la recuperación.
Diccionario
memory_bank_config = {
"similarity_search_config": {
"embedding_model": "EMBEDDING_MODEL",
}
}
Basado en clases
from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig
from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigSimilaritySearchConfig as SimilaritySearchConfig
memory_bank_config = MemoryBankConfig(
similarity_search_config=SimilaritySearchConfig(
embedding_model="EMBEDDING_MODEL"
)
)
Reemplaza lo siguiente:
Configuración de generación
La configuración de generación controla qué LLM se usa para generar recuerdos, lo que incluye extraer recuerdos y consolidar recuerdos nuevos con los existentes.
Memory Bank usa gemini-2.0-flash-001
como modelo predeterminado.
Diccionario
memory_bank_config = {
"generation_config": {
"model": "LLM_MODEL",
}
}
Basado en clases
from vertexai.types import ReasoningEngineContextSpecMemoryBankConfig as MemoryBankConfig
from vertexai.types import ReasoningEngineContextSpecMemoryBankConfigGenerationConfig as GenerationConfig
memory_bank_config = MemoryBankConfig(
generation_config=GenerationConfig(
model="LLM_MODEL"
)
)
Reemplaza lo siguiente:
Configuración del tiempo de actividad (TTL)
La configuración del TTL controla cómo Memory Bank debe establecer de forma dinámica el tiempo de vencimiento de los recuerdos. Después de que transcurra el tiempo de vencimiento, los recuerdos no estarán disponibles para recuperarse y se borrarán.
Si no se proporciona la configuración, no se establecerá de forma dinámica la fecha de vencimiento de los recuerdos creados o actualizados, por lo que los recuerdos no vencerán a menos que se establezca manualmente su fecha de vencimiento.
Existen dos opciones para la configuración del TTL:
Implementa tu agente con memoria en Agent Engine
Si bien Memory Bank se puede usar en cualquier entorno de ejecución, también puedes usarlo con Agent Engine Runtime para leer y escribir recuerdos desde tu agente implementado.
Para implementar un agente con el banco de memoria en el entorno de ejecución de Vertex AI Agent Engine, primero configura tu entorno para el entorno de ejecución de Agent Engine. Luego, prepara tu agente para implementarlo en el entorno de ejecución de Agent Engine con integración de memoria. Tu agente implementado debe realizar llamadas para leer y escribir recuerdos según sea necesario.
AdkApp
Si usas la plantilla del kit de desarrollo de agentes de Agent Engine, el agente usa VertexAiMemoryBankService
de forma predeterminada cuando se implementa en el entorno de ejecución de Agent Engine. Esto significa que las herramientas de memoria del ADK leen memorias del banco de memoria.
from google.adk.agents import Agent
from vertexai.preview.reasoning_engines import AdkApp
# Develop an agent using the ADK template.
agent = Agent(...)
adk_app = AdkApp(
agent=adk_agent,
...
)
# Deploy the agent to Agent Engine Runtime.
agent_engine = client.agent_engines.create(
agent_engine=adk_app,
config={
"staging_bucket": "STAGING_BUCKET",
"requirements": ["google-cloud-aiplatform[agent_engines,adk]"],
# Optional.
**context_spec
}
)
# Update an existing Agent Engine to add or modify the Runtime.
agent_engine = client.agent_engines.update(
name=agent_engine.api_resource.name,
agent_engine=adk_app,
config={
"staging_bucket": "STAGING_BUCKET",
"requirements": ["google-cloud-aiplatform[agent_engines,adk]"],
# Optional.
**context_spec
}
)
Reemplaza lo siguiente:
Para obtener más información sobre el uso de Memory Bank con el ADK, consulta la Guía de inicio rápido con el Agent Development Kit.
Agente personalizado
Puedes usar Memory Bank con tu agente personalizado implementado en el entorno de ejecución de Agent Engine. En este caso, tu agente debe coordinar las llamadas al banco de memoria para activar las llamadas de generación de memoria y recuperación de memoria.
Si deseas usar la misma instancia de Agent Engine para Memory Bank y Agent Engine Runtime, puedes leer las variables de entorno GOOGLE_CLOUD_PROJECT
, GOOGLE_CLOUD_LOCATION
y GOOGLE_CLOUD_AGENT_ENGINE_ID
para inferir el nombre de Agent Engine del entorno:
project = os.environ.get("GOOGLE_CLOUD_PROJECT")
location = os.environ.get("GOOGLE_CLOUD_LOCATION")
agent_engine_id = os.environ.get("GOOGLE_CLOUD_AGENT_ENGINE_ID")
agent_engine_name = f"projects/{project}/locations/{location}/reasoningEngines/{agent_engine_id}"