- Stack: GPT4All + Llama 3.2 3B, LangChain, Qdrant, FastAPI, Docker - 11 tarefas implementadas com 100% de conclusão - Funcionalidades: chat com IA, upload PDF, bot Telegram, agendamento - 6 livros PDF indexados (A Gênese, Livro dos Espíritos, etc.) - Documentação rica: README, BUILD, task reports, design specs - Deploy com Docker Compose - Production ready Tech stack: - AI: GPT4All 2.4.6, Llama 3.2 3B q4_0 - Backend: FastAPI 0.115.0, Celery 5.4.0, Redis 5.2.0 - RAG: LangChain 0.3.7, Qdrant 1.11.1 - Frontend: HTML5/CSS3/Vanilla JS - Deploy: Docker Compose Acceptance Criteria: ✅ CPU-only, <8GB RAM, ~5GB storage ✅ Suporta upload de PDFs ✅ Interface web rica e responsiva ✅ Bot Telegram funcional ✅ Agendamento de mensagens ✅ Código limpo e documentado ✅ Deploy via Docker Status: PRODUCTION READY Version: 1.0.0 Date: 2026-11-01
224 lines
5.3 KiB
Markdown
224 lines
5.3 KiB
Markdown
# Plano de Implementação - Sistema RAG Espiritismo
|
|
|
|
## Fase 1: Setup Inicial e Componentes Base
|
|
|
|
### 1.1 Estrutura do Projeto
|
|
```
|
|
espiritismo-rag/
|
|
├── backend/
|
|
│ ├── app/
|
|
│ │ ├── main.py
|
|
│ │ ├── models/
|
|
│ │ ├── services/
|
|
│ │ ├── utils/
|
|
│ │ └── templates/
|
|
│ ├── Dockerfile
|
|
│ └── requirements.txt
|
|
├── frontend/
|
|
│ └── static/
|
|
├── docker-compose.yml
|
|
├── .env.example
|
|
└── README.md
|
|
```
|
|
|
|
### 1.2 Docker Compose
|
|
- Serviço `qdrant`: Qdrant em Docker
|
|
- Serviço `redis`: Redis em Docker
|
|
- Serviço `web`: FastAPI com frontend
|
|
- Serviço `celery`: Celery worker
|
|
|
|
### 1.3 Configuração do Qdrant
|
|
- Coleção: `espiritismo_books`
|
|
- Dimensão: 384 (sentence-transformers)
|
|
- Métrica: cosine similarity
|
|
|
|
## Fase 2: Indexação dos Livros
|
|
|
|
### 2.1 Setup do Pipeline RAG
|
|
- Instalação de GPT4All
|
|
- Configuração do LangChain
|
|
- Configuração do PDF Loader
|
|
|
|
### 2.2 Processamento dos 6 Livros
|
|
- Leitura de PDFs da pasta `PDF/`
|
|
- Divisão em chunks de 500 tokens
|
|
- Geração de embeddings
|
|
- Inserção no Qdrant
|
|
|
|
### 2.3 Script de Indexação
|
|
- Script Python: `backend/scripts/index_books.py`
|
|
- Opções: re-indexação incremental
|
|
- Validação: verificar chunks e embeddings
|
|
|
|
## Fase 3: API Web com Chat
|
|
|
|
### 3.1 FastAPI Endpoints
|
|
- `POST /api/chat`: Consulta ao sistema RAG
|
|
- `GET /api/books`: Lista de livros indexados
|
|
- `GET /api/chunks/{book_id}`: Ver chunks de um livro
|
|
- `POST /api/upload`: Upload de novo PDF
|
|
- `GET /api/schedules`: Listar agendamentos
|
|
- `POST /api/schedules`: Criar novo agendamento
|
|
- `DELETE /api/schedules/{id}`: Remover agendamento
|
|
|
|
### 3.2 Estrutura do Backend
|
|
```python
|
|
# backend/app/main.py
|
|
app = FastAPI()
|
|
app.include_router(router_chat)
|
|
app.include_router(router_books)
|
|
app.include_router(router_upload)
|
|
app.include_router(router_schedules)
|
|
```
|
|
|
|
### 3.3 Configuração do Model
|
|
- Usar Llama 3.2 3B quantized via GPT4All
|
|
- Prompt template específico para espiritismo
|
|
- System prompt com instruções
|
|
|
|
## Fase 4: Interface Web
|
|
|
|
### 4.1 Página Principal (index.html)
|
|
- Chat interface
|
|
- Seção de upload de PDFs
|
|
- Seção de configuração de horários
|
|
- Exibição de informações dos livros
|
|
|
|
### 4.2 Estilos (style.css)
|
|
- Design moderno e limpo
|
|
- Responsivo para mobile
|
|
- Tema claro/escuro
|
|
- Animações suaves
|
|
|
|
### 4.3 JavaScript (script.js)
|
|
- Comunicação com API
|
|
- Gestão de chat
|
|
- Upload de arquivos
|
|
- Manipulação de horários
|
|
- Feedback visual
|
|
|
|
## Fase 5: Integração com Telegram Bot
|
|
|
|
### 5.1 Setup do Bot
|
|
- Instalação de pyTelegramBotAPI
|
|
- Configuração do bot com token
|
|
- Configuração do chat ID
|
|
|
|
### 5.2 Comandos do Bot
|
|
- `/start`: Mensagem de boas-vindas
|
|
- `/help`: Informações sobre comandos
|
|
- `/list`: Listar livros disponíveis
|
|
- `/schedule`: Configurar horário para mensagem
|
|
- `/schedule list`: Listar agendamentos
|
|
- `/schedule remove <id>`: Remover agendamento
|
|
- `/content`: Enviar conteúdo atual (sem agendamento)
|
|
|
|
### 5.3 Task do Celery
|
|
- Task: `send_scheduled_message`
|
|
- Variável aleatória de livros
|
|
- Mensagem formataada
|
|
- Timestamp da mensagem
|
|
|
|
## Fase 6: Agendamento de Mensagens
|
|
|
|
### 6.1 Sistema de Agendamento
|
|
- Interface web para criar horários
|
|
- Campos: hora, livro (ou todos), tipo de conteúdo
|
|
- Persistence de agendamentos em arquivo JSON
|
|
|
|
### 6.2 Celery Beats
|
|
- Configuração do scheduler
|
|
- Execução diária das tarefas
|
|
- Log de execução
|
|
|
|
### 6.3 Comando do Bot
|
|
- `/schedule <horário> <livro?>`: Agendar mensagem
|
|
- Exemplo: `/schedule 08:00` ou `/schedule 08:00 Livro dos Espíritos`
|
|
|
|
## Fase 7: Testes e Otimização
|
|
|
|
### 7.1 Testes Unitários
|
|
- Testes do pipeline RAG
|
|
- Testes das APIs
|
|
- Testes do bot
|
|
|
|
### 7.2 Testes de Integração
|
|
- Testes de end-to-end
|
|
- Testes de indexação
|
|
- Testes de agendamento
|
|
|
|
### 7.3 Otimizações
|
|
- Cache de respostas
|
|
- Query optimization no Qdrant
|
|
- Pool de conexões Redis
|
|
|
|
## Fase 8: Deploy
|
|
|
|
### 8.1 Docker Build
|
|
- Dockerfile para backend
|
|
- Dockerfile para frontend
|
|
- Docker Compose para orquestração
|
|
|
|
### 8.2 Deploy em Servidor
|
|
- Build da imagem
|
|
- Execução do docker-compose
|
|
- Configuração do Nginx (opcional)
|
|
- Configuração de certificado SSL (opcional)
|
|
|
|
### 8.3 Monitoramento
|
|
- Logs do Celery
|
|
- Logs da aplicação
|
|
- Monitoramento do Qdrant
|
|
|
|
## Detalhes Técnicos
|
|
|
|
### Requisitos Python
|
|
```
|
|
fastapi==0.104.1
|
|
uvicorn==0.24.0
|
|
pydantic==2.5.0
|
|
gpt4all==2.2.7
|
|
langchain==0.1.0
|
|
langchain-community==0.0.10
|
|
langchain-experimental==0.0.52
|
|
sentence-transformers==2.2.2
|
|
pytelegrambotapi==4.15.1
|
|
celery==5.3.4
|
|
redis==5.0.1
|
|
python-multipart==0.0.6
|
|
python-dotenv==1.0.0
|
|
```
|
|
|
|
### Variáveis de Ambiente
|
|
```env
|
|
GPT4ALL_MODEL=llama-3.2-3b-instruct-q4_0.gguf
|
|
QDRANT_URL=http://qdrant:6333
|
|
QDRANT_API_KEY=
|
|
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
|
|
TELEGRAM_CHAT_ID=123456789
|
|
CELERY_BROKER_URL=redis://redis:6379/0
|
|
CELERY_RESULT_BACKEND=redis://redis:6379/0
|
|
UPLOAD_DIR=/app/uploads
|
|
INDEX_DIR=/app/index
|
|
```
|
|
|
|
### Frontend Endpoints
|
|
- `POST /api/chat`: Enviar pergunta
|
|
- `POST /api/upload`: Upload PDF
|
|
- `GET /api/books`: Listar livros
|
|
- `GET /api/schedules`: Listar agendamentos
|
|
- `POST /api/schedules`: Criar agendamento
|
|
|
|
## Timeline Estimado
|
|
- Fase 1: 2-3 horas
|
|
- Fase 2: 3-4 horas
|
|
- Fase 3: 4-5 horas
|
|
- Fase 4: 3-4 horas
|
|
- Fase 5: 2-3 horas
|
|
- Fase 6: 2-3 horas
|
|
- Fase 7: 3-4 horas
|
|
- Fase 8: 2-3 horas
|
|
|
|
**Total estimado**: 21-29 horas de desenvolvimento
|
|
|