Sistema completo de alfabetização via WhatsApp utilizando IA, desenvolvido com FastAPI (backend) e TypeScript (bot WhatsApp). O projeto combina processamento de áudio, análise de leitura, geração de imagens e chatbot conversacional para ensinar adultos a ler e escrever de forma personalizada.
- Jonatas Miguel de Sousa Soares -> jonatas.miguelss@gmail.com
- Samuel Ismael ->samuel.ismael@academico.ufpb.br
- Cauã Lacerda -> lacerdacaua1010@gmail.com
- Sobre o Projeto
- Arquitetura
- Funcionalidades
- Tecnologias
- Requisitos
- Instalação
- Configuração
- Uso
- Estrutura do Projeto
- API Endpoints
- Contribuindo
Apo.IA é um sistema de alfabetização assistido por IA que utiliza WhatsApp como interface principal. O sistema guia o usuário através de 6 fases de aprendizado:
- Saudação Inicial - Apresentação e coleta de dados
- Coleta de Informações - Nome e idade do aluno
- Teste de Leitura - Avaliação inicial do nível
- Exercícios de Leitura - Prática com textos adaptados
- Avaliação de Leitura - Feedback personalizado
- Conversação Livre - Ensino adaptativo com RAG
- 🎤 Processamento de Áudio: Transcrição automática com Whisper
- 🖼️ Geração de Imagens: Criação de material didático com PIL
- 🧠 IA Personalizada: Respostas contextualizadas com GPT-4o-mini
- 📊 Avaliação Inteligente: Análise de progresso com LangChain
- 💾 Persistência: Estado do usuário e histórico com FAISS
- 🗣️ Text-to-Speech: Áudios de resposta com OpenAI TTS
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ WhatsApp │────────▶│ Whatsbot │────────▶│ AiHelper │
│ (User) │ │ (TypeScript) │ │ (FastAPI) │
└─────────────┘ └──────────────┘ └─────────────┘
│ │
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ Redis │ │ OpenAI │
│ Cache │ │ API │
└──────────┘ └──────────┘
│
▼
┌──────────────┐
│ Supabase │
│ Database │
└──────────────┘
- ✅ Chat Inteligente - Conversação com GPT-4o-mini
- ✅ Geração de Imagens - DALL-E 3 com retorno em base64
- ✅ Processamento de Áudio - Transcrição + IA + TTS
- ✅ Avaliação de Alfabetização - Análise de nível com IA
- ✅ Exercícios de Leitura - Textos adaptados ao nível
- ✅ Sistema RAG - Busca vetorial com FAISS
- ✅ Histórico de Conversas - Persistência local
- ✅ Integração WhatsApp Web - whatsapp-web.js
- ✅ Envio de Áudios - Base64 para API
- ✅ API REST - Fastify com TypeScript
| Tecnologia | Versão | Descrição |
|---|---|---|
| FastAPI | 0.115.6 | Framework web assíncrono |
| OpenAI | 2.7.1 | GPT-4, Whisper, DALL-E, TTS |
| LangChain | 1.0.0+ | Framework de IA |
| FAISS | 1.12.0 | Busca vetorial |
| Pillow | 12.0.0 | Processamento de imagens |
| Pydantic | 2.12.4 | Validação de dados |
| Uvicorn | 0.32.1 | Servidor ASGI |
| Tecnologia | Versão | Descrição |
|---|---|---|
| Fastify | 5.6.1 | Framework web |
| whatsapp-web.js | 1.34.2 | Cliente WhatsApp |
| Axios | 1.13.2 | Cliente HTTP |
| TypeScript | 5.9.3 | Linguagem tipada |
- Python 3.10+
- Node.js 18+
- Redis (opcional, para cache)
- Conta OpenAI com acesso às APIs
- Projeto Supabase configurado
git clone https://github.com/JonatasMSS/ApoIA.git
cd ApoIA# Navegue até a pasta
cd AiHelper
# Crie ambiente virtual
python -m venv venv
# Ative o ambiente
.\venv\Scripts\Activate.ps1
# Instale dependências
pip install -r requirements.txt# Navegue até a pasta
cd ..\Whatsbot
# Instale dependências
npm installCrie o arquivo .env na pasta AiHelper/:
# OpenAI API
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Supabase
SUPABASE_URL=https://xxxxxxxxxxxxx.supabase.co
SUPABASE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxxxxxxxxxxxx
# Opcional: Configurações do servidor
HOST=0.0.0.0
PORT=8000Crie o arquivo .env na pasta Whatsbot/ (se necessário):
# Redis (opcional)
REDIS_HOST=localhost
REDIS_PORT=6379
# API Backend
API_BASE_URL=http://localhost:8000cd AiHelper
python main.py
# Ou com uvicorn diretamente
uvicorn main:app --reload --host 0.0.0.0 --port 8000Acesse: http://localhost:8000/docs para a documentação interativa.
cd Whatsbot
npm run devPrimeira execução:
- Um QR Code aparecerá no terminal
- Escaneie com WhatsApp (Configurações > Aparelhos Conectados)
- O bot estará pronto para uso
# Chat
curl -X POST "http://localhost:8000/chat" `
-H "Content-Type: application/json" `
-d '{"message":"Olá, me ajude a aprender a ler"}'
# Gerar Imagem
curl -X POST "http://localhost:8000/generate-image" `
-H "Content-Type: application/json" `
-d '{"prompt":"Texto educativo com palavras simples","size":"1024x1024"}'
# Criar Usuário
curl -X POST "http://localhost:8000/users/" `
-H "Content-Type: application/json" `
-d '{"name":"Maria","age":35,"learning_rate":"iniciante"}'
# Buscar Usuário
curl "http://localhost:8000/users/1"ApoIA/
├── AiHelper/ # Backend FastAPI
│ ├── libs/ # Clientes (OpenAI, Supabase)
│ │ ├── __init__.py
│ │ ├── OpenAI.py
│ │ └── supabase.py
│ ├── routes/ # Rotas da API
│ │ ├── audio.py # Processamento de áudio
│ │ ├── chat.py # Chat com GPT
│ │ ├── image.py # Geração de imagens
│ │ ├── user.py # CRUD de usuários
│ │ └── video.py # Simulação de vídeos
│ ├── services/ # Lógica de negócio
│ │ ├── conversation_manager.py # Orquestrador principal
│ │ ├── literacy_evaluator.py # Avaliação de alfabetização
│ │ ├── reading_exercises.py # Exercícios de leitura
│ │ ├── text_detection.py # Detecção de nome/idade
│ │ ├── user_state_manager.py # Gerenciamento de estado
│ │ ├── conversation_history.py # Histórico de conversas
│ │ ├── vectorstore_manager.py # Busca vetorial (RAG)
│ │ └── user.py # Serviços de usuário
│ ├── storage/ # Dados persistidos
│ │ ├── audios/ # Áudios temporários
│ │ ├── conversations/ # Estados e históricos
│ │ │ ├── histories/
│ │ │ ├── states/
│ │ │ └── vectorstores/
│ │ ├── transcricoes/ # Textos transcritos
│ │ └── respostas/ # Respostas geradas
│ ├── main.py # Aplicação principal
│ ├── requirements.txt # Dependências Python
│ ├── .env.example # Exemplo de variáveis
│ └── README.md # Documentação
│
└── Whatsbot/ # Bot WhatsApp
├── src/
│ ├── main.ts # Servidor principal
│ ├── api/
│ │ └── AiHelper.ts # Cliente API backend
│ ├── lib/
│ │ └── redis.ts # Cliente Redis
│ ├── routes/ # Rotas Fastify
│ │ ├── index.ts
│ │ ├── root.ts
│ │ └── send.ts
│ └── service/
│ └── AiServices.ts # Integração com backend
├── package.json # Dependências Node
└── tsconfig.json # Configuração TypeScript
POST /chat- Conversa com GPT-4o-mini
POST /generate-image- Gera imagem com DALL-E 3
POST /audio/processar/- Upload de áudio (FormData)POST /audio/processar_base64- Áudio em base64 (JSON)POST /audio/falar- Text-to-Speech
POST /users/- Criar usuárioGET /users/{id}- Buscar usuário
- Fork o projeto
- Crie uma branch (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
- Produção: Altere
allow_origins=["*"]para domínios específicos - Chaves API: Nunca commite arquivos
.env - Rate Limiting: Configure limites adequados no Fastify
- FAISS armazena vetores localmente para busca rápida
- Históricos são salvos em JSON para persistência
- Formatos suportados: OGG, MP3, WAV, M4A
- Whisper processa diretamente sem conversão
- Respostas TTS são retornadas em base64 (
data:audio/wav;base64,...)
- A geração de vídeo é simulada (Sora não disponível publicamente)
- WhatsApp limita tamanho de áudios e imagens
- OpenAI tem limites de rate e custos por uso
Este projeto foi desenvolvido para fins educacionais como parte do programa Devs Impacto 16.
Equipe Apo.IA - Novembro 2024