avatar
Publicado por

Tecnologias usadas no projeto Anna-IA

Authors
  • avatar
    Name
    Gabriel Gava Pinheiro
    Twitter

Introdução

Bem-vindo ao artigo que introduz as tecnologias usadas para construir o web site Anna-ia, e o porquê dessas tecnologias que foram utilizadas. Espero que isso ajude em todas de suas decisões.

Qual a Ideia por Trás da Anna?

Anna-ia foi uma ideia criada para facilitar a interface entre eleitor e seu eleitorado, a partir de retiradas de dúvidas automáticas e respostas coerentes baseadas nas dúvidas de seus eleitores.

Como isso foi possível? Graças à tecnologia da OpenAI, que permite o treinamento de modelos de alta performance que respondem e entendem o contexto das perguntas.

Como Ocorreu os Treinamentos da Anna-ia

O treinamento ocorreu em 3 etapas:

  1. Criação da Interface Político-Sistema: Utilizamos Next.js para desenvolver uma interface de perguntas e respostas para dúvidas recorrentes que os eleitores poderiam ter. As respostas eram geradas para responder as perguntas a partir do ponto de vista dos políticos.

  2. Busca de Dados: Outra maneira de obter conteúdo e informação para o treinamento foi a utilização da leitura de PDFs que apresentavam conteúdos relevantes. Extraíamos o conteúdo e ajustávamos os modelos para entender o contexto.

  3. Processamento dos Dados: Utilizamos a API da OpenAI, empregando rotas de fine-tuning para treinar os modelos da OpenAI com os dados obtidos, tanto de perguntas e respostas como de PDFs, em uma relação de 500 tokens de distância.

Integração com o WhatsApp e Suas Dificuldades

Com os modelos já treinados e em constante ajuste, precisávamos disponibilizar um canal de comunicação para a interação entre modelo e eleitor. Optamos pelo WhatsApp, o que nos trouxe benefícios e desafios.

A integração com o WhatsApp permitiu muitas customizações e nos possibilitou conectar telefones pessoais de clientes, tornando o negócio escalável. A desvantagem era que o processamento dos dados, em casos de perguntas complexas, podia levar mais de 10 segundos. Por isso, optamos por utilizar filas de processamento.

Tecnologias Empregadas no Sistema Anna e o Porquê?

Empregamos processamento de filas e arquitetura orientada a eventos. Tínhamos dois microserviços independentes: um para processamento de dados e outro para armazenamento de informações. O sistema consistia em um microserviço usando serviços Twilio junto com o WhatsApp e outro para envio e processamento de mensagens de áudio ou imagem. Usamos RabbitMQ para realizar o processamento assíncrono e implementamos algumas regras de negócio para evitar perdas de mensagens.

Bibliotecas e Recursos Adicionais

RabbitMQ para Node.js

Twilio para Node.js

OpenAI