Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Menu Docs

Usar o serviço de memória standalone

O serviço de memória do MongoDB Atlas Agent Engine pode ser executado como um serviço autônomo , separado de um sistema completo de agente . Use este guia para provisionar o servidor de memória para um projeto de memória e use o agent-engine-sdk-memory Python Software Development Kit (SDK) para gravar e recuperar o contexto de conversa de um aplicação externo.

Você pode executar o serviço de memória em um dos seguintes modos:

  • Hospedado: o servidor de memória é executado no Atlas Agent Engine e seu aplicação se conecta a ele usando um token de acesso à conta de serviço. Use este modo para um aplicação implementado .

  • Local: o servidor de memória é executado em contêineres locais do Docker gerenciados pela CLI agentengine, e seu aplicação se conecta diretamente a ele. Use este modo para desenvolver e testar localmente.

No modo hospedado, o SDK agent-engine-sdk-memory se conecta ao gateway de memória hospedada usando um token de acesso à conta de serviço. O gateway lê a organização e o projeto da conta de serviço. Para cada conversa, você passa valores user_id e session_id para o SDK para fazer o escopo da memória da conversa para esse usuário e sessão.

Dica

Para saber mais sobre memória, consulte o guia Memória do agente.

Os seguintes recursos estão disponíveis no modo hospedado :

  • record_turn(), build_context() e search() métodos do SDK para gravar e recuperar o contexto da conversa

  • Pesquisa semântica, capitular, processual e geoespacial

  • Operações diretas de criação e leitura, na forma de save_*, get_* ou list_*

  • Tipos de memória personalizados, usando os métodos genéricos save() e retrieve()

No modo local, o SDK agentic-platform-memory se conecta diretamente a um proxy local do mecanismo de orquestração (oe) que o comando agentengine dev up inicia em sua máquina. Você deve definir o valor base_url como oe URL local. Não defina project_id ou um token de acesso para a conexão.

Os seguintes recursos estão disponíveis no modo local :

  • record_turn(), build_context() e search() métodos do SDK para gravar e recuperar o contexto da conversa

  • Pesquisa semântica, capitular, processual e geoespacial

  • Operações diretas de criação e leitura, na forma de save_*, get_* ou list_*

Não é possível usar tipos de memória personalizados no modo local.

Para saber mais sobre os diferentes tipos de memória, consulte o guia Memória do agente.

Esta seção mostra como criar um projeto somente de memória hospedado no Atlas Agent Engine.

Antes de iniciar este tutorial, verifique se você tem os seguintes recursos:

  • A CLI agentengine instalada e autenticada. Para saber mais, consulte Instalar e autenticar.

  • Acesso ao Atlas Agent Engine executando o agentengine auth login.

  • Uma chave de API do Voyage AI para gerar incorporações de memória.

  • Uma chave de API para um fornecedor de grandes modelos de linguagem (LLM), como ANTHROPIC_API_KEY.

  • pip ou uv instalado para instalar o Python SDK.

  • Um Atlas Flex (requisito mínimo), M10, M20 ou cluster de camada posterior (recomendado) para armazenar seus dados de memória. Para provisionar um cluster, consulte Configurar recursos do Atlas .

    • Este guia requer uma string de conexão para seu Atlas cluster. Para saber como recuperar sua string de conexão, consulte o guia Conectar a um cluster.

    • Recomendamos implantar um cluster de nível M10 dedicado ou posterior para acomodar seus dados de memória e a contagem de índice à medida que eles crescem. Atlas Flex é a camada do cluster mais baixa que pode oferecer suporte ao serviço de memória.

    • A lista de acesso IP do seu cluster deve permitir o tráfego do plano de dados do Atlas Agent Engine. Para saber como adicionar os endereços IP do plano de dados, consulte a seção Configurar o acesso à rede Atlas .

Observação

Se o Atlas cluster vinculado não puder criar os índices de pesquisa e Vector Search que a memória exige, o Atlas Agent Engine interromperá a implantação no estágio Memory: waiting e poderá atingir o tempo limite com uma mensagem de erro Error: context deadline exceeded.

1

Execute o seguinte comando para estruturar um projeto somente de memória. Substitua "My Project" pelo nome do seu projeto .

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

O comando gera um diretório de projeto que contém apenas um arquivo project-config.yaml, sem nenhum arquivo agent.yaml ou espaço de trabalho.

2
  1. Execute o seguinte comando para registrar o projeto. O comando imprime o novo ID do projeto:

    agentengine project create "My Project"
  2. Selecione o novo projeto como ativo. Substitua <project-id> pelo ID do projeto impresso pelo comando anterior:

    agentengine auth login --project-id <project-id>
3
  1. Abra o arquivo project-config.yaml e defina seus nomes secretos e o provedor de extração sob o bloco memory:.

  2. Execute os seguintes comandos para definir os segredos necessários para seu projeto:

    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>

    Substitua os seguintes valores de espaço reservado:

    • <value>: valor do segredo.

      • MONGODB_URI: Connection string do seu Atlas cluster.

      • VOYAGE_API_KEY: Sua chave de IA Voyage.

      • ANTHROPIC_API_KEY: A chave do seu provedor LLM.

    • <project-id>: ID do objeto do projeto retornado pelo comando agentengine project create. Esse sinalizador é necessário porque o fluxo de trabalho somente de memória não inclui um arquivo agents.yaml.

    Substitua ANTHROPIC_API_KEY pelo nome da chave do seu provedor de LLM se você usar um provedor diferente.

  3. Armazene a configuração de memória:

    agentengine memory configure

Observação

O provisionamento falhará se você não definir um segredo MONGODB_URI ou se o serviço de memória não puder alcançar o cluster para o qual sua string de conexão aponta. Se o provisionamento falhar, confirme se a lista de acesso IP do cluster inclui os endereços IP do plano de dados do Atlas Agent Engine.

4

Inicie o tempo de execução da memória e aguarde até que esteja pronto:

agentengine memory apply --wait
5
  1. Execute o seguinte comando para criar uma conta de serviço para o projeto:

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

    Substitua o espaço reservado <project-id> pelo ID do projeto. Salve o ID do cliente e o segredo do cliente da saída do comando. O Atlas Agent Engine mostra o segredo do cliente apenas uma vez.

  2. Execute o seguinte comando para trocar o ID e o segredo do cliente por um token de acesso:

    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)

    Substitua o placeholder <client-id> pelo seu ID de cliente . curl solicita o segredo do cliente sem repeti-lo.

    Dica

    O token de acesso é válido por uma hora. Solicite um novo token antes que o atual expire.

6

Instale o pacote agent-engine-sdk-memory do registro privado da plataforma usando o token de acesso que você exportou na etapa 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"

O URL utiliza o formato username:password. ignore é um nome de usuário do espaço reservado, porque o registro autentica usando somente o token de acesso no campo de senha. $ACCESS_TOKEN for resolvido para o token de acesso que você exportou na etapa anterior.

7

Em seu aplicação, adicione o seguinte código para criar um cliente, vincular uma identidade de usuário, registrar as reviravoltas conforme elas acontecem e recuperar o contexto relevante em conversas 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)

Observação

Registrar uma curva não produz imediatamente uma memória de longo prazo. O serviço de memória consolida transforma-se em memória de longo prazo de forma assíncrona. Uma curva registrada pode não aparecer nos resultados search() ou build_context() imediatamente após a gravação.

Para atualizar a configuração de memória sem reprovisionar o servidor, execute as seguintes etapas:

  1. Edite o bloco memory: no seu arquivo project-config.yaml.

  2. No diretório do projeto , execute agentengine memory configure para fazer o upload da configuração de memória.

  3. Execute agentengine memory apply para aplicar a configuração.

Para saber como configurar a memória na plataforma, consulte Configurar memória.

Esta seção mostra como arquivar, iniciar e conectar a uma pilha de memória local.

