Módulo 2B.4: Projeto Técnico - Educador de IA
| **Nível 2B: Técnico | Carga Horária: 15 horas** |
📖 Visão Geral
Projeto final integrador da Trilha B (Técnico) onde você cria uma aplicação funcional de IA para educação. Demonstre domínio de LLMs, RAG, agentes e deploy em produção, gerando portfólio técnico e certificação.
Objetivos:
- Sintetizar conhecimentos de módulos 1, 2B.1, 2B.2 e 2B.3
- Implementar aplicação completa (backend + frontend + deploy)
- Documentar código e arquitetura tecnicamente
- Testar com usuários reais e medir impacto
- Obter certificação “Educador de IA - Nível Técnico”
🎯 Opções de Projeto
Opção A: Sistema RAG Avançado
Descrição: Base de conhecimento institucional com busca semântica, chat e analytics
Requisitos Técnicos:
- ✅ RAG com ≥100 documentos (PDFs, slides, vídeos transcritos)
- ✅ Hybrid search (semantic + keyword)
- ✅ Reranking de resultados
- ✅ Citação de fontes com página/timestamp
- ✅ Interface chat (Streamlit/Gradio)
- ✅ Analytics: queries mais comuns, satisfação
Stack Sugerido:
- Vector DB: ChromaDB ou Pinecone
- Embeddings: OpenAI ada-002 ou HuggingFace
- LLM: GPT-4 ou Claude 3
- Frontend: Streamlit
- Deploy: Streamlit Cloud ou Railway
Avaliação:
- Qualidade do retrieval (Precision@5 >80%)
- Velocidade (resposta <3s)
- UX (survey de usuários >4/5)
Opção B: Agente Educacional Autônomo
Descrição: Tutor/assistente que executa tarefas complexas com mínima supervisão
Requisitos Técnicos:
- ✅ Agente ReAct ou Plan-and-Execute
- ✅ ≥5 ferramentas customizadas
- ✅ Memória persistente (entre sessões)
- ✅ Logging de raciocínio (observabilidade)
- ✅ Tratamento de erros (loops, timeouts)
- ✅ Avaliação de performance (A/B test)
Exemplos:
- Tutor socrático de matemática
- Gerador de planos de aula completos
- Assistente de pesquisa acadêmica
- Corretor automatizado de redações
Stack Sugerido:
- Framework: LangChain ou CrewAI
- LLM: GPT-4 (raciocínio) ou Claude 3
- Tools: APIs externas + funções Python
- Frontend: Gradio ou custom React
- Deploy: Railway ou AWS Lambda
Avaliação:
- Taxa de sucesso em tarefas (>85%)
- Eficiência (passos até completar)
- Custo por tarefa (<$0.50)
Opção C: Fine-Tuning para Caso de Uso Específico
Descrição: Modelo especializado em tarefa educacional nichada
Requisitos Técnicos:
- ✅ Dataset de treino (≥100 exemplos de qualidade)
- ✅ Fine-tuning de modelo open-source (LLaMA, Mistral) ou GPT-3.5
- ✅ Avaliação quantitativa (benchmark)
- ✅ Comparação com modelo base
- ✅ Deployment do modelo (API)
- ✅ Documentação de reprodutibilidade
Exemplos:
- Corretor de redações no estilo institucional
- Gerador de questões ENEM-like
- Tradutor de jargão científico para linguagem acessível
- Classificador de dúvidas (urgente/não-urgente, tópico)
Stack Sugerido:
- Modelo: LLaMA 3 8B (via HuggingFace)
- Fine-tuning: LoRA ou QLoRA (eficiente)
- Treinamento: Google Colab (GPU grátis) ou Runpod
- Deploy: Hugging Face Spaces ou Modal
- Monitoramento: Weights & Biases
Avaliação:
- Performance vs baseline (F1 score, BLEU, ROUGE)
- Análise de erros (qualitativa)
- Tempo de inferência (<2s)
Opção D: Multi-Agent System (Avançado)
Descrição: Sistema com ≥3 agentes especializados trabalhando juntos
Requisitos Técnicos:
- ✅ 3-5 agentes com papéis distintos
- ✅ Orquestração e comunicação entre agentes
- ✅ Estado compartilhado (shared memory)
- ✅ Handling de conflitos e consenso
- ✅ Observabilidade (dashboards de atividade)
- ✅ Testes de integração
Exemplo:
- Sistema de Criação de Curso:
- Agente Pesquisador (busca conteúdo)
- Agente Designer (estrutura)
- Agente Criador (gera materiais)
- Agente Revisor (valida qualidade)
Stack Sugerido:
- Framework: CrewAI ou AutoGen
- LLM: Mix (GPT-4 para coordenação, GPT-3.5 para subtarefas)
- Orquestração: Celery ou Temporal
- Frontend: Custom React + WebSockets
- Deploy: Kubernetes ou Railway
Avaliação:
- Qualidade do output final (rubrica)
- Eficiência vs agente único
- Escalabilidade (10x tarefas em paralelo)
📋 Estrutura do Projeto
Fase 1: Proposta (Semana 1)
Documento de Proposta (3-5 páginas):
1. Problema e Motivação
- Qual dor educacional você está resolvendo?
- Por que uma solução técnica de IA é apropriada?
- Quantifique: quantas pessoas afetadas, quanto tempo economizado, etc
2. Solução Técnica
- Arquitetura de alto nível (diagrama)
- Tecnologias escolhidas (justifique cada uma)
- Trade-offs considerados (por que X e não Y?)
3. Roadmap Técnico
Semana 1: Setup + Data preparation
Semana 2: Core RAG/Agent implementation
Semana 3: Frontend + Integration
Semana 4: Testing + Optimization
Semana 5: Deployment
Semana 6: User testing + Iteration
4. Critérios de Sucesso
- Métricas técnicas (latência, accuracy, F1)
- Métricas de uso (usuários, queries, satisfação)
- Metas numéricas para cada métrica
Template:
# Proposta: [Nome do Projeto]
## 1. Problema
[Descrever em 200 palavras]
## 2. Solução
[Descrever arquitetura em 300 palavras + diagrama]
## 3. Tecnologias
- Vector DB: [Nome] - Justificativa: [...]
- LLM: [Nome] - Justificativa: [...]
- Frontend: [Nome] - Justificativa: [...]
## 4. Cronograma
[Tabela ou Gantt chart]
## 5. Métricas
- Técnicas: [Listar]
- Negócio: [Listar]
- Metas: [Quantificar]
Fase 2: Implementação (Semana 2-5)
Boas Práticas de Código:
A) Estrutura de Projeto:
meu-projeto/
├── data/ # Dados brutos e processados
│ ├── raw/
│ └── processed/
├── src/ # Código-fonte
│ ├── __init__.py
│ ├── data_pipeline.py # ETL
│ ├── embeddings.py # Geração de embeddings
│ ├── retrieval.py # Busca
│ ├── llm.py # Interface com LLM
│ └── agent.py # Agente (se aplicável)
├── tests/ # Testes unitários
│ ├── test_retrieval.py
│ └── test_llm.py
├── frontend/ # UI
│ ├── app.py # Streamlit/Gradio
│ └── static/
├── notebooks/ # Exploração
│ └── exploracao.ipynb
├── configs/ # Configurações
│ └── config.yaml
├── requirements.txt # Dependências
├── Dockerfile # Container
├── README.md # Documentação
└── .env.example # Exemplo de variáveis de ambiente
B) Versionamento (Git):
# Branches
main # Código em produção
develop # Desenvolvimento
feature/rag # Features específicas
# Commits descritivos
git commit -m "feat: Add reranking to retrieval pipeline"
git commit -m "fix: Handle timeout in LLM calls"
git commit -m "docs: Update README with deployment steps"
C) Configuração e Secrets:
# configs/config.yaml
llm:
provider: openai
model: gpt-4
temperature: 0.7
max_tokens: 1000
vector_db:
provider: chromadb
path: ./db
collection_name: curso_docs
retrieval:
top_k: 5
reranking: true
# .env (NUNCA commitar!)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
# .env.example (commitar)
OPENAI_API_KEY=your_key_here
ANTHROPIC_API_KEY=your_key_here
D) Logging e Monitoramento:
import logging
from datetime import datetime
# Setup
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(f'logs/app_{datetime.now().date()}.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# Uso
logger.info(f"Query received: {query}")
logger.info(f"Retrieved {len(docs)} documents in {elapsed:.2f}s")
logger.warning(f"LLM call took {duration}s (above threshold)")
logger.error(f"Failed to process query: {error}")
Fase 3: Testes (Semana 4-5)
A) Testes Unitários:
# tests/test_retrieval.py
import pytest
from src.retrieval import buscar_documentos
def test_busca_retorna_resultados():
query = "O que é RAG?"
docs = buscar_documentos(query, top_k=5)
assert len(docs) == 5
assert all(doc.score > 0 for doc in docs)
def test_busca_ordena_por_relevancia():
query = "fotossíntese"
docs = buscar_documentos(query, top_k=3)
assert docs[0].score >= docs[1].score >= docs[2].score
def test_busca_vazia():
query = ""
with pytest.raises(ValueError):
buscar_documentos(query)
B) Testes de Integração:
def test_fluxo_completo_rag():
# 1. Query
query = "Explique transformers"
# 2. Retrieval
docs = buscar_documentos(query, top_k=3)
assert len(docs) > 0
# 3. Augmentation
context = "\n\n".join([doc.content for doc in docs])
prompt = f"Baseado em: {context}\n\nPergunta: {query}"
# 4. Generation
resposta = gerar_resposta(prompt)
assert len(resposta) > 100
assert "transformer" in resposta.lower()
# 5. Verificar citações
assert any(doc.source in resposta for doc in docs)
C) Testes de Performance:
import time
def test_latencia_busca():
query = "teste de performance"
start = time.time()
docs = buscar_documentos(query, top_k=10)
elapsed = time.time() - start
assert elapsed < 1.0, f"Busca demorou {elapsed:.2f}s (limite: 1s)"
def test_latencia_end_to_end():
query = "Qual a capital da França?"
start = time.time()
resposta = pipeline_completo(query)
elapsed = time.time() - start
assert elapsed < 5.0, f"Pipeline demorou {elapsed:.2f}s (limite: 5s)"
Fase 4: Deploy (Semana 5)
Opção 1: Streamlit Cloud (Mais Fácil)
# frontend/app.py
import streamlit as st
from src.agent import meu_agente
st.title("🤖 Assistente Educacional")
query = st.text_input("Sua pergunta:")
if st.button("Perguntar"):
with st.spinner("Pensando..."):
resposta = meu_agente.run(query)
st.write(resposta)
# Deploy
streamlit run frontend/app.py
# Conectar com GitHub
# Push → Auto-deploy
Opção 2: Docker + Railway
# Dockerfile
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["streamlit", "run", "frontend/app.py", "--server.port", "8080"]
# Deploy
railway login
railway init
railway up
Opção 3: API REST + Frontend Separado
# backend/api.py
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Query(BaseModel):
question: str
@app.post("/ask")
async def ask(query: Query):
resposta = meu_agente.run(query.question)
return {"answer": resposta}
# Rodar
# uvicorn backend.api:app --reload
// frontend/app.js (React)
async function pergunta(question) {
const response = await fetch('https://api.meuprojeto.com/ask', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({question})
});
const data = await response.json();
return data.answer;
}
Fase 5: Testes com Usuários (Semana 6)
A) Recrutar Beta Testers:
- Mínimo: 10 usuários
- Perfil: Professores ou alunos (público-alvo)
- Compromisso: Usar por 1 semana + dar feedback
B) Instrumentação:
import mixpanel
mp = mixpanel.Mixpanel("YOUR_TOKEN")
# Track eventos
mp.track(user_id, 'Query Submitted', {
'query_length': len(query),
'timestamp': datetime.now()
})
mp.track(user_id, 'Answer Generated', {
'latency': elapsed,
'tokens_used': tokens,
'cost': cost
})
mp.track(user_id, 'Feedback Given', {
'rating': rating, # 1-5 estrelas
'useful': useful # bool
})
C) Coleta de Feedback:
Survey Pós-Uso (Google Forms):
1. Quão útil foi a ferramenta? (1-5)
2. Quão precisa foram as respostas? (1-5)
3. Velocidade foi adequada? (Sim/Não)
4. O que você mais gostou?
5. O que você mudaria?
6. Usaria novamente? (Sim/Não)
7. Recomendaria para colegas? (NPS: 0-10)
Entrevistas 1-on-1 (5 usuários):
- 15-20 minutos
- Perguntas abertas
- Observar uso (screen recording)
- Identificar pain points
📊 Métricas e Análise
Dashboard de Métricas (Criar com Streamlit):
import streamlit as st
import pandas as pd
import plotly.express as px
# Carregar dados de uso
df = pd.read_csv('logs/usage_log.csv')
st.title("📊 Dashboard do Projeto")
# KPIs principais
col1, col2, col3, col4 = st.columns(4)
col1.metric("Total de Queries", df.shape[0])
col2.metric("Usuários Únicos", df['user_id'].nunique())
col3.metric("Satisfação Média", f"{df['rating'].mean():.1f}/5")
col4.metric("Latência Média", f"{df['latency'].mean():.2f}s")
# Gráficos
st.subheader("Queries ao Longo do Tempo")
fig1 = px.line(df.groupby('date').size().reset_index(name='count'),
x='date', y='count')
st.plotly_chart(fig1)
st.subheader("Distribuição de Ratings")
fig2 = px.histogram(df, x='rating', nbins=5)
st.plotly_chart(fig2)
st.subheader("Top 10 Queries Mais Comuns")
top_queries = df['query'].value_counts().head(10)
st.bar_chart(top_queries)
📝 Documentação Final
Componentes Obrigatórios:
1. README.md (Completo)
# [Nome do Projeto]
## 🎯 Problema
[Descrição do problema educacional]
## 💡 Solução
[Como seu projeto resolve]
## 🏗️ Arquitetura
[Diagrama + explicação de componentes]
## 🚀 Como Rodar Localmente
```bash
# Passo 1: Clone
git clone https://github.com/seu-usuario/projeto.git
# Passo 2: Instale dependências
pip install -r requirements.txt
# Passo 3: Configure variáveis
cp .env.example .env
# Edite .env com suas API keys
# Passo 4: Rode
streamlit run frontend/app.py
📊 Resultados
- Métrica 1: [Valor]
- Métrica 2: [Valor]
- NPS: [Valor]
🎥 Demo
[Link para vídeo ou GIF]
📚 Documentação Técnica
[Link para docs/ folder]
🤝 Contato
[Email, LinkedIn] ```
2. Documentação Técnica (docs/)
docs/arquitetura.md- Decisões técnicas e justificativasdocs/api.md- Endpoints (se aplicável)docs/deployment.md- Como deployar em produçãodocs/troubleshooting.md- Problemas comuns e soluções
3. Relatório de Resultados (5-10 páginas PDF)
Estrutura:
- Resumo Executivo (1 página)
- Descrição Técnica (2 páginas)
- Resultados de Testes (2 páginas)
- Gráficos de performance
- Tabelas de métricas
- Feedback qualitativo (quotes de usuários)
- Análise e Aprendizados (1-2 páginas)
- O que deu certo
- O que deu errado
- Próximos passos
- Conclusão (0.5 página)
🎤 Apresentação Final (Semana 6)
Formato: 15 min apresentação + 10 min Q&A
Estrutura de Slides (10-15 slides):
Slides 1-2: Contexto
- Problema educacional
- Por que IA é solução apropriada
Slides 3-4: Solução Técnica
- Arquitetura de alto nível (diagrama)
- Stack tecnológico (logos + justificativa)
Slide 5: Demo Live
- Mostrar aplicação funcionando
- 2-3 exemplos de uso
Slides 6-8: Resultados
- Métricas técnicas (gráficos)
- Feedback de usuários (quotes + NPS)
- Comparação antes/depois
Slide 9: Desafios e Soluções
- Top 3 desafios técnicos
- Como foram superados
Slide 10: Aprendizados e Próximos Passos
- Principais insights técnicos
- Roadmap futuro (se fosse continuar)
Slide 11: Conclusão
- Recapitulação em 1 frase
- Link para projeto (GitHub + deploy)
- Contato
🏆 Certificação “Educador de IA - Nível Técnico”
Critérios de Avaliação (Total: 100 pontos):
1. Implementação Técnica (40 pontos)
- Código limpo e organizado (10)
- Funcionamento correto (15)
- Boas práticas (testes, logging) (10)
- Deploy em produção (5)
2. Resultados e Impacto (30 pontos)
- Métricas técnicas atingidas (10)
- Testes com usuários reais (10)
- Evidência de valor educacional (10)
3. Documentação (15 pontos)
- README completo (5)
- Docs técnicos (5)
- Relatório de resultados (5)
4. Apresentação (15 pontos)
- Clareza e estrutura (7)
- Demo funcional (5)
- Q&A (3)
Aprovação:
- ≥85 pontos: Certificação com Distinção
- 70-84 pontos: Certificação Regular
- <70 pontos: Revisão necessária
Badge Digital Inclui:
- Nome completo
- Projeto: [Título]
- Competências técnicas certificadas (8)
- GitHub do projeto (link)
- Número de certificado verificável
💡 Dicas de Sucesso
Do’s:
✅ Comece simples, itere (MVP primeiro) ✅ Teste frequentemente (não deixe para última semana) ✅ Documente enquanto desenvolve (não depois) ✅ Peça feedback cedo (mentores, pares) ✅ Use versionamento (commits pequenos e frequentes)
Don’ts:
❌ Escopo muito ambicioso (seja realista) ❌ Ignorar performance (latência importa) ❌ Esquecer tratamento de erros (vai quebrar) ❌ Deploy sem teste (teste localmente primeiro) ❌ Documentação vaga (seja específico)
📦 Recursos de Apoio
Durante o Projeto:
- Mentoria 1-on-1: 2 sessões de 45 min
- Office Hours: Terças e quintas, 18h-19h
- Canal Slack: #projetos-tecnicos
- Code Review: Submeta PR, receba feedback
Exemplos de Projetos Anteriores:
[Links para 5 projetos completos com código]
📅 Cronograma Detalhado
Semana 1: Planejamento
- Escolher opção de projeto
- Escrever proposta (3-5 páginas)
- Submeter para aprovação
- Setup do repositório GitHub
Semana 2: Data & Core
- Coletar e processar dados
- Implementar core (RAG ou agente base)
- Testes unitários básicos
Semana 3: Features
- Adicionar features avançadas (reranking, tools, etc)
- Integração de componentes
- Testes de integração
Semana 4: Frontend & Polish
- Criar interface de usuário
- Refatorar código
- Documentação inline (docstrings)
Semana 5: Deploy & Testing
- Deploy em produção
- Testes de performance
- Instrumentação (analytics)
- Recrutar beta testers
Semana 6: User Testing & Docs
- Coletar feedback de usuários
- Iterar baseado em feedback
- Escrever documentação completa
- Preparar apresentação
- Apresentar para banca
🎉 Parabéns!
Você completou a Trilha B: Educador de IA - Nível Técnico!
Agora você é capaz de: ✅ Entender profundamente como LLMs funcionam ✅ Implementar sistemas RAG robustos ✅ Criar agentes autônomos de IA ✅ Fazer fine-tuning de modelos ✅ Deployar aplicações em produção ✅ Documentar e apresentar projetos tecnicamente
Próximos Passos:
- Publique seu projeto (GitHub + LinkedIn)
- Escreva artigo técnico (Medium, Dev.to)
- Contribua para open-source (LangChain, HuggingFace)
- Continue aprendendo (campo muda rápido!)
📚 Referências
- Livro: Building LLM Apps - Valentina Alto
- Curso: Full Stack LLM Bootcamp (The Full Stack)
- Comunidade: LangChain Discord, HuggingFace Forums
- Newsletter: The Batch (DeepLearning.AI)
| **© 2025 SuperProfessores | Licença MIT** |
Você é incrível! Bora codar! 🚀👨💻👩💻