Spaces:
Sleeping
Sleeping
File size: 3,950 Bytes
7412c3a 4c1ed25 7412c3a 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 d2a539e 7d02fd2 d2a539e 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 7d02fd2 694ce62 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | ---
title: BookMatch AI - Python | GeminiAPI
emoji: 📚
colorFrom: purple
colorTo: blue
sdk: docker
app_port: 7860
license: mit
pinned: true
short_description: Assistente literário com IA, Python e Flask.
---
# 📚 BookMatch AI
**Seu Assistente Literário Inteligente.**
O **BookMatch AI** é uma aplicação web interativa que utiliza Inteligência Artificial Generativa para oferecer recomendações de livros personalizadas e conversas profundas sobre literatura. Desenvolvido como um projeto de portfólio Full-Stack, ele demonstra a integração prática entre **Python**, **Flask** e a **Google Gemini API**.
👉 **[Teste a aplicação ao vivo no Hugging Face Spaces](https://huggingface.co/spaces/vioott/BookMatchAI-Python-GeminiAPI)**
---
## ✨ Funcionalidades Principais
* **🤖 Seleção Dinâmica de IA:** O sistema consulta a API do Google em tempo real para listar e utilizar os modelos Gemini mais recentes (como *Gemini 2.5 Flash*, *2.0 Flash*, etc.), adaptando-se automaticamente a atualizações da Google.
* **👤 Perfil Personalizado:** Criação de perfil com nome e preferências de gênero literário (Terror, Romance, Ficção, etc.) que influenciam a personalidade e as respostas da IA.
* **💬 Chat Interativo:** Interface de chat moderna e responsiva para conversar sobre livros, autores e histórias.
* **⚡ Performance Otimizada:** Implementação de **Cache (TTL)** para evitar chamadas redundantes à API e garantir carregamento rápido da lista de modelos.
* **🛡️ Logs:** Tratamento avançado de erros (incluindo esgotamento de cota da API) e sistema de logs persistentes que mantém o histórico de conversas e preferências mesmo após reinício do servidor.
* **🎨 UI/UX Profissional:** Modal de boas-vindas informativo, feedback visual de carregamento ("Aguarde..."), validação de formulários e design responsivo.
## 🛠️ Stack Tecnológica
* **Backend:** Python 3.10+, Flask (Microframework Web).
* **Inteligência Artificial:** Google Gemini API (`google-generativeai`).
* **Frontend:** HTML5, CSS3 (com design system próprio e responsivo), JavaScript.
* **Infraestrutura:** Docker (Containerização), Gunicorn (Servidor WSGI), Hugging Face Spaces (Hospedagem).
* **Bibliotecas Chave:**
* `google-generativeai`: Integração com LLMs.
* `cachetools`: Cache em memória para otimização.
* `python-dotenv`: Gerenciamento seguro de variáveis de ambiente.
## 🚀 Como Executar Localmente
1. Clone o repositório e entre na pasta do projeto.
```
git clone https://github.com/ioott/bookmatch-ai-python-geminiAPI.git
cd bookmatch-ai-python-geminiAPI
```
2. Crie e ative um ambiente virtual.
```
python -m venv venv
# No Windows: venv\Scripts\activate
# No Linux/Mac: source venv/bin/activate
```
3. Instale as bibliotecas necessárias.
```
pip install -r requirements.txt
```
4. Crie um arquivo `.env` com sua chave da API Gemini:
```
GOOGLE_API_KEY=sua-chave-aqui
```
5. **Execute a aplicação:**
```
python app.py
```
Acesse `http://localhost:5000` no seu navegador.
## 📂 Estrutura do Projeto
* `app.py`: Ponto de entrada da aplicação Flask.
* `routes/`: Módulos de rotas (Home, Chat, Perfil) seguindo padrão MVC.
* `services/`: Lógica de negócio e integração com a IA (`genai_service.py`).
* `templates/`: Arquivos HTML Jinja2.
* `static/`: Arquivos CSS e assets.
* `logs.py`: Sistema customizado de persistência de dados em arquivo.
## 🧠 Sobre o projeto
Este projeto foi criado como solução para o exercício "Implementando um 'If Mágico' em uma Aplicação de E-commerce", do curso "IA para Programação com Python", da [Trybe](https://www.betrybe.com/), para explorar aplicações de IA generativa na recomendação literária, com foco em UX, personalização e uso real de modelos LLM.
---
Desenvolvido por **Vania Ioott** – Full-Stack Developer & AI Enthusiast. |