Antes de iniciar este tutorial, verifique se você tem os seguintes recursos:

  • A CLI agentengine instalada. Para saber mais, consulte Instalar e autenticar.

  • Uma chave de API do Voyage AI para gerar incorporações de memória.

  • Uma chave de API para um fornecedor de grandes modelos de linguagem (LLM), como ANTHROPIC_API_KEY, se você habilitar a extração em background.

  • pip ou uv instalado para instalar o Python SDK.

1

Execute o seguinte comando para estruturar um projeto somente de memória para desenvolvimento local. Substitua "My Project" pelo nome do seu projeto :

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

O comando grava um arquivo project-config.yaml que define memory_only como true e especifica o esquema de configuração de memória.

Esse comando não gera um arquivo agent.yaml, um diretório agents/ ou código de tempo de execução do agente . Você não pode combinar o sinalizador --memory-only com os sinalizadores --template, --llm, --memory ou --open-egress.

2

Crie um arquivo .env no seu diretório de projeto e, em seguida, defina as seguintes variáveis no arquivo:

  • VOYAGE_API_KEY: necessário para incorporações do Voyage AI

  • Chave do provedor LLM, como ANTHROPIC_API_KEY: necessária se a extração em segundo plano estiver ativada em project-config.yaml

Você não precisa definir a variável MONGODB_URI. O comando agentengine dev up provisiona e conecta automaticamente ao container MongoDB local agrupado. Se você quiser usar uma instância externa do MongoDB , defina esta variável.

3

No diretório do projeto , execute o seguinte comando para iniciar a pilha de memória local:

agentengine dev up

Para um projeto somente de memória, este comando inicia somente os seguintes containers:

  • mongodb: Uma instância MongoDB compatível com Atlas local

  • memory-server: O serviço de tempo de execução da memória

  • oe: O proxy do Mecanismo de Orquestração local pelo qual o SDK se conecta

A saída do comando inclui as URLs para os serviços locais oe e memory-server. Copie a URL oe para usar em uma etapa futura.

Use os seguintes comandos para gerenciar a pilha local:

Comando
Descrição

agentengine dev status

Mostra o status da pilha local.

agentengine dev logs

Streams logs para todos os serviços. Passe memory-server como um argumento para transmitir registros somente para esse serviço.

agentengine dev stop

Interrompe a pilha local sem remover os contêineres.

agentengine dev clean

Interrompe a pilha local e remove contêineres e volumes.

4

Execute o seguinte comando para instalar o pacoteagentic-platform-memory :

pip install agentic-platform-memory
5

Navegue até o diretório do aplicação Python. Este diretório pode ser separado do diretório do projeto que você criou na primeira etapa.

Em seguida, conecte-se à pilha local adicionando o seguinte código ao seu aplicação. Substitua http://localhost:<oe-port> pela URL que você copiou da saída do 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)

Ao executar uma pilha de memória local, você poderá ver um erro MemoryRouteNotFoundError (404). Para resolver esse erro, certifique-se de não definir o valor project_id.

O SDK usa seu valor project_id para identificar o caminho da URL que recebe solicitações. Quando project_id não está definido, como é o caso das conexões locais, o SDK envia solicitações para um caminho que o proxy oe local atende. Quando project_id está definido, o SDK envia solicitações para um caminho com escopo de projeto que somente o Atlas Agent Engine hospedado atende. Uma pilha local não atende ao caminho do escopo do projeto, portanto, uma solicitação enviada para esse caminho gera um erro.

Se uma variável de ambiente AGENTIC_MEMORY_PROJECT_ID obsoleta for definida em seu shell a partir do fluxo de trabalho hospedado, o SDK solicitará uma rota com escopo de projeto, que retornará um MemoryRouteNotFoundError em uma pilha local. Antes de se conectar a uma pilha local, desmarque essa variável executando o seguinte comando:

unset AGENTIC_MEMORY_PROJECT_ID

Para ativar a memória para um agente que é executado no Atlas Agent Engine, consulte o guia Adicionar memória ao seu agente.