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.
Menu Docs

Integre o MongoDB com o Class Agent SDK

Você pode integrar o MongoDB ao Class Agent SDK para persistir e retomar as sessões do agente entre os hosts. O . . . . O . . . . O . . . . O SDK do agente . é uma biblioteca Python da Athropic que executa o . . . . . .

O pacote claude-agent-sdk-mongodb-session-store fornece um adaptador de armazenamento de sessão apoiado MongoDB para conversas do SDK do. Uma sessão é um registro da conversa e das ações que um agente realiza, armazenado como entradas individuais. Por padrão, o Class SDK do agente armazena a transcrição no host que invoca o agente. O adaptador MongoDB também salva essas entradas no MongoDB, para que a transcrição seja mantida no host e no MongoDB. Você pode então retomar a sessão de outro host.

Você pode usar o adaptador para executar as seguintes tarefas:

  • Retomar uma sessão de um processo ou host diferente

  • Mantenha o histórico de sessões no mesmo sistema que os dados do aplicação

  • Query e histórico de sessões de auditar com ferramentas MongoDB

Para usar o adaptador, você deve ter os seguintes componentes disponíveis:

  • Python 3.10 ou posterior

  • Uma implantação do MongoDB que executa o MongoDB 7.0 ou posterior

  • Uma chave de API antrófica

Para saber como obter e definir sua chave de API antrófica, consulte o Início rápido do SDK do agente. O armazenamento de sessão não usa nem vê esta chave.

No seu terminal, execute o seguinte comando para instalar o adaptador e suas dependências:

uv add claude-agent-sdk-mongodb-session-store

Este comando instala o adaptador e suas dependências claude-agent-sdk e pymongo.

Defina sua string de conexão em uma variável de ambiente, como mostrado no exemplo a seguir. O adaptador usa o cliente que você cria, portanto, suas credenciais permanecem na configuração do cliente :

export MONGODB_URI="<connection-string>"

Por padrão, o Class SDK do agente mantém cada transcrição de sessão apenas no host onde o agente é executado. O exemplo a seguir cria um armazenamento de sessão MongoDB , inicializa seus índices e executa uma query. O adaptador mantém a transcrição da sessão para o MongoDB à medida que o agente é executado. O exemplo imprime o resultado e o ID da sessão que o SDK atribui.

import asyncio
import os
from pymongo import AsyncMongoClient
from claude_agent_sdk import ClaudeAgentOptions, ResultMessage, query
from claude_agent_sdk_mongodb_session_store import MongoDBSessionStore
async def main() -> None:
client = AsyncMongoClient(
os.environ["MONGODB_URI"],
readPreference="primary",
w="majority",
serverSelectionTimeoutMS=10_000,
timeoutMS=20_000,
)
store = MongoDBSessionStore(client=client, db_name="claude")
# Set up the database indexes that optimize the store's performance.
# This operation is idempotent, so you can run it on every startup.
await store.create_schema()
async for message in query(
prompt="Review this codebase and explain what it does.",
options=ClaudeAgentOptions(session_store=store),
):
if isinstance(message, ResultMessage) and message.subtype == "success":
print(message.result)
# The SDK assigns the session ID. Save it so that you can
# resume the session later.
print(f"Session ID: {message.session_id}")
await client.close()
asyncio.run(main())

Para retomar uma sessão, crie um objeto ClaudeAgentOptions e passe o objeto de armazenamento e o ID de sessão da sessão que você deseja retomar. O SDK retorna a ID da sessão no campo session_id da mensagem de resultado da primeira execução.

Você pode usar o seguinte trecho dentro de uma função assíncrona para retomar uma sessão. Substitua <session-id> pelo ID da sua sessão:

# Pass the same store and the session ID from the earlier run.
async for message in query(
prompt="Suggest how to improve this codebase.",
options=ClaudeAgentOptions(
session_store=store,
resume="<session-id>",
),
):
if isinstance(message, ResultMessage) and message.subtype == "success":
print(message.result)

O adaptador armazena cada entrada da transcrição como um documento e nunca exclui sessões por conta própria. Para remover sessões que não estão mais ativas, chame delete_inactive() em uma programação, como de uma tarefa do cron ou de um trigger agendado do Atlas :

from datetime import timedelta
# Delete every session with no new entries in the last 30 days.
deleted = await store.delete_inactive(timedelta(days=30))
print(f"Deleted {deleted} inactive sessions.")

Não exclua entradas individuais com um índice de duração ou um filtro delete_many() no tempo de entrada. A remoção das entradas mais antigas de uma sessão que ainda está em uso deixa uma transcrição que seu aplicação não pode retomar.

O armazenamento de sessão usa a configuração do seu AsyncMongoClient e não define opções próprias. Use as seguintes configurações de produção:

  • readPreference="primary": Lê as últimas entradas quando uma sessão é retomada

  • w="majority": Confirma um anexo somente após a maioria dos membros do conjunto de réplicas confirmá-lo

  • serverSelectionTimeoutMS=10_000: Impede que o cliente espere indefinidamente por um servidor disponível

  • timeoutMS=20_000: Impede que uma operação exceda o limite de 60segundos que o SDK do agente Class permite

Para saber mais sobre read preferences e write concerns, consulte a documentação de preferência de leitura e preocupação de gravação .

A loja foi projetada para um escritor por sessão. Evite executar vários processos de gravação na mesma sessão simultaneamente, pois gravadores adicionais podem causar falha nas operações de anexação. Conceda ao usuário do aplicação a função readWrite somente no banco de dados . Para saber mais sobre as funções do banco de dados , consulte a documentação de funções integradas.

Seu armazenamento de transcrições pode conter informações confidenciais. Cada entrada armazena solicitações de usuários, respostas de assistentes, entradas de ferramentas e resultados. Isso pode incluir conteúdo de arquivo, saída de comando, credenciais e dados pessoais. Use as etapas a seguir para proteger seus dados de transcrição:

  • Conecte-se por TLS para proteger os dados em trânsito.

  • Autentique-se com um usuário de banco de dados dedicado .

  • Conceda ao usuário dedicado a função readWrite somente no banco de dados .

  • Habilite a criptografia em descanso.

Para saber mais sobre como proteger dados com criptografia e autenticação, consulte a documentação Criptografia.

Para saber mais sobre o adaptador de armazenamento de sessão MongoDB e o SDK do agente Class, consulte os seguintes recursos:

Visite o repositório para manter-se atualizado sobre o adaptador e considere definir o repositório como principal.