- 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
5.3 KiB
5.3 KiB
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 RAGGET /api/books: Lista de livros indexadosGET /api/chunks/{book_id}: Ver chunks de um livroPOST /api/upload: Upload de novo PDFGET /api/schedules: Listar agendamentosPOST /api/schedules: Criar novo agendamentoDELETE /api/schedules/{id}: Remover agendamento
3.2 Estrutura do Backend
# 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:00ou/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
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 perguntaPOST /api/upload: Upload PDFGET /api/books: Listar livrosGET /api/schedules: Listar agendamentosPOST /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