RE:ply é uma aplicação web que permite enviar emails ou textos de emails para classificação automática. O sistema identifica se o conteúdo do email é Produtivo ou Improdutivo e sugere uma resposta automática.
Requisitos técnicos mínimos para rodar o projeto:
- Python 3.11+
- FastAPI
- Gemini API (google.generativeai)
- PyPDF / leitura de arquivos .pdf e .txt
- Uvicorn (rodar api localmente)
- Node.js 20+
- Next.js 14+
- Axios para requisições à API
- Componentes UI para estilização (shadcn UI + acertenity UI)
Critérios que foram implementados no projeto:
- Leitura e Processamento:
- Script em Python que lê o conteúdo dos emails;
- Técnicas de NLP (remoção de stop words, stemming/lemmatização, etc)
- Classificação e Resposta:
- Algoritmo de classificação que categoriza o conteúdo em Produtivo ou Improdutivo
- Gemini API
- Classificação:
- Determina a categoria do email
- Geração de Resposta:
- Sugere uma resposta automática adequada
- Integração com interface:
- CORS permitindo a entrada das requisições
- Formulário de Upload:
- Permite o upload de arquivos em formato .txt ou .pdf ou a inserção direta de texto
- Botão para enviar o email para processamento
- Exibição dos Resultados:
- Mostra a categoria atribuída ao email (Produtivo ou Improdutivo)
- Exibe a resposta automática (usuário consegue copiar)
- Clone o repositório:
git clone https://github.com/gabriellefoliv/reply.git
cd reply/api- Crie e ative um ambiente virtual
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows- Instale as dependências
pip install -r requirements.txt- Configure a variável de ambiente para a Gemini API
export GEMINI_API_KEY="sua_chave_aqui" # Linux/Mac
set GEMINI_API_KEY="sua_chave_aqui" # Windows- Rode o servidor local:
uvicorn app:app --reload --host 0.0.0.0 --port 8000A API estará disponível em http://localhost:8000.
POST /classify: Recebe um texto ou arquivo de email e retorna a classificação e uma resposta sugerida.
Corpo da requisição:
{
"text": "Texto do email"
}Corpo da resposta:
{
"category": "Improdutivo",
"suggested_reply": "Resposta sugerida pela IA",
"tokens_estimate": 176,
"model": "gemini-1.5-flash"
}OBS: Uma rota adicional de /health foi adicionada na intenção de não deixar a API inativa, um monitor do Uptime Robot pinga o servidor de tempo em tempo.
- Navegue até o diretório do frontend:
cd ../frontend- Instale as dependências:
npm install- Configure a variável de ambiente para o endpoint da API
NEXT_PUBLIC_API_URL="http://localhost:8000"- Rode o servidor de desenvolvimento:
npm run devA aplicação estará disponível em http://localhost:3000.
/routes: Pasta onde está a rota principal da API de classificação./schemas: Pasta onde estão as tipagens de Request e Response da rota./services: Pasta onde estão as técnicas de NLP e função que atua no Gemini./utils: Pasta onde estão as funções para extração dos textos de .txt e .pdf.- app.py, config.py, Dockerfile e requirements.txt são arquivos de configuração geral
/src: Pasta onde está todo o código./src/app: Pasta onde estão as páginas da aplicação./src/components: Pasta onde estão os componentes UI que ajudaram a estilizar a aplicação./src/lib: Pasta onde está a conexão com a API.