Construindo um Agente LLM com N8N e Open-WebUI

O Que São Soluções de Low-Code

Soluções de low-code têm crescido em popularidade, especialmente com o aumento dos Grandes Modelos de Linguagem (LLMs). Simplificando, plataformas de low-code são ferramentas que permitem que os usuários criem aplicações ou fluxos de trabalho com um esforço mínimo de codificação. Em vez de escrever código linha por linha, os usuários podem interagir com essas plataformas usando funcionalidade de arrastar e soltar. Elas vêm equipadas com templates e componentes pré-construídos que simplificam o processo de criação e integração de aplicações.

Essas plataformas também oferecem a flexibilidade de conectar com aplicativos e serviços populares. Para aqueles que precisam de capacidades avançadas, algumas soluções de low-code até integram com LLMs de código aberto através de serviços hospedados localmente, como Ollama, ou utilizando bancos de dados vetoriais.

Casos de Uso Empresariais

Após pesquisar as aplicações mais populares, não é surpreendente ver que soluções de low-code são amplamente utilizadas para

  1. Automatizar processos de negócios repetitivos
  2. Criar chatbots e assistentes virtuais com suporte a LLMs
  3. Implementar fluxos de trabalho de Geração Aumentada por Recuperação (RAG)
  4. Automatizar suporte ao cliente e fluxos de trabalho de marketing

Agentes de IA

Agentes de IA são sistemas que conectam modelos de IA, como o GPT-4, a ferramentas e bancos de dados vetoriais. Quando uma solicitação é enviada para o sistema de agentes de IA, em vez de fornecer uma resposta imediata, o modelo de IA pode selecionar e usar as ferramentas apropriadas para completar a tarefa.

Soluções de low-code têm integrado agentes de IA, tornando-se uma tendência crescente entre desenvolvedores e não desenvolvedores. Explorei duas bibliotecas populares de low-code: N8N e Open-WebUI. Neste post, compartilharei minha experiência com essas ferramentas, fornecerei feedback e oferecer dicas para usá-las de forma eficaz. Finalmente, abordarei a grande questão: As soluções de low-code realmente economizam tempo para não desenvolvedores?

N8N

N8N, originalmente chamado de Nodemation, é uma ferramenta de código aberto, auto-hospedada, construída em torno do conceito de um grafo. Um grafo consiste em nós e arestas. No N8N, os nós são os componentes principais, cada um projetado para lidar com tarefas específicas, como recuperar dados, transformá-los ou enviá-los para um banco de dados.

Conectando nós em sequência, você pode criar um fluxo de trabalho. Esses fluxos de trabalho automatizam tarefas, como carregar, transformar e transferir dados. Tudo isso acontece em uma tela visual onde você pode arrastar e soltar os nós para projetar a automação em uma sequência lógica. Essa abordagem intuitiva facilita a representação e o gerenciamento das tarefas que você deseja automatizar.

Templates de Fluxos de Trabalho do N8N

N8N oferece muitos templates de fluxo de trabalho e casos de uso para ajudá-lo a começar. Testei um dos fluxos de trabalho localmente em meu Macbook Pro com um chip M4, seguindo o guia de início rápido do N8N, que explica como usar o Docker Compose para auto-hospedar o N8N juntamente com o Vector DB (Qdrant), PostgresSQL e serviços de Ollama.

Após executar Docker Compose, o N8N hospedado localmente está disponível em http://localhost:5678. Ao mesmo tempo, o Docker Compose também configura o banco de dados vetorial (Qdrant), banco de dados de armazenamento (PostgresSQL) e os serviços de LLMs hospedados localmente (Ollama).

Chatbot RAGs

Usando a tela do N8N e vários nós, você pode criar um chatbot com um RAG e um LLM. Os nós Webhook e Responder ao Webhook permitem que você faça solicitações HTTP para buscar dados de qualquer aplicativo ou serviço com uma API REST. Mais adiante, usarei esses nós para permitir que outros serviços interajam com o sistema de chatbot construído no N8N. Até este ponto, nenhuma linha de código foi escrita, e o sistema de chatbot está completo!

1*cmusyhZFiZQEboByFRcAmQ Construindo um Agente LLM com N8N e Open-WebUI

Credenciais de Serviços

Algumas configurações de credenciais são necessárias para o serviço N8N se comunicar com outros serviços. Para o serviço Ollama, você deve usar a seguinte URL, porque o Ollama é implantado como um contêiner com sua porta encaminhada para 11434: http://host.docker.internal:11434/.

