Visao executiva
Tutor IA do Studeia nao e ChatGPT em iframe. E um sistema pedagogico construido para EAD:
Mensagem do aluno
↓
1. StudentModelService → carrega ConceptMastery (bayesiano), misconceptions, quiz history
↓
2. RetrievalAgent → busca RAG tenant-scoped, boost por areas fracas em quizzes
↓
3. PedagogicalAgent → seleciona estrategia (5 opcoes) baseado em mastery
↓
4. Orquestrador → monta prompt enriquecido (mastery + misconceptions + RAG context)
↓
5. LLM (Vercel AI SDK) → streaming, com fallback Claude → GPT → Grok → Gemini
↓ apos resposta (after())
6. EvaluationAgent → classifica misconceptions (Haiku, $0.001)
7. ContentAgent → pre-gera exercicio follow-up
8. SupervisorAgent → modera (5 niveis severidade, 8 categorias)
Por que multi-agente vs single LLM call
Single call:
- Sem memoria do aluno → repete explicacoes ja dadas
- Sem awareness de quiz performance → trata aluno fraco igual a forte
- Sem moderacao → riscos de jailbreak, off-topic, conteudo inadequado
- Sem RAG → inventa fatos sobre o curso
Multi-agente:
- StudentModel garante personalizacao real
- RetrievalAgent garante grounding no material do curso
- PedagogicalAgent garante adequacao da estrategia
- EvaluationAgent garante feedback loop para o sistema aprender
- SupervisorAgent garante seguranca
Estrategias pedagogicas
PedagogicalAgent seleciona uma de 5 estrategias baseado em mastery (probabilidade de dominio):
| Mastery | Estrategia | Comportamento |
|---|---|---|
| < 0.3 | direct_instruction | Explicacao clara, exemplos concretos, passo-a-passo |
| 0.3-0.5 | scaffolding | Dicas progressivas, perguntas guiadas simples |
| 0.5-0.7 | socratic | Perguntas que levam a descoberta |
| 0.7-0.9 | guided_practice | Exercicios com feedback, aplicacao pratica |
| > 0.9 | challenge | Problemas complexos, conexoes entre conceitos |
Thresholds sao configuraveis por admin via PedagogicalConfig (tenant-level), com override por dominio.
Ajuste por quiz performance
Se mastery alta (chat) + quiz baixo → "compreensao superficial" → nudge DOWN estrategia. Se mastery baixa + quiz alto → "aluno quieto" → nudge UP. Pass rate < 40% → cap em scaffolding (nao avanca para socratic).
RAG per-tenant
Cada curso pode ser ingerido no RAG do tenant:
POST /api/institution/courses/[id]/rag-ingest(modes: full | incremental)- Itera aulas publicadas, extrai texto por tipo (rich_text→HTML strip, slides→elements, quiz→question+explanation, PDF→OCR via document-extractor)
- Chunking (800 tokens, 200 overlap, preserva estrutura)
- Embeddings via Voyage AI (1024 dims, fallback OpenAI)
- Metadata em cada chunk:
{ source: "course_lesson", courseId, lessonId, lessonTitle, moduleTitle, ingestionId } autoSyncRag: truereingere incrementalmente quando admin edita aulas
Moderacao por agente Supervisor
SupervisorAgent (Haiku, background) roda apos cada turno do chat:
- 5 niveis severidade: low, medium, high, critical, safety
- 8 categorias: linguagem impropria, violencia, ilegal, sexual, off_topic, harassment, self_harm, jailbreak_attempt
- 3 strikes (LOW/MEDIUM em 7 dias) → quarentena 48h
- safety NUNCA pune — mostra acolhimento + recursos crise + notifica admin URGENT
- Custo: ~$0.001/turno (Haiku via generateDirect)
- Habilitacao cascateada: Course.supervisorEnabled → Tenant.supervisorEnabled → default ON
Detalhes em Agente Supervisor.
Multi-provider IA
Todos os 7 agentes IA do Studeia respeitam TenantTaskModelConfig:
| Agente | Metodo router | Provider configuravel? |
|---|---|---|
| Tutor (chat streaming) | router.stream() | Sim |
| Orchestrator | TypeScript puro | N/A |
| RetrievalAgent | TypeScript puro | N/A |
| PedagogicalAgent | TypeScript puro | N/A |
| EvaluationAgent | router.generateDirect() | Sim |
| ContentAgent | router.generateDirect() | Sim |
| SessionSummarizer | router.generateDirect() | Sim |
| CourseReviewAgent | router.generate() | Sim |
| CourseAgent (CMS) | router.generate() + tools | Sim |
| GamificationAgent | router.generate() + tools | Sim |
| SupervisorAgent | router.generateDirect() | Sim |
Fallback chain por tier:
LLM rapido (Haiku): Claude Haiku → GPT-4o-mini → Grok-3-mini → Gemini Flash
LLM medio (Sonnet): Claude Sonnet → GPT-4o → Grok-3-fast → Gemini Pro
LLM complexo (Opus): Claude Opus → GPT-4.5 → Grok-3 → Gemini 2.5 Pro
Circuit breaker por provider (estado em Redis): se falhar 5x em 30s, pula para fallback ate 60s.
Limitacoes
- Tutor nao tem voz (text-to-speech) por padrao. Roadmap.
- Tutor nao gera video ou avatar real-time. Roadmap (HeyGen/D-ID).
- RAG e por curso, nao por instituicao inteira. Cada curso ingere separadamente.
- Misconceptions resolvidos podem regredir (re-detectados) — isso e esperado, o sistema marca regression na evidence.