Sistemas multiagentes com AutoGen e MongoDB
Avalie esse Artigo
Atualmente, a AI agente não é mais um termo novo para definir as pessoas interessados em AI AI). A Agentic AI é um sistema de inteligência artificial orientado por objetivos que decompõe tarefas complexas, toma decisões autônomas e executa ações usando ferramentas disponíveis ou componentes do sistema. Esses sistemas sãocaracterizados como agentes devido à sua capacidade de perceber o contexto, raciocinar sobre ações potenciais e executar essas ações para atingir objetivos específicos.
Existem vários tipos diferentes de padrões de design de AI de agentes que estão emergindo, sendo os mais notáveis:
- Agentes específicos de tarefas: são projetados para se destacar em uma tarefa ou domínio específico, como tradução de idiomas, reconhecimento de imagens ou análise financeira.
- Sistemas de agente único: consistem em um único agente de AI com acesso a várias ferramentas e componentes do sistema. O agente é responsável por entender a tarefa, planejar a abordagem e utilizar as ferramentas apropriadas para atingir o objetivo.
- Agentes hierárquicos: esses sistemas têm uma estrutura em que os agentes de nível superior delegam tarefas a agentes de nível inferior, imitando hierarquias organizacionais.
E se você tivesse não apenas um agente, mas vários agentes inteligentes em um sistema? Como em um cluster do Kubernetes, os agentes são orquestrados como contêineres para resolver problemas pronunciados. Cada agente, muito parecido com um pod do Kubernetes, é projetado para uma tarefa específica e colaborar para atender à demanda.
Estamos muito satisfeitos em anunciar que o MongoDB contribui para o framework do AutoGen, permitindo que os usuários utilizem o MongoDB como um agente de geração aumentada de recuperação (RAG) no AutoGen. Essa integração habilita desenvolvedores e Cientistas de Dados a aproveitar o poder dos recursos de banco de banco de dados escaláveis e flexíveis do MongoDB na criação de sistemas multiagentes de AI generativa.
O que é abordado neste artigo:
- Integração da estrutura de vários agentes AutoGen com MongoDB
- Criação de um sistema de agentes Inovador semelhante a um ambiente Kubernetes
- Benefícios de sistemas multiagentes em aplicativos de AI
- Principais capacidades e funcionalidades do AutoGen
- Vantagens do MongoDB para gerenciamento robusto de dados em sistemas multiagentes
- Insights práticos sobre a combinação dessas tecnologias para obter soluções aprimoradas de AI
Os sistemas multiagentes podem ser comparados à estrutura da organização humana, como uma equipe de alto desempenho colaborar em um projeto complexo de desenvolvimento de produto. Em tal equipe, diversas funções se reúnem, cada uma contribui com experiência especializada para garantir o sucesso do produto. Esse mesmo princípio de colaboração é espelhado em sistemas de AI multiagentes, em que agentes distintos de AI , cada um com capacidades únicas, trabalham juntos para alcançar um objetivo comum.
- Gerente de produtos: define a visão, a estratégia e o roteiro do produto para garantir o alinhamento com as necessidades do mercado e os objetivos de negócios
- Desenvolvedor: implementa recursos, garantindo que o aplicação seja robusto e pronto para produção
- Gerente de garantia de qualidade: Testa o produto para garantir a confiabilidade e a qualidade
Garantir a colaboração entre agentes aprimora sua funcionalidade e amplia seu alcance de aplicativos. Quando os agentes trabalham juntos, eles podem lidar com tarefas complexas com mais eficiência do que um único agente por conta própria. Isso ocorre porque a colaboração entre agentes permite a diferenciação e a divisão de trabalho, permitindo que cada agente se concentre em seus pontos fortes enquanto compensa as limitações de outros.
Antes de explorar a integração do AutoGen e do MongoDB , é importante discutir as estruturas de destaque usadas para construir agentes de AI e sistemas de agentes. Isso é particularmente relevante porque o espaço agente de AI pode ser considerado em sua fase inicial. O exame dessas estruturas ajudará a destacar as principais vantagens do AutoGen para seu caso de uso específico.
Várias estruturas ganharam popularidade pelo desenvolvimento de sistemas multiagentes, cada uma oferecendo recursos e benefícios exclusivos.
A Microsoft introduziu a estrutura AutoGen para simplificar o desenvolvimento de aplicativos de vários agentes. O AutoGen foi projetado para orquestrar agentes de grandes modelos de linguagem (LLM) de forma eficaz. Ele fornece uma estrutura de conversação multiagente como uma abstração de alto nível, facilitando para aplicativos LLM de próxima geração com colações multiagente.
- Orquestração simplificada: o AutoGen simplifica o processo de gerenciamento de fluxos de trabalho envolvendo vários agentes.
- abstração de alto nível: oferece uma abordagem estruturada para gerenciar interações e fluxos de trabalho de agente .
- Código aberto: permite que os desenvolvedores personalizem e estendam seus recursos para atender às necessidades específicas de aplicação .
A estrutura CrewAI aproveita os princípios do trabalho em equipe, onde:
- Os agentes são inicializados com atributos e capacidades específicas.
- As tarefas têm descrições detalhadas dos objetivos e resultados esperados.
- As ferramentas oferecem aos agentes a capacidade de executar várias ações com eficiência.
- Os processos ditam o fluxo de trabalho estratégico, orientando como a equipe aborda e conclui as tarefas.
A LangGraph emprega uma estratégia de "dividir e conquiser" para a colaboração de vários agentes. Essa estratégia cria agentes especializados para cada tarefa ou domínio e encaminha as tarefas para o "expert" apropriado. Essa abordagem garante que tarefas complexas sejam gerenciadas de forma eficaz, superando as limitações de um único agente, mesmo modelos poderosos como GPT-4.
O LangGraph visualiza as interações e fluxos de trabalho dos agente , facilitando a otimização de processos e a identificação de melhorias. Isso a torna uma estrutura ideal para desenvolver sistemas robustos de vários agentes que podem enfrentar com eficiência tarefas complexas e multifacetadas.
Depois de explorar as estruturas que facilitam a colaboração entre vários agentes, a próxima seção se concentrará na integração do AutoGen com o MongoDB. Essa integração promessas para aprimorar as capacidades dos sistemas multiagentes aproveitando o armazenamento de vetores do MongoDB, os recursos NoSQL, a escalabilidade, a flexibilidade e o manuseio de dados em tempo real, tornando-a uma escolha ideal para oferecer suporte a estruturas multiagentes.
O AutoGen é uma estrutura de código aberto projetada para simplificar a criação e o gerenciamento de agentes de AI , permitindo que eles cooperem de forma eficaz em tarefas complexas. Ao simplificar os fluxos de trabalho, a AutoGen otimiza o desenvolvimento de aplicativos avançados de LLM, integrando conjuntos de ferramentas e automatizando a execução de código em sua arquitetura.
- Um dos principais pontos fortes do AutoGen está em suas estruturas de conversação flexíveis, suportando uma variedade de modos de interação, como diálogos de dois agentes, chats sequenciais e discussões em grupo. Essa adaptabilidade permite que os desenvolvedores criem interações entre agente que atendam aos requisitos exclusivos de diferentes tarefas, fornecendo fluxos de comunicação personalizáveis para uma execução mais eficiente das tarefas.
- Um recurso importante do AutoGen é sua capacidade de humanos no loop, que permite supervisão e intervenção humanos em tempo real. Essa abordagem aprimora a tomada de decisões, melhora a precisão do sistema e aumenta a adaptabilidade da estrutura para lidar com desafios em constante mudança, garantindo resultados mais confiáveis.
Em sistemas multiagentes, o MongoDB se destaca como uma poderosa solução de gerenciamento de dados. O Atlas Vector Search é particularmente adequado para as demanda de muitos dados de ambientes orientados por IA. O MongoDB permite que incorporações vetoriais sejam armazenadas junto com metadados e dados de origem, com sincronização automática com o índice vetorial, garantindo que o banco de dados de dados permaneça atualizado com o mínimo esforço.
- O Atlas Vector Search do MongoDB permite a query contínua de dados vetoriais e dados tradicionais por meio da MongoDB Query API, oferecendo uma experiência de query unificada e eficiente. Seus recursos de pesquisa híbrida combinam pesquisas tradicionais de palavras-chave com pesquisas avançadas de vetor semântica, fornecendo resultados mais contextualmente precisos. Essa abordagem dupla garante que as pesquisas não sejam apenas relevantes, mas também abrangentes, tornando-a ideal para ambientes de dados complexos.
- A camada de cache semântica do MongoDB melhora ainda mais o desempenho, especialmente em aplicativos RAG. Ao armazenar em cache resultados de query com base em seu significado semântica, o MongoDB reduz os cálculos redundantes, acelerando os tempos de resposta e, ao mesmo tempo, fornece interações mais relevantes e sensíveis ao contexto.
- Além disso, a plataforma Atlas totalmente gerenciada do MongoDB elimina a necessidade de gerenciamento manual de infraestrutura, permitindo que os desenvolvedores se concentrem na criação de aplicativos. Sua infraestrutura dedicada de nós de pesquisa melhora a eficiência dos recursos, aumenta o desempenho e garante alta disponibilidade, tornando o MongoDB uma solução escalável e confiável para lidar com as necessidades complexas de sistemas multiagentes.
Com esses recursos, o MongoDB é uma ótima opção para atender às necessidades de uso intensivo de dados de sistemas multiagentes movidos a IA, garantindo alto desempenho, escalabilidade e relevância em aplicativos complexos.
Nesta seção, exploraremos como integrar o AutoGen ao MongoDB para construir um poderoso sistema de geração aumentada de recuperação usando dois agentes distintos.
Orientaremos você na configuração do ambiente necessário, na configuração dos agentes e na ilustrando como uma pergunta é processada pelo agente de recuperação , que obtém informações do armazenamento de vetores MongoDB .
Esses dados são então usados para fornecer uma resposta ampliada ao usuário por meio do agente proxy do usuário . Aqui está uma explicação passo a passo do processo de configuração e implementação:
Antes de codificar, é essencial configurar o ambiente com todas as dependências necessárias. Isso envolve a criação de um ambiente Conda e a instalação das bibliotecas necessárias.
1. Configure o ambiente Conda:
Comece criando um novo ambiente Conda especificamente para este projeto. Isso garante um espaço de trabalho limpo e isolado.
1 conda create -n pyautogen python=3.12 2 conda activate pyautogen
Python 3.12: verifique se você tem a versão correta do Python, pois ela oferece suporte aos recursos necessários para nossa implementação.
2. Instale as bibliotecas necessárias: em seguida, instale as bibliotecas necessárias, incluindo o autogen para implementação de agente e PyMongo para interação com o MongoDB .
1 !pip install pyautogen pymongo sentence_transformers
pyautogen
: essa biblioteca fornece as ferramentas necessárias para criar e gerenciar agentes dentro do nossoframework
.pymongo
: essencial para conectar e interagir com bancos de dados MongoDB .Sentence_transformers
: este pacote é crucial para o uso de vetores do MongoDB, permitindo pesquisa e recuperação eficientes.
3. Instalar dependências adicionais: Instale pacotes adicionais exigidos pelo AutoGen para funcionalidade e compatibilidade aprimoradas.
1 !pip install ipython markdownify pypdf chromadb
ipython
: Fornece um ambiente Python interativo, facilitando testes e depuraçãomarkdownify
: Converte conteúdo HTML em Markdown; útil para processar documentospypdf
: Permite o manuseio de documento PDF, que é crucial para recuperar texto de vários formatos de arquivochromadb
: pacote necessário para a dependência AutoGen
Com o ambiente preparado, importamos as bibliotecas e módulos necessários para nossa implementação. O pacote
autogen
é central para esta configuração, ao lado de agentes específicos para tarefas de recuperação. Usando variáveis de ambiente, também lidamos com informações confidenciais, como chaves de API e connection strings do MongoDB .Observação: siga as etapas do MongoDB para obter a string de conexão a partir da interface do usuário do Atlas . Armazene o URI com segurança em seu ambiente de desenvolvimento depois de configurar o banco de dados de dados e obter o URI de conexão do Atlas cluster.
1 import os 2 import getpass 3 4 os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:") 5 os.environ["MONGODB_URI"] = getpass.getpass("MongoDB URI:")
Configuração do AutoGen e do MongoDB Em seguida, configuramos o modelo e o MongoDB, garantindo o acesso seguro e a compatibilidade com nosso banco de banco de dados vetorial.
- Lista de configurações do Autogen: Definimos o modelo a ser usado, especificando o
gpt-3.5-turbo-0125
com sua chave de API. Essa configuração garante que pelo menos um modelo esteja configurado para interação do agente . - Conexão MongoDB : o URI MongoDB é recuperado de variáveis de ambiente, protegendo o acesso ao banco de banco de dados.
- Formatos de arquivo: os formatos de arquivo aceitos para recuperação de documento são impressos para confirmar a compatibilidade com o banco de banco de dados vetorial.
1 import json 2 import os 3 4 import autogen 5 from autogen.agentchat.contrib.retrieve_assistant_agent import RetrieveAssistantAgent 6 from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent 7 8 # Accepted file formats for that can be stored in 9 # a vector database instance 10 from autogen.retrieve_utils import TEXT_FORMATS 11 12 config_list = [{"model": "gpt-3.5-turbo-0125", "api_key": os.environ["OPENAI_API_KEY"], "api_type": "openai"}] 13 assert len(config_list) > 0 14 print("models to use: ", [config_list[i]["model"] for i in range(len(config_list))]) 15 MONGODB_URI = os.environ["MONGODB_URI"] 16 17 print("Accepted file formats for `docs_path`:") 18 print(TEXT_FORMATS)
O
RetrieveAssistantAgent
é inicializado como um "assistente", atuando como a interface principal para ajudar os usuários na recuperação de informações.- agente assistente : esse agente é configurado para interagir com os usuários, utilizando a configuração do modelo especificada.
1 assistant = RetrieveAssistantAgent( 2 name="assistant", 3 system_message="You are a helpful assistant.", 4 llm_config={ 5 "timeout": 600, 6 "cache_seed": 42, 7 "config_list": config_list, 8 }, 9 )
O
RetrieveUserProxyAgent
é configurado para facilitar a comunicação entre o usuário e o assistente. Esse agente é chamado MongoRAGagent
e opera de forma autônoma sem exigir entrada humana.- modo de entrada humana : definido como "Nunca", permitindo que o agente funcione de forma independente.
- Configuração do banco de banco de dados vetorial: As configurações do MongoDB , incluindo string de conexão, nome do banco de dados de dados, nome da collection e gerenciamento de índices, são definidas. Os tempos de espera para a preparação do índice são configurados para otimizar o desempenho da recuperação.
- Ingestão de documentos: os caminhos para documentos são especificados, com tipos de texto personalizados e tamanhos de token de chunk garantindo um processamento eficiente.
1 ragproxyagent = RetrieveUserProxyAgent( 2 name="MongoRAGagent", 3 human_input_mode="NEVER", 4 max_consecutive_auto_reply=3, 5 retrieve_config={ 6 "task": "code", 7 "docs_path": [ 8 "https://github.com/mongodb-partners/maap-framework/blob/main/README.md", 9 os.path.join(os.path.abspath(""), "..", "website", "docs"), 10 ], 11 "custom_text_types": ["non-existent-type"], 12 "chunk_token_size": 2000, 13 "model": config_list[0]["model"], 14 "vector_db": "mongodb", # MongoDB Atlas database 15 "collection_name": "demo_collection", 16 "db_config": { 17 "connection_string": os.environ["MONGODB_URI"], # MongoDB Atlas connection string 18 "database_name": "test_db", # MongoDB Atlas database 19 "index_name": "vector_index", 20 "wait_until_index_ready": 120.0, # Setting to wait 120 seconds or until index is constructed before querying 21 "wait_until_document_ready": 120.0, # Setting to wait 120 seconds or until document is properly indexed after insertion/update 22 }, 23 "get_or_create": True, # set to False if you don't want to reuse an existing collection 24 "overwrite": False, # set to True if you want to overwrite an existing collection, each overwrite will force a index creation and reupload of documents 25 }, 26 code_execution_config=False, # set to False if you don't want to execute the code 27 )
A etapa final envolve iniciar e gerenciar o fluxo de conversa entre os agentes e o usuário.
- Redefinir o assistente: Antes de iniciar uma nova conversa, o assistente é redefinido para limpar qualquer contexto anterior e garantir respostas precisas.
- Declaração do problema: Um problema de código é definido - "How does the MAAP framework handle data ingestion? "
- Iniciar chat: o
ragproxyagent
gera um prompt e aciona o assistente. A conversa continua até que uma condição de encerramento seja atendida, como a ausência de blocos de código ou a saída do usuário.
1 assistant.reset() 2 3 code_problem = "How does the MAAP framework handle data ingestion?" 4 chat_result = ragproxyagent.initiate_chat(assistant, message=ragproxyagent.message_generator, problem=code_problem)
Os resultados das operações são os seguintes:
1 -------------------------------------------------------------------------------- 2 assistant (to MongoRAGagent): 3 4 The MAAP framework handles data ingestion by providing support for multiple types of data loaders tailored to handle specific data sources such as web pages, PDF files, sitemaps, DOCX documents, and Confluence spaces. These data loaders are configured with parameters like source paths and chunking details and are added to a data loaders array for processing. The process of ingesting data involves configuring the application, running the server, and starting the UI client application to interact with the data through a web interface. 5 6 --------------------------------------------------------------------------------
A integração do AutoGen com o MongoDB permite a criação de sistemas avançados de vários agentes, combinando a orquestração de agente flexíveis com recursos avançados de gerenciamento de dados e pesquisa vetorial. Os desenvolvedores podem criar soluções de AI agentes sofisticadas, escaláveis e eficientes aproveitando os recursos flexíveis de orquestração de agente do AutoGen e os robustos recursos de gerenciamento de dados do MongoDB.
Esta poderosa combinação permite:
- Colaboração aprimorada entre agentes de AI , imitando equipes humanos de alto desempenho.
- Tratamento eficiente de tarefas complexas e multifacetadas por meio de funções de agente especializados.
- Recuperação e utilização eficientes de informações relevantes por meio dos recursos de pesquisa vetorial do MongoDB.
- Melhoria na conscientização do contexto e na relevância da resposta nas interações de AI .
À medida que o espaço de AI agente continua a desenvolver-se, frameworks como o AutoGen, juntamente com os sistemas avançados de armazenamento e recuperação de dados do MongoDB, permitem o desenvolvimento de sistemas multiagentes mais inteligentes, adaptáveis e capazes. Essa integração permite que os desenvolvedores criem soluções de AI que possam lidar com desafios cada vez mais complexos em vários domínios.
Seguindo este guia de implementação, você pode integrar essas ferramentas para criar agentes inteligentes capazes de lidar com tarefas complexas. Todo o código apresentado neste artigo está disponível neste repositório doGithub .
1. Qual é o principal benefício da integração do AutoGen com o MongoDB?
A integração combina a orquestração de vários agentes do AutoGen com os poderosos recursos de gerenciamento de dados e pesquisa vetorial do MongoDB. Isso melhora o desempenho dos sistemas de geração aumentada de recuperação (RAG), permitindo que os agentes recuperem e processem com eficiência grandes quantidades de dados em tempo real, melhorando a tomada de decisões e a execução de tarefas.
2. Como o Atlas Vector Search do MongoDB melhora o desempenho do agente ?
O Atlas Vector Search do MongoDB permite que os agentes realizem pesquisas tradicionais baseadas em palavras-chave e pesquisas semânticas de vetores, garantindo resultados mais contextualmente precisos e relevantes. Esse recurso de pesquisa dupla permite que os agentes lide melhor com queries complexas, tornando as interações mais eficientes e eficazes.
3. Onde posso encontrar a documentação oficial para a integração do AutoGen e MongoDB ?
4. Onde posso aprender mais sobre o MongoDB Atlas e seus recursos de pesquisa vetorial?
Para obter informações detalhadas sobre o MongoDB Atlas e seus recursos de pesquisa vetorial, você pode acessar a documentação oficial do MongoDB, que aborda suas poderosas ferramentas de gerenciamento de dados e funcionalidades de pesquisa híbrida.
5. Que tipos de aplicativos podem se beneficiar da integração do AutoGen e MongoDB ?
Essa integração pode beneficiar aplicativos que exigem automação de processamento de dados, geração aumentada de recuperação e colaboração de vários agentes, como sistemas de suporte ao cliente orientados por IA, assistentes de pesquisa e plataformas inteligentes de análise de dados. A estrutura é particularmente adequada para ambientes com alta demanda de dados e necessidade de tomada de decisões em tempo real.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.