Como criei meu primeiro chatbot usando n8n: desafios e descobertas

A experiência de criar meu primeiro chatbot foi instigante e cansativa ao mesmo tempo.

Envolveu aprender novas ferramentas, estudar Python mais a fundo e lidar com problemas de programação que eu nunca tinha visto antes.

Mas a sensação de ter chegado a um primeiro protótipo foi ótima, e o feedback que colhi de algumas das pessoas que testaram foi ainda melhor.

O bot se chama Zé do Rolé (com acento agudo, como bom natalense) e nasceu com um propósito simples: ajudar pessoas que estão em Natal-RN a escolher o que fazer no final de semana.

Ele é construído a partir de dois fluxos.

O primeiro é um fluxo de web scraping. Nele, tenho uma automação que acessa a agenda cultural do Saiba Mais, site jornalístico da cidade, e coloca cada evento em uma planilha no Google Sheets.

Em seguida, essa planilha é convertida em um arquivo JSON, formato de arquivo baseado em texto e feito para representar dados estruturados, que é melhor interpretado pelos sistemas de inteligência artificial.

Por último, no segundo fluxo, esse JSON alimenta dinamicamente um bot que usa o Gemini 1.5 Flash para gerar respostas de forma divertida e informal.

Nota: a consulta e o uso do banco de dados do Saiba Mais foram feitos com a devida autorização dos donos do site.

Ferramentas utilizadas

Esse protótipo surgiu a partir dos meus estudos recentes sobre o n8n.

Para quem não sabe, o n8n é um software de automação semelhante ao Zapier ou ao Make, mas que pode ser instalado em uma máquina própria e rodar com um custo mensal absurdamente mais baixo do que os concorrentes.

Eu o batizei de WordPress da automação.

Além de ser mais acessível, o n8n possui outra vantagem: é possível escrever scripts em JavaScript ou Python diretamente nos workflows, o que ajuda na personalização das automações e abre infinitas possibilidades.

É uma ferramenta mais avançada e incrível de trabalhar, que recomendo caso você seja nerd e queira se especializar nisso. Aliás, se você tiver interesse em aprender a rodar essa aplicação, fala comigo aqui que te ajudo.

Além do n8n, usei o GPT-4o para me ajudar a trabalhar os dados recebidos do Saiba Mais e o Gemini 1.5 Flash para a interação com o usuário (abaixo explico o porquê das minhas escolhas).

O coração do protótipo consiste basicamente nessas três ferramentas, além da integração com o Google Sheets e da integração nativa do n8n na construção do bot.

Para montar tudo, levei aproximadamente de 12h a 18h de trabalho, entre estudo da ferramenta, tentativas e erros.

Fluxo de web scraping com o n8n

O chatbot começa com um fluxo de web scraping que me deu um bom trabalho para pensar e montar. Para quem não sabe, web scraping (ou raspagem de dados) é uma técnica para automatizar a busca por informações relevantes na internet.

Essa raspagem de dados pode ser feita de diversas formas. Encontrar a melhor que se adaptasse ao meu objetivo final me levou algumas boas horas.

As dificuldades incluíram decidir quais bancos de dados utilizar, como puxar os dados e, por último, como limpar e classificar os dados de uma forma que fizesse sentido e fosse útil para a consulta do bot.

Abaixo, segue o print de um fluxo de 10 passos, que é disparado toda quinta-feira e começa com uma consulta ao feed RSS do Saiba Mais, passa por um filtro para puxar o que foi publicado na agenda cultural deles e finaliza organizando esses dados e os enviando para o Google Drive.

Nesse fluxo, uso IA para me ajudar a organizar melhor os dados recebidos depois de filtrados. Lá, peço ao sistema que organize as informações de forma que fiquem formatadas com “Nome”, “Data e hora”, “Local” e “Descrição do evento”.

Isso é fundamental porque a saída dos eventos puxados do Saiba Mais é simplesmente impossível de ser lida e compreendida de forma lógica (ver abaixo).

No nó em que utilizo a IA eu cheguei a testar o uso de uma API chamada SerpAPI que faz requisições ao Google, mas devido ao custo e ao número de requisições que ele faz à API, acabei retirando. Fazer essa dupla checagem, porém, é algo que quero implementar no futuro.

Decidi usar o GPT-4o, modelo mais poderoso da OpenAI, pela necessidade de um modelo com menor número de alucinações e que siga mais estritamente os prompts colocados, porque um erro aqui significa divulgar uma informação errada sobre um evento.

Como foi minha primeira experiência, ainda há alguns pontos a melhorar. Um deles é que descobri que fazer uma requisição à API do WordPress (o Saiba Mais usa WordPress) pode ser mais eficiente do que ler um feed RSS.

Mas isso são tecnicalidades que pretendo aperfeiçoar com o tempo.

A construção do chatbot no n8n

Construir um chatbot no n8n é uma tarefa relativamente simples, mas o que me deu mais trabalho foi aprender a fazer com que a IA consultasse um banco de dados específico antes de responder ao usuário.

Foi aí que comecei a estudar o básico sobre processamento de linguagem natural (NLP), que é o campo da inteligência artificial focado em permitir que as máquinas compreendam e interajam com a linguagem humana de forma natural e útil.

Também me deparei com conceitos básicos de RAG (Retrieval-Augmented Generation), que é uma técnica que combina recuperação de informações e geração de texto, utilizando uma base de dados como contexto para que uma LLM (Large Language Model) ofereça respostas mais precisas e informadas ao usuário.

A solução que encontrei para a IA interpretar os dados da planilha em um tempo relativamente curto e fazer essa consulta antes de enviar a resposta ao usuário está resumida na imagem abaixo.

No workflow do agente de IA, uso como ferramenta uma chamada para um segundo workflow que puxa os dados do arquivo JSON gerado no primeiro fluxo e extrai as informações.

No prompt desse agente, peço para que sempre que for perguntado, ele consulte o JSON antes de oferecer a resposta.

O resultado está no print abaixo (um dos que recebi de pessoas que testaram a aplicação).

Na minha avaliação, o resultado ficou bem satisfatório, embora eu acredite que possa haver formas mais eficientes de alimentar o chatbot com essa base de dados.

Para o protótipo, testei o GPT-3.5 Turbo, GPT-4, GPT-4o, Gemini 1.5 Pro e Gemini 1.5 Flash. Fiquei com o último que, para mim, combinou bem duas variáveis importantes: qualidade das respostas e custo na requisição de API.

Próximos passos

Depois de descansar das quase 20 horas trabalhando nesse projeto pessoal, tenho duas grandes atualizações para fazer no chatbot.

A primeira é um tanto complexa: vincular esse bot ao WhatsApp e disponibilizá-lo através de um número, que a pessoa adiciona na agenda e interage sempre que quiser saber o que fazer no final de semana.

A segunda é mais simples: deixar pública a planilha que alimenta o banco de dados do bot para que produtores culturais possam divulgar seus eventos dentro do bot. Quando eu fizer as atualizações, atualizo este estudo de caso.

Espero que você tenha gostado. Caso tenha interesse em testar o bot (lembre-se, ele ainda é um protótipo), é só acessar este link.

Compartilhe com seus amigos!

Novos

Mais antigos

Oi, me chamo Fábio. Leia meus textos e minhas ideias abaixo.

Assine a minha newsletter sobre IA e fique por dentro das novidades.

Continue vendo