Aplicação completa de Pokédex conversacional com IA, API FastAPI e Bot do Telegram interativo.
- 🤖 Bot Telegram Interativo:
- Cards com artes oficiais dos Pokémon.
- Teclado com botões interativos (Inline Keyboards).
- Comandos:
/start,/help,/pokemon <nome_ou_id>,/random. - Respostas assíncronas via
httpxsem bloquear a interface.
- ⚡ Ingestão Rápida de Dados (
prepare_data.py):- Download assíncrono paralelo via
httpx+asyncio. - Extração de artes oficiais, atributos base (HP, Ataque, Defesa, etc.), peso, altura e descrições em PT/EN.
- Download assíncrono paralelo via
- 🧠 Fine-Tuning LoRA (
train_lora.py):- Fine-tuning com PEFT (LoRA) + BitsAndBytes (4-bit quantization) sobre o modelo TinyLlama-1.1B-Chat.
- Template de prompt padronizado no formato nativo do TinyLlama (
<|user|>e<|assistant|>).
- 🛡️ API FastAPI Resiliente (
serve_api.py):- Fallback gracioso para modelo base ou banco local se o adaptador LoRA não estiver presente.
- Endpoints:
POST /ask,GET /pokemon/{query},GET /health.
- 🐳 Docker & Docker Compose:
- Orquestração pronta para subir a API e o Bot em contêineres isolados.
- 🧪 Testes Automatizados (
pytest):- Cobertura de testes unitários para a API e o pipeline de dados.
# Criar e ativar virtualenv
python -m venv .venv
source .venv/bin/activate # No Windows: .venv\Scripts\activate
# Instalar dependências
pip install -r requirements.txtCopie .env.example para .env e defina seu token do Telegram:
TELEGRAM_TOKEN=seu_token_aqui
API_URL=http://localhost:8000python scripts/prepare_data.pyTerminal 1 (API):
uvicorn scripts.serve_api:app --host 0.0.0.0 --port 8000 --reloadTerminal 2 (Bot Telegram):
python bot/telegram_bot.pySuba a API e o Bot do Telegram com um único comando:
docker-compose up --buildPara rodar a suíte de testes automatizados:
pytest tests/