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.

Comece a usar a integração do Agno com o MongoDB

Você pode integrar o MongoDB com o Agno para configurar uma Base de Conhecimento pesquisável e um histórico de conversas persistente para seus agentes de IA. Este tutorial demonstra como configurar um agente Agno para usar o MongoDB para recuperação de conhecimento e armazenamento de sessão e, em seguida, usar essa configuração para criar um assistente de culinária. Especificamente, você executa as seguintes tarefas:

  1. Configure seu ambiente.

  2. Configure o MongoDB como uma Base de Conhecimento do Agno.

  3. Crie um assistente que responda a perguntas de seus documento e lembre-se de turnos anteriores na conversa.

  4. Execute o arquivo e revise a saída.

Agno é um framework Python de código aberto para construir agentes de IA multimodais. Um agente Agno é composto por componentes modulares, incluindo uma base de conhecimento opcional e um banco de dados opcional , que você configura independentemente e passa para o mesmo objetoAgent .

O MongoDB fornece dois desses componentes, que você pode usar importando as seguintes classes:

  1. MongoVectorDb classe: Implementar a interface de banco de dados vetorial do Agno com o MongoDB pesquisa vetorial, permitindo que um agente recupere documentos relevantes de uma coleção do MongoDB

  2. MongoDb classe: Implementar a interface de banco de dados do Agno, persistindo sessões de agente, memórias e métricas como documentos em coleções do MongoDB

Dica

O Agno nomeia ambas as classes do MongoDB como MongoDb, portanto, ele exporta a classe de banco de dados vetorial como MongoVectorDb para evitar uma colisão. Para saber mais, consulte Integrar o MongoDB com o Agno Framework.

Este tutorial usa ambos os componentes e armazena seus dados na mesma implantação do MongoDB.

Para concluir este tutorial, você deve ter os seguintes recursos:

  • Um dos seguintes tipos de cluster MongoDB :

    • Um cluster do Atlas executando a versão do MongoDB 6.0.11, 7.0.2, ou posterior. Certifique-se de que seu endereço IP esteja incluído na lista de acesso do seu projeto Atlas.

    • Uma implantação local do Atlas criada usando Python e Docker. Instale atlas-local-lib-py (pip install atlas-local-lib-py) para criar e gerenciar implantações locais programaticamente. Para saber mais, consulte o repositório atlas-local-lib-py.

    • Um cluster MongoDB Community com Search e pesquisa vetorial instalados.

  • Uma chave de API da OpenAI. Você deve ter uma conta da OpenAI com créditos disponíveis para solicitações de API. Para aprender mais sobre como registrar uma conta OpenAI, consulte o website de API OpenAI.

  • Python v3.9 ou posterior.

1

Execute os seguintes comandos no seu terminal para criar um novo diretório denominado agno-mongodb-project e instalar as dependências necessárias:

mkdir agno-mongodb-projectcd agno-mongodb-projectpip install agno pymongo openai python-dotenv pypdf
2

No seu diretório agno-mongodb-project, crie um arquivo .env e adicione o seguinte código:

OPENAI_API_KEY="<openai-api-key>"MONGODB_URI="<connection-string>"

Substitua <connection-string> pela string de conexão do seu cluster do Atlas ou da implantação local do Atlas.

Sua string de conexão deve usar o seguinte formato:

mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net

IMPORTANTE: certifique-se de que a string de conexão inclua as credenciais do usuário de banco de dados. Para aprender mais sobre como localizar sua string de conexão, consulte Conectar-se a um cluster por meio de bibliotecas de clientes.

3

No seu diretório agno-mongodb-project, crie um arquivo chamado main.py. Adicione o seguinte código a este arquivo para carregar suas variáveis de ambiente:

import osfrom dotenv import load_dotenvfrom agno.agent import Agentfrom agno.db.mongo import MongoDbfrom agno.knowledge.knowledge import Knowledgefrom agno.models.openai import OpenAIChatfrom agno.vectordb.mongodb import MongoVectorDb load_dotenv()

Em etapas futuras, você adicionará código a este arquivo para criar sua Base de Conhecimento e assistente.

Nesta seção, você configura o MongoDB como o armazenamento de vetores para uma Base de Conhecimento Agno, armazena dados nele e executa uma query de pesquisa semântica nele.

1

Adicione o seguinte código para configurar um vector store baseado em MongoDB para sua Base de Conhecimento:

vector_db = MongoVectorDb( collection_name="agent_knowledge", db_url=os.environ["MONGODB_URI"], database="agno",) knowledge = Knowledge(vector_db=vector_db)

O código anterior cria uma instância de MongoVectorDb e a passa para o parâmetro vector_db de um objeto Knowledge. Como esta é a primeira vez que você usa a coleção agent_knowledge, o Agno a cria junto com um índice de pesquisa vetorial do MongoDB chamado vector_index_1.

O índice deve levar cerca de um minuto para criar. Enquanto constrói, o índice está em um estado de sincronização inicial. Quando terminar de ser criado, você poderá começar a consultar os dados em sua coleção.

2

Adicione o código a seguir ao seu arquivo main.py para carregar um arquivo PDF contendo receitas tailandesas na sua Base de Conhecimento:

knowledge.insert( name="Recipes", url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",)

O Agno baixa o arquivo, faz a divisão dele em partes, gera um embedding para cada parte com o embedder padrão da OpenAI e grava os resultados na sua coleção.

Dica

Para inspecionar os documentos armazenados, navegue pela coleção agno.agent_knowledge na IU do Atlas. Cada documento tem um campo content com uma parte do texto da receita e um campo embedding que contém o vetor gerado. Para aprender mais, veja Visualizar coleções.

3

Adicione o seguinte código ao seu arquivo main.py para fazer query no banco de dados vetorial da sua Base de Conhecimento diretamente, antes de conectá-lo a um agente. Este exemplo pesquisa as três partes mais relevantes para uma pergunta sobre curry verde:

results = vector_db.search(query="How do I make a green curry?", limit=3) for doc in results: print(f"[{doc.name}] {doc.content[:80]}")

Os resultados incluem as partes da receita que são mais semanticamente relevantes para a query, classificadas por pontuação de similaridade.

Nesta seção, você combina sua Base de Conhecimento com um banco de dados MongoDB para criar um assistente completo. O agente recupera documentos relevantes da sua Base de Conhecimento para responder a perguntas e persiste seu histórico de conversas no MongoDB para que possa consultar turnos anteriores.

1

Adicione o seguinte código ao seu arquivo main.py para configurar uma instância MongoDb para armazenamento de sessão e, em seguida, crie um agente que use esse armazenamento de sessão e a base de conhecimento configurada na seção anterior:

db = MongoDb( db_url=os.environ["MONGODB_URI"], db_name="agno",) agent = Agent( model=OpenAIChat(id="gpt-4o"), knowledge=knowledge, db=db, search_knowledge=True, add_history_to_context=True, num_history_runs=5, instructions=[ "You are a helpful cooking assistant.", "Answer questions using only the recipes in your knowledge base.", "If the knowledge base does not contain a relevant answer, say so clearly.", ],)
2

Adicione o seguinte código ao seu arquivo main.py para enviar duas mensagens ao agente:

SESSION_ID = "cooking-session-001" # First turnagent.print_response( "My favorite Thai dish is massaman curry.", session_id=SESSION_ID,) # Second turnagent.print_response( "How do I make my favorite dish?", session_id=SESSION_ID,)

O agente recupera as partes de receita mais relevantes da sua Base de Conhecimento a cada turno. Como ambas as chamadas usam o mesmo valor session_id, o Agno também recupera dados da resposta anterior. O Agno recupera os metadados da sessão da coleção agno_sessions e o conteúdo da mensagem da coleção agno_runs. Se você omitir session_id ou passar um valor diferente na segunda chamar, o Agno inicia uma nova sessão e o agente não tem registro do primeiro turno.

Para executar o arquivo main.py, execute o seguinte comando do seu diretório agno-mongodb-project:

python main.py

Se o comando for executado com êxito, a saída se assemelha ao seguinte:

INFO Connected to MongoDB successfully.INFO Creating collection 'agent_knowledge'.INFO Creating search index 'vector_index_1'.INFO Search index 'vector_index_1' is ready.INFO Search index 'vector_index_1' created successfully.INFO Adding content from URL https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdfINFO Upserting 14 documents # Output from the vector_db.search() call[Recipes] INGREDIENTS (One serving) 150 grams chicken, cut into bite-size pieces 50 grams[Recipes] Thai SELECT Exotic, Healthy, Delicious Dining-Thai Style Thai food has rapidly g[Recipes] Directions: 1. Roughly pound the garlic with bird's eye chilies in a mortar. Add # Output from the agent.print_response() calls┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃ My favorite Thai dish is massaman curry. ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┏━ Response (gpt-4o) ────────────────────────────────────────────┓┃ Great choice — I found a recipe in the knowledge base for ┃┃ Massaman Gai (Massaman Curry with Chicken and Potatoes). ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃ How do I make my favorite dish? ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┏━ Response (gpt-4o) ────────────────────────────────────────────┓┃ Here's how to make Massaman Gai (Massaman Curry with Chicken ┃┃ and Potatoes) from the knowledge base: ┃┃ **Ingredients** ┃┃ - 300 grams chicken rump ┃┃ - 80 grams Massaman curry paste ┃┃ - 100 grams coconut cream ┃┃ - 300 grams coconut milk ┃┃ - 250 grams chicken stock ┃┃ - 50 grams roasted peanuts ┃┃ - 200 grams potatoes, chopped into large chunks ┃┃ - 100 grams onion, chopped into large chunks ┃┃ ... ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Para aprender mais sobre as classes MongoVectorDb e MongoDb, incluindo sua referência completa de parâmetros e métodos, consulte Integrar o MongoDB ao Agno Framework.

Para aprender mais sobre o índice de pesquisa vetorial do MongoDB que o Agno cria em sua coleção, consulte Criar um índice de pesquisa vetorial do MongoDB.