Skip to content

MatheusdePaulo/AutoAI-email-classifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

title AutoAI Email Classifier
emoji 🤖
colorFrom green
colorTo blue
sdk docker
app_port 8000

🤖 AutoAI: Classificador de Email com IA

Visão Geral do Projeto

Este projeto demonstra uma aplicação web minimalista e eficiente para classificação automática de e-mails e sugestão de respostas, utilizando o poder da Inteligência Artificial. Desenvolvido com Flask para o backend e uma interface web moderna com Bulma CSS e JavaScript no frontend, o AutoAI oferece uma solução prática para gerenciar o fluxo de mensagens, categorizando-as como 'Produtivas' ou 'Improdutivas' e fornecendo respostas contextuais.

O objetivo principal é otimizar a triagem de e-mails, permitindo que usuários ou equipes de suporte respondam de forma mais rápida e consistente, liberando tempo para tarefas de maior complexidade.

Demonstração do Projeto

Uma prévia visual da aplicação em funcionamento:

Prévia da Aplicação

🚀 Aplicação Online

A versão de produção desta aplicação está hospedada no Hugging Face Spaces e pode ser acessada diretamente pelo link abaixo:

➡️ Acessar a Aplicação Online

Funcionalidades Chave

  • Classificação Inteligente: Utiliza um modelo de zero-shot classification da Hugging Face para categorizar e-mails sem a necessidade de treinamento prévio com dados específicos do domínio.
  • Sugestão de Respostas: Utiliza um modelo de geração de texto para fornecer respostas contextuais baseadas na categoria identificada pela IA.
  • Interface Amigável: Design responsivo e intuitivo, permitindo a inserção de e-mails via digitação de texto ou upload de arquivo .txt.
  • Feedback Visual: Animações e indicadores visuais durante o processamento da IA para uma melhor experiência do usuário.
  • Design Robusto: Layout profissional com uma interface limpa e organizada.
  • Medidas de Segurança:
    • Rate Limiting: Proteção contra abuso na API de classificação, limitando o número de requisições por IP.
    • HTTPS Automático: Garantido pela plataforma Hugging Face Spaces.
    • Servidor de Produção (Gunicorn): Uso de um servidor WSGI seguro e robusto para o deploy.
    • Execução como non-root: O contêiner Docker é executado com um usuário de privilégios limitados para maior segurança.

🛠️ Tecnologias Utilizadas

O projeto foi construído utilizando um conjunto de tecnologias modernas para backend, frontend e deploy:

Categoria Tecnologia
Backend Python Flask
Inteligência Artificial Hugging Face
Frontend HTML5 CSS3 JavaScript Bulma
Infraestrutura & Deploy Docker Gunicorn

💡 Desafios e Aprendizados

O desenvolvimento deste projeto foi uma jornada prática de resolução de problemas, especialmente na fase de deploy, que simulou desafios comuns em ambientes de produção.

  • Desafio Inicial: Limitação de Recursos na Nuvem

    • A primeira tentativa de deploy foi em uma plataforma PaaS convencional (Render.com). No entanto, a aplicação falhou repetidamente devido ao limite de 512MB de RAM do plano gratuito, que se mostrou insuficiente para carregar os modelos de linguagem da biblioteca transformers.
  • Solução Estratégica: Containerização e Migração

    • Para superar a limitação de memória, a estratégia foi pivotada. A aplicação foi containerizada com Docker, criando um ambiente de execução portátil e consistente.
    • O deploy foi migrado para o Hugging Face Spaces, uma plataforma otimizada para aplicações de IA que oferece recursos de hardware mais robustos no plano gratuito, incluindo 16GB de RAM.
  • Aprendizados no Processo de Deploy:

    • Gerenciamento Fino de Dependências: Foi necessário realizar um ajuste detalhado no arquivo requirements.txt para garantir a compatibilidade de todas as bibliotecas com o ambiente Python 3.9 do contêiner.
    • Depuração de Permissões em Docker: Surgiram desafios complexos de permissão de escrita (PermissionError) dentro do contêiner, relacionados ao cache dos modelos de IA. A solução envolveu a reestruturação do Dockerfile para gerenciar corretamente as permissões de diretórios.
    • Infraestrutura como Código: O uso do Dockerfile reforçou a importância de definir a infraestrutura da aplicação como código, garantindo que o ambiente de produção seja replicável e confiável.

Este processo não apenas resultou em uma aplicação funcional, mas também demonstrou a capacidade de diagnosticar problemas de infraestrutura, adaptar a estratégia de tecnologia e implementar soluções robustas para garantir o sucesso do deploy.

Como Rodar o Projeto Localmente

Siga estes passos para configurar e executar a aplicação em sua máquina local:

Pré-requisitos

  • Python 3.9+ instalado
  • Docker instalado (recomendado para replicar o ambiente de produção)

Instalação

  1. Clone o repositório:

    git clone [https://huggingface.co/spaces/FranciscoMatheus/autoai-email-classifier](https://huggingface.co/spaces/FranciscoMatheus/autoai-email-classifier)
    cd autoai-email-classifier
  2. Crie e ative um ambiente virtual:

    python -m venv venv
    # No Windows:
    .\venv\Scripts\activate
    # No macOS/Linux:
    source venv/bin/activate
  3. Instale as dependências:

    pip install -r requirements.txt

Executando a Aplicação (Modo Desenvolvimento)

  1. Com o ambiente virtual ativado, execute o servidor Flask:

    python app.py
  2. Abra seu navegador e acesse: http://127.0.0.1:5000/

Executando com Docker (Modo Produção)

  1. Construa a imagem Docker:

    docker build -t autoai-app .
  2. Execute o contêiner:

    docker run -p 8000:8000 autoai-app
  3. Abra seu navegador e acesse: http://127.0.0.1:8000/

Deploy na Nuvem (Hugging Face Spaces)

A aplicação está configurada para deploy automático no Hugging Face Spaces através de:

  • Dockerfile: Define o ambiente completo, dependências e comando de execução, garantindo consistência entre desenvolvimento e produção.
  • README.md (este arquivo): Contém a configuração do SDK e da porta para o Hugging Face Spaces.

💡 Limitações e Próximos Passos

  • Suporte a Arquivos PDF: O desafio sugere o suporte ao upload de arquivos .pdf. Para garantir a máxima estabilidade e qualidade na extração do conteúdo para a IA, a implementação atual foca na inserção de texto direto e no upload de arquivos .txt. A extração de texto de arquivos PDF pode introduzir complexidades (como em PDFs baseados em imagem, que exigiriam OCR) e potenciais erros de formatação. A implementação de um parser de PDF robusto fica como um excelente próximo passo para a evolução do projeto, garantindo que a funcionalidade principal demonstrada estivesse 100% estável.

Contribuição

Contribuições são bem-vindas! Se você tiver sugestões, melhorias ou encontrar bugs, sinta-se à vontade para abrir uma issue ou um pull request.

About

Aplicação web que utiliza IA e Processamento de Linguagem Natural (PLN) para classificar e-mails e sugerir respostas automáticas.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors