Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

Utilice el servicio de memoria independiente.

El servicio de memoria de MongoDB Atlas Agent Engine puede ejecutarse como un servicio independiente, separado de una implementación completa del agente. Utilice esta guía para configurar el servidor de memoria para un proyecto de memoria y use el kit de desarrollo de software (SDK) de Python agent-engine-sdk-memory para registrar y recuperar el contexto de la conversación desde una aplicación externa.

Puede ejecutar el servicio de memoria en uno de los siguientes modos:

  • Alojado: El servidor de memoria se ejecuta en el motor de agente de Atlas, y su aplicación se conecta a él mediante un token de acceso a la cuenta de servicio. Utilice este modo para una aplicación desplegada.

  • Local: El servidor de memoria se ejecuta en contenedores Docker locales gestionados por la CLI agentengine, y su aplicación se conecta directamente a él. Utilice este modo para desarrollar y realizar pruebas localmente.

En el modo alojado, el SDK agent-engine-sdk-memory se conecta a la puerta de enlace de memoria alojada mediante un token de acceso a la cuenta de servicio. La puerta de enlace lee la organización y el proyecto de la cuenta de servicio. Para cada conversación, se pasan los valores user_id y session_id al SDK para limitar el alcance de la memoria de la conversación a ese usuario y sesión.

Tip

Para obtener más información sobre la memoria, consulte la guía de memoria del agente.

Las siguientes funciones están disponibles en el modo alojado:

  • record_turn()Métodos SDK build_context() y search() para grabar y recuperar el contexto de la conversación.

  • Búsqueda semántica, episódica, procedimental y taxonómica

  • Operaciones directas de creación y lectura, en forma de save_*, get_* o list_*.

  • Tipos de memoria personalizados, utilizando los métodos genéricos save() y retrieve().

En modo local, el SDK agentic-platform-memory se conecta directamente a un proxy local de Orchestration Engine (oe) que el comando agentengine dev up inicia en su máquina. Debe establecer el valor base_url en la URL local oe. No establezca project_id ni un token de acceso para la conexión.

Las siguientes funciones están disponibles en modo local:

  • record_turn()Métodos SDK build_context() y search() para grabar y recuperar el contexto de la conversación.

  • Búsqueda semántica, episódica, procedimental y taxonómica

  • Operaciones directas de creación y lectura, en forma de save_*, get_* o list_*.

No se pueden utilizar tipos de memoria personalizados en modo local.

Para obtener más información sobre los diferentes tipos de memoria, consulte la guía de memoria del agente.

Esta sección muestra cómo crear un proyecto que solo utilice memoria y que esté alojado en el motor de agentes de Atlas.

Antes de comenzar este tutorial, asegúrese de tener los siguientes recursos:

  • La interfaz de línea de comandos agentengine se instaló y autenticó correctamente. Para obtener más información, consulte Instalación y autenticación.

  • Acceda al motor del agente de Atlas ejecutando agentengine auth login.

  • Una clave API de Voyage AI para generar incrustaciones de memoria.

  • Una clave API para un proveedor de modelos de lenguaje grandes (LLM), como ANTHROPIC_API_KEY.

  • pip o uv instalado para instalar el SDK de Python.

  • Se requiere un clúster Atlas Flex (requisito mínimo), M10, M20 o de nivel superior (recomendado) para almacenar los datos de memoria. Para configurar un clúster, consulte la sección "Configurar recursos de Atlas".

    • Esta guía requiere una cadena de conexión para su clúster de Atlas. Para obtener información sobre cómo recuperar su cadena de conexión, consulte la guía Conectarse a un clúster.

    • Recomendamos implementar un clúster dedicado de nivel M10 o superior para dar cabida a sus datos de memoria y al número de índices a medida que aumenten. Atlas Flex es el nivel de clúster más bajo que admite el servicio de memoria.

    • La lista de acceso IP de su clúster debe permitir el tráfico desde el plano de datos del motor de agentes de Atlas. Para obtener información sobre cómo agregar las direcciones IP del plano de datos, consulte la sección Configurar el acceso a la red de Atlas.

Nota

Si el clúster de Atlas vinculado no puede crear los índices de búsqueda y búsqueda vectorial que requiere la memoria, el motor del agente de Atlas detiene la implementación en la etapa Memory: waiting y podría agotar el tiempo de espera con un mensaje de error Error: context deadline exceeded.

1

Ejecuta el siguiente comando para generar un proyecto que solo utilice memoria. Reemplaza "My Project" con el nombre de tu proyecto.

agentengine create --memory-only --name "My Project"

El comando genera un directorio de proyecto que contiene solo un archivo project-config.yaml, sin ningún archivo agent.yaml ni espacio de trabajo.

2
  1. Ejecute el siguiente comando para registrar el proyecto. El comando imprimirá el nuevo ID del proyecto:

    agentengine project create "My Project"
  2. Seleccione el nuevo proyecto como activo. Reemplace <project-id> con el ID del proyecto impreso por el comando anterior:

    agentengine auth login --project-id <project-id>
3
  1. Abra el archivo project-config.yaml y configure sus nombres secretos y el proveedor de extracción en el bloque memory:.

  2. Ejecute los siguientes comandos para configurar los secretos necesarios para su proyecto:

    agentengine secret set MONGODB_URI --value "<value>" --project-id <project-id>
    agentengine secret set VOYAGE_API_KEY --value "<value>" --project-id <project-id>
    agentengine secret set ANTHROPIC_API_KEY --value "<value>" --project-id <project-id>

    Reemplace los siguientes valores de marcador de posición:

    • <value>: Valor del secreto.

      • MONGODB_URI: Cadena de conexión de su clúster Atlas.

      • VOYAGE_API_KEY: Tu clave de IA de viaje.

      • ANTHROPIC_API_KEY: Su clave de proveedor de LLM.

    • <project-id>: ID del objeto del proyecto devuelto por el comando agentengine project create. Este indicador es necesario porque el flujo de trabajo que solo utiliza memoria no incluye un archivo agents.yaml.

    Si utiliza un proveedor de LLM diferente, sustituya ANTHROPIC_API_KEY por el nombre de la clave correspondiente.

  3. Almacenar la configuración de memoria:

    agentengine memory configure

Nota

El aprovisionamiento falla si no se establece un secreto MONGODB_URI o si el servicio de memoria no puede acceder al clúster al que apunta la cadena de conexión. Si el aprovisionamiento falla, confirme que la lista de acceso IP del clúster incluye las direcciones IP del plano de datos de Atlas Agent Engine.

4

Inicie el entorno de ejecución de memoria y espere hasta que esté listo:

agentengine memory apply --wait
5
  1. Ejecute el siguiente comando para crear una cuenta de servicio para el proyecto:

    agentengine service-account create memory-service --project-id <project-id> --role PROJECT_OWNER

    Sustituya el marcador de posición <project-id> por el ID de su proyecto. Guarde el ID de cliente y el secreto de cliente que aparecen en la salida del comando. El motor del agente Atlas muestra el secreto de cliente solo una vez.

  2. Ejecute el siguiente comando para intercambiar el ID de cliente y el secreto de cliente por un token de acceso:

    export ACCESS_TOKEN=$(curl --fail-with-body --silent --show-error \
    --user <client-id> \
    --data grant_type=client_credentials \
    "https://agentengine.mongodb.com/api/v1/oauth/token" | jq -er .access_token)

    Reemplace el marcador de posición <client-id> con su ID de cliente. curl solicita el secreto del cliente sin mostrarlo.

    Tip

    El token de acceso es válido durante una hora. Solicite un nuevo token antes de que caduque el actual.

6

Instale el paquete agent-engine-sdk-memory desde el registro privado de la plataforma, utilizando el token de acceso que exportó en el paso anterior:

pip install agent-engine-sdk-memory \
--extra-index-url "https://ignore:$ACCESS_TOKEN@agentengine.mongodb.com/api/v1/packages/python/simple"
uv pip install agent-engine-sdk-memory \
--extra-index-url "https://ignore:$ACCESS_TOKEN@agentengine.mongodb.com/api/v1/packages/python/simple"

La URL utiliza el formato username:password. ignore es un nombre de usuario de marcador de posición, ya que el registro se autentica utilizando únicamente el token de acceso en el campo de contraseña. $ACCESS_TOKEN se resuelve al token de acceso que exportó en el paso anterior.

7

En tu aplicación, agrega el siguiente código para crear un cliente, vincular una identidad de usuario, registrar los turnos a medida que ocurren y recuperar el contexto relevante en conversaciones posteriores:

from agent_engine_sdk_memory import (
Memory,
MemoryRequestContext,
)
# Create the client using your access token.
memory = Memory(service_account_token="<your-access-token>")
# Bind the user and session for this conversation.
chat = memory.bind(
MemoryRequestContext(
user_id="user_1",
session_id="thread_123",
)
)
# Record turns as they happen.
chat.record_turn(
role="user",
content="I always fly out of Boston.",
)
chat.record_turn(
role="assistant",
content="Got it, Boston is saved as your home airport.",
)
# In a later conversation, recall what matters.
later = memory.bind(
MemoryRequestContext(
user_id="user_1",
session_id="thread_456",
)
)
context = later.build_context(
query="Where should the flight book from?"
)
hits = later.search("home airport", top_k=5)

Nota

Registrar un turno no genera inmediatamente una memoria a largo plazo. El servicio de memoria consolida los turnos en memorias a largo plazo de forma asíncrona. Un turno registrado puede no aparecer en los resultados search() o build_context() inmediatamente después de su escritura.

Para actualizar la configuración de memoria sin reaprovisionar el servidor, siga los siguientes pasos:

  1. Edita el bloque memory: en tu archivo project-config.yaml.

  2. Desde el directorio de tu proyecto, ejecuta agentengine memory configure para cargar la configuración de memoria.

  3. Ejecute agentengine memory apply para aplicar la configuración.

Para obtener información sobre cómo configurar la memoria en la plataforma, consulte Configurar la memoria.

Esta sección muestra cómo estructurar, iniciar y conectarse a una pila de memoria local.

Antes de comenzar este tutorial, asegúrese de tener los siguientes recursos:

  • Se instaló la interfaz de línea de comandos agentengine. Para obtener más información, consulte Instalación y autenticación.

  • Una clave API de Voyage AI para generar incrustaciones de memoria.

  • Una clave API para un proveedor de modelos de lenguaje grandes (LLM), como ANTHROPIC_API_KEY, si habilita la extracción en segundo plano.

  • pip o uv instalado para instalar el SDK de Python.

1

Ejecute el siguiente comando para generar un proyecto que solo utilice memoria para el desarrollo local. Reemplace "My Project" con el nombre de su proyecto:

agentengine create --memory-only --name "My Project"

El comando escribe un archivo project-config.yaml que establece memory_only en true y especifica el esquema de configuración de memoria.

Este comando no genera un archivo agent.yaml, un directorio agents/ ni código de ejecución del agente. No se puede combinar la bandera --memory-only con las banderas --template, --llm, --memory o --open-egress.

2

Crea un archivo .env en el directorio de tu proyecto y, a continuación, configura las siguientes variables en dicho archivo:

  • VOYAGE_API_KEY: Requerido para las incrustaciones de Voyage AI

  • Clave del proveedor LLM, como ANTHROPIC_API_KEY: Requerida si la extracción en segundo plano está habilitada en project-config.yaml.

No es necesario configurar la variable MONGODB_URI. El comando agentengine dev up aprovisiona y se conecta automáticamente al contenedor local de MongoDB incluido. Si prefiere usar una instancia externa de MongoDB, configure esta variable.

3

Desde el directorio del proyecto, ejecute el siguiente comando para iniciar la pila de memoria local:

agentengine dev up

Para un proyecto que solo utiliza memoria, este comando inicia únicamente los siguientes contenedores:

  • mongodb: Una instancia local de MongoDB compatible con Atlas

  • memory-server: El servicio de tiempo de ejecución de memoria

  • oe: El proxy del motor de orquestación local al que se conecta el SDK a través de

La salida del comando incluye las URL de los servicios locales oe y memory-server. Copie la URL oe para usarla en un paso posterior.

Utilice los siguientes comandos para administrar la pila local:

Comando
Descripción

agentengine dev status

Muestra el estado de la pila local.

agentengine dev logs

Transmite registros para todos los servicios. Pase memory-server como argumento para transmitir registros solo para ese servicio.

agentengine dev stop

Detiene la pila local sin eliminar los contenedores.

agentengine dev clean

Detiene la pila local y elimina los contenedores y volúmenes.

4

Ejecute el siguiente comando para instalar el paquete agentic-platform-memory:

pip install agentic-platform-memory
5

Navegue hasta el directorio de su aplicación Python. Este directorio puede ser diferente del directorio del proyecto que creó en el primer paso.

Luego, conéctese a la pila local agregando el siguiente código a su aplicación. Reemplace http://localhost:<oe-port> con la URL que copió de la salida del comando agentengine dev up.

from agentic_platform_memory import Memory, MemoryRequestContext
# Set the base_url to the local oe URL printed by "agentengine dev up".
memory = Memory(base_url="http://localhost:<oe-port>")
# Bind conversation identity.
session = memory.bind(
MemoryRequestContext(
user_id="user_123",
session_id="session_456",
)
)
# Record a turn.
session.record_turn(role="user", content="I prefer window seats on flights.")
# Build context.
context = session.build_context(
query="What seat preferences are known?",
enabled_sources={"stm", "semantic", "episodic"},
)
print(context.formatted_context)

Al ejecutar una pila de memoria local, es posible que vea un error MemoryRouteNotFoundError (404). Para solucionar este error, asegúrese de no establecer el valor project_id.

El SDK utiliza el valor project_id para identificar la ruta URL que recibe las solicitudes. Cuando project_id no está configurado, como ocurre con las conexiones locales, el SDK envía las solicitudes a una ruta que gestiona el proxy local oe. Cuando project_id está configurado, el SDK envía las solicitudes a una ruta específica del proyecto que solo gestiona el motor del agente Atlas alojado. Una pila local no gestiona esta ruta específica del proyecto, por lo que una solicitud enviada a esta ruta genera un error.

Si la variable de entorno AGENTIC_MEMORY_PROJECT_ID está obsoleta en su shell desde el flujo de trabajo alojado, el SDK solicita una ruta con ámbito de proyecto, que devuelve una MemoryRouteNotFoundError contra una pila local. Antes de conectarse a una pila local, elimine esta variable ejecutando el siguiente comando:

unset AGENTIC_MEMORY_PROJECT_ID

Para habilitar la memoria para un agente que se ejecuta en el motor de agentes Atlas, consulte la guía Agregar memoria a su agente.