| title | AutoAI Email Classifier |
|---|---|
| emoji | 🤖 |
| colorFrom | green |
| colorTo | blue |
| sdk | docker |
| app_port | 8000 |
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.
Uma prévia visual da aplicação em funcionamento:
A versão de produção desta aplicação está hospedada no Hugging Face Spaces e pode ser acessada diretamente pelo link abaixo:
- Classificação Inteligente: Utiliza um modelo de
zero-shot classificationda 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.
O projeto foi construído utilizando um conjunto de tecnologias modernas para backend, frontend e deploy:
| Categoria | Tecnologia |
|---|---|
| Backend | |
| Inteligência Artificial | |
| Frontend | |
| Infraestrutura & Deploy |
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.
- 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
-
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.txtpara 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 doDockerfilepara gerenciar corretamente as permissões de diretórios. - Infraestrutura como Código: O uso do
Dockerfilereforç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.
- Gerenciamento Fino de Dependências: Foi necessário realizar um ajuste detalhado no arquivo
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.
Siga estes passos para configurar e executar a aplicação em sua máquina local:
- Python 3.9+ instalado
- Docker instalado (recomendado para replicar o ambiente de produção)
-
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 -
Crie e ative um ambiente virtual:
python -m venv venv # No Windows: .\venv\Scripts\activate # No macOS/Linux: source venv/bin/activate
-
Instale as dependências:
pip install -r requirements.txt
-
Com o ambiente virtual ativado, execute o servidor Flask:
python app.py
-
Abra seu navegador e acesse:
http://127.0.0.1:5000/
-
Construa a imagem Docker:
docker build -t autoai-app . -
Execute o contêiner:
docker run -p 8000:8000 autoai-app
-
Abra seu navegador e acesse:
http://127.0.0.1:8000/
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.
- 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çõ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.