Da mesma forma, para a credencial do Qdrant, a chave da API é sua escolha, já que está hospedada localmente. A URL a ser usada é http://qdrant:6333, conforme mostrado abaixo.

1*xJn_3LESYaBJ3e1rG-Q77w Construindo um Agente LLM com N8N e Open-WebUI

Por fim, para a credencial do Postgres, use o DB, nome de usuário e senha do .env. O host é postgres.

1*F0fcLY24FwymsR0JVliofg Construindo um Agente LLM com N8N e Open-WebUI

Conhecimento para RAGs

Criamos um documento de conhecimento conforme o seguinte:

Eu mencionei os chips Blackwell que têm 4x a velocidade de inferência comparados com os chips Hopper.

Para inserir o documento no Qdrant, começa fazendo o download de um arquivo, seguido da extração do texto do documento. O texto extraído é então processado usando um nó Divisor de Texto Recursivo, que divide o texto em segmentos menores antes de serem incorporados. O texto dividido é carregado usando o Carregador de Dados Padrão e, em seguida, processado pelo modelo de incorporação do Ollama. Finalmente, as incorporações são inseridas no banco de dados vetorial.

1*_FC7N6_r9JcTQTxp9Srb7g Construindo um Agente LLM com N8N e Open-WebUI

Acionar fluxo de trabalho N8N

O fluxo de trabalho do sistema de chatbot de IA baseado em RAGs pode ser acionado tanto por uma mensagem de chat quanto por uma solicitação de webhook recebida. Nesta seção, o texto é enviado para o Agente de IA via mensagem de chat, que usa o Modelo de Chat do Ollama para gerar respostas. O histórico da conversa é armazenado usando Memória de Chat do Postgres para que os LLMs retenham o histórico do chat. O Agente de IA também interage com a Loja Vetorial Qdrant para RAGs. Finalmente, a resposta da IA é enviada de volta através do nó Responder ao Webhook.

Teste uma pergunta: “Quais chips foram mencionados?” Como você pode ver, mostra uma sequência passo a passo do nó Agente de IA em ação, processando através de todos os serviços previamente provisionados.

1*zsb3i3j3whl_LFv5Gi0RQg Construindo um Agente LLM com N8N e Open-WebUI

Ótimo! O sistema chatbot de IA está funcionando. No entanto, como expliquei anteriormente, e se eu quisesse chamar esse sistema de fora do serviço N8N? Para fazer isso, clique no nó Webhook e copie a URL de produção para uso posterior. Voltarei para explicar como o serviço N8N é chamado usando esta URL.

1*gXkyqKF_uAFRfbnRJOaX7A Construindo um Agente LLM com N8N e Open-WebUI

Comentários sobre o N8N

N8N é ótimo para aqueles que desejam prototipar rapidamente sem escrever muito código. Seus extensos templates de fluxo de trabalho fornecem um ponto de partida decente. Posso imaginar que até pessoas com pouca experiência em codificação consigam conectar algumas APIs de terceiros para criar um fluxo de trabalho Agente. No entanto, enquanto o N8N parece ser uma ferramenta de low-code, seu princípio de design ainda gira em torno de chamadas de API REST. Por essa razão, eu sugeriria que usuários sem muito conhecimento de REST API dediquem algum tempo para entender o básico. Isso ajudará você a apreciar e entender como diferentes aplicações se integram com LLMs e por que funcionam juntas da maneira que o fazem. Além disso, às vezes, se você quiser fazer algo simples, como alterar o prompt do sistema do LLM, você precisará ir até os nós e atualizar o prompt lá, o que pode ser desafiador se você não souber onde encontrar a opção.

Open-WebUI

Outra solução de low-code que explorei é o Open-WebUI. Sua interface de usuário chama minha atenção porque se assemelha ao design de chat da OpenAI, tornando-a intuitiva e fácil de usar. Esta biblioteca é de código aberto e auto-hospedada, oferecendo flexibilidade e controle sobre seus projetos.

Ela suporta várias bibliotecas LLM auto-hospedadas, incluindo Ollama, e também funciona com APIs compatíveis com OpenAI. Além disso, possui um mecanismo de inferência embutido para RAGs.

Pipeline Open-WebUI

Siga as instruções do site oficial do Open-WebUI. Você pode instalá-lo usando Docker, uv ou pip, embora uv seja fortemente recomendado segundo o guia. Após a instalação do pacote, inicie o servidor e você poderá acessar o Open-WebUI na porta hospedada localmente, http://localhost:8080. Se você tiver o Ollama instalado, o Open-WebUI detectará automaticamente os modelos de Ollama baixados e permitirá que você escolha um para chat. Aqui, forneci uma captura de tela do Open-WebUI rodando com deepseek-r1:14b hospedado localmente pelo Ollama.

open-webui serve

1*qpk-V09JsYqb6YvY5p_JMA Construindo um Agente LLM com N8N e Open-WebUI
1*sn2GuJU_u6jhV6aF4i001g Construindo um Agente LLM com N8N e Open-WebUI

Além das funcionalidades básicas de chat, o recurso Pipelines do Open WebUI é uma estrutura flexível que permite aos usuários criar fluxos de trabalho modulares para aprimorar e personalizar as capacidades da plataforma. Esses fluxos de trabalho podem interceptar, processar e modificar dados (geralmente mensagens de texto de chat) à medida que se movem pelo sistema, habilitando uma variedade de funcionalidades. Um dos principais componentes dos Pipelines são os Filtros, onde ele atua como moderadores de entrada de chat antes que a entrada possa alcançar o LLM ou atua como barreiras de saída antes que a saída possa chegar aos usuários.

Para usar o pipeline, primeiro clone o repositório do Github do Pipeline para seu disco local. Vá até a raiz do repositório e execute o script de shell para lançar o pipeline.

sh ./start.sh

Plugin de terceiros via API OpenAI

O guia de instalação detalhado para o Pipeline está aqui. Em seguida, você precisa estabelecer uma conexão entre o Open-WebUI e o módulo Pipeline usando a conexão da API OpenAI. Como iniciei o Pipeline com um ambiente Conda, o servidor do Pipeline está hospedado localmente em http://localhost:9099. Para conectá-lo, vá para Configurações e Conexões no Open-WebUI e insira o endereço do host local como a URL da API OpenAI. A chave da API é fornecida no README.

1*_rV63LcPe7k0lBo4I2MCdg Construindo um Agente LLM com N8N e Open-WebUI

Depois disso, você deve ver os Pipelines disponíveis quando clicar em Pipelines nas Configurações.

Os Pipelines são plugins que podem executar código arbitrário. Portanto, você deve usar somente o código-fonte que confia!

Filtro de mensagens tóxicas Pipeline

Para esta demonstração, instalarei um filtro de mensagens tóxicas, usando um dos exemplos de Pipelines.

A classe Pipeline requer um objeto da classe Valves, que actua como um botão para os usuários configurarem o Pipeline. Para um filtro de toxicidade, os botões são atributos pipelines e priority, onde o primeiro se refere a quais LLMs o filtro de toxicidade se aplica, e o último determina a prioridade deste filtro. A filtragem real acontece na função inlet, onde o body representa a mensagem do usuário. Com base em se uma mensagem é detectada como tóxica, uma operação pode ser aplicada de acordo.

from typing import List, Optional
from pydantic import BaseModel
from detoxify import Detoxify

class Pipeline:
    class Valves(BaseModel):
        pipelines: List[str] = [] # Quais modelos LLM você está aplicando?
        priority: int = 0
    def __init__(self):
        self.type = "filter"
        self.name = "Filtro Detoxify"
        pass
    async def on_startup(self):
        # Carregar o modelo de toxicidade
        pass
    async def inlet(self, body: dict, user: Optional[dict] = None) -> dict:
        # Este filtro é aplicado aos dados do formulário antes de ser enviado para a API OpenAI.
        pass

1*-uc0Dy3l3A55Fb_YvN6fSg Construindo um Agente LLM com N8N e Open-WebUI

Vamos ver como o Filtro Detoxify funciona. Digitei intencionalmente uma palavra ofensiva no chatbot. O filtro a detectou e sinalizou com uma mensagem dizendo “Mensagem tóxica detectada”.

1*1797RTu98aFkPLD_IKnoXQ Construindo um Agente LLM com N8N e Open-WebUI

Como você pode ver, o código do plugin de terceiros também pode incluir frameworks populares, como RAGs, permitindo que LLMs busquem e usem contexto de bancos de dados ou outras fontes de dados. O repositório Pipelines fornece vários exemplos de código introdutórios que se integram com bibliotecas de RAGs de código aberto populares, incluindo Haystack, LlamaIndex, etc.

Finalmente, também se integra a outras bibliotecas de low-code populares, incluindo Dify e N8N!

Comentários sobre o Open-WebUI

Com base no que aprendi e na minha experiência pessoal, o Open-WebUI é mais amigável para desenvolvedores porque, como desenvolvedor, posso trabalhar diretamente com o código do plugin de terceiros, dando controle total sobre o fluxo de trabalho Agente usando código. Comparado ao N8N, que foca em uma abordagem baseada na interface do usuário, com arrastar e soltar, o Pipeline do Open-WebUI parece menos uma caixa-preta e é mais flexível e extensível, facilitando a integração com outros plugins via conexões da API OpenAI.

Integração do N8N e Open-WebUI

Lembre-se no começo quando construímos um sistema de chatbot de IA usando N8N? Existem alguns plugins Pipelines existentes que você pode escolher na comunidade do Open-WebUI para chamar o serviço N8N. Com isso, você agora pode chamar diretamente o sistema implantado no N8N de dentro do Open-WebUI, conforme mostrado abaixo.

1*yFVRdzx-CvH_TkoiGYoQQg Construindo um Agente LLM com N8N e Open-WebUI

Como explicado anteriormente, uma vez que o serviço N8N é executado como um contêiner Docker implantado com sua porta sendo encaminhada para 5678. A URL do serviço N8N deve ser (ou seja, o link da URL de produção que copiei anteriormente, mas substituindo localhost pelo nome do contêiner, n8n): http://n8n:5678/webhook-test/n8n_ai_chatbot. E usando o nó Webhook da seção anterior, o serviço Open-WebUI pode chamar o sistema de chatbot de IA hospedado no N8N, como mostrado abaixo.

1*Fw8T8HCSiKp-mLps11KPbw Construindo um Agente LLM com N8N e Open-WebUI

Pensamento Final

Como um profissional de Machine Learning, enquanto o N8N oferece uma abordagem limpa e fácil de arrastar e soltar para criar agentes de IA, eu ainda prefiro usar os Pipelines no Open-WebUI porque posso controlar e entender o fluxo de trabalho através do código. Dito isso, o N8N merece crédito por tornar a criação de agentes de IA possível com uma codificação mínima. No entanto, para personalizar nós, você ainda precisa entender REST APIs e às vezes escrever JavaScript em sua interface de usuário de nós. No final das contas, esse é um compromisso que você tem que decidir por si mesmo:

No N8N, você troca facilidade de início por uma personalização mais difícil.

Com o Open WebUI, você troca facilidade de personalização por uma curva de aprendizado mais acentuada para começar.

Conclusão

Neste post do blog, demonstrei que N8N e Open-WebUI oferecem duas abordagens distintas para construir e implantar fluxos de trabalho Agentes. O N8N se destaca em fornecer uma interface de low-code e arrastar e soltar, facilitando a prototipagem de agentes de IA e a integração de vários serviços. No entanto, a personalização pode ainda exigir conhecimento de API REST e scripting em JavaScript.

Por outro lado, o Open-WebUI requer mais codificação, oferecendo controle sobre o fluxo de trabalho Agente. Seus Pipelines possibilitam a execução direta de plugins, tornando-o adaptável e extensível. No entanto, essa flexibilidade vem com uma curva de aprendizado mais acentuada em comparação com a abordagem do N8N.

Em última análise, a escolha entre N8N e Open-WebUI depende da sua preferência. Ambas as plataformas, quando combinadas, oferecem uma abordagem equilibrada, permitindo que os usuários construam sistemas de IA Agentes de forma eficiente. Espero que você ache minha experiência e opinião pertinentes e sinta-se à vontade para entrar em contato ou comentar – estou ansioso para aprender com sua experiência também! 🙂

Referências

https://www.youtube.com/watch?v=E2GIZrsDvuM

https://blog.n8n.io/rag-chatbot/

https://community.n8n.io/t/building-the-ultimate-rag-setup-with-contextual-summaries-sparse-vectors-and-reranking/54861

https://community.n8n.io/t/step-by-step-tutorial-create-a-rag-chatbot-with-n8n-ai-agents-in-minutes/55244

Compartilhe

No Guia da Internet, simplificamos o que parece complicado! Compartilhamos conteúdos sobre tecnologia, finanças, criptomoedas e as tendências do momento de forma clara e objetiva. Seja para aprender sobre investimentos, explorar novas tecnologias ou descobrir curiosidades incríveis, aqui você sempre encontra informação confiável e acessível!

Publicar comentário