- Publicado por
Tecnologias usadas no projeto Anna-IA
- Authors

- Name
- Gabriel Gava Pinheiro
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.
- Introdução
- Qual a Ideia por Trás da Anna?
- Como Ocorreu os Treinamentos da Anna-ia
- Integração com o WhatsApp e Suas Dificuldades
- Tecnologias Empregadas no Sistema Anna e o Porquê?
- Bibliotecas e Recursos Adicionais
- RabbitMQ para Node.js
- Twilio para Node.js
- OpenAI
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:
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.
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.
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
- amqplib (Biblioteca RabbitMQ)
- NPM: amqplib no npm
- Documentação: amqplib - Documentação oficial
Twilio para Node.js
- Biblioteca Twilio Node.js
- NPM: Twilio no npm
- Documentação: Twilio - Documentação oficial """
OpenAI
- OpenAI SDK para Node.js
- NPM: openai no npm
- Documentação: OpenAI API - Documentação oficial