Projeto M14, Assistente Educacional Multi-Agente

O projeto final da trilha, que integra tudo em uma sessão de tutoria viva: um assistente educacional que conversa com o aluno, ensina, avalia, orienta, analisa e se adapta a cada um. É o Multi-Agent Educational Assistant with Learning Analytics and Long-Term Student Modeling, construído do zero reunindo as versões ricas das peças dos módulos anteriores.

O que o assistente integra

Componente Origem na trilha
Tutor com RAG por trecho e citação da fonte Módulo 9
Calculadora segura como ferramenta Módulo 10
Roteador que decide a ação a cada mensagem (agent loop) Módulo 10
Time de agentes (Tutor, Evaluator, Mentor, Analytics) Módulo 11
Learning Analytics, engajamento, risco e relatório Módulo 12
Modelo do aluno: knowledge tracing, pré-requisitos e personalização Módulo 13

O que o assistente faz

  • O aluno conversa em texto livre, e o assistente decide sozinho o que fazer, em vez de receber comandos pré-rotulados.
  • O Tutor responde dúvidas buscando o trecho relevante no material, cita a fonte e adapta a profundidade da explicação ao domínio do aluno, considerando as suas preferências.
  • A calculadora resolve contas com segurança, sem usar eval.
  • O assistente propõe exercícios na dificuldade certa, corrige sozinho com tolerância numérica, atualiza o domínio do tema e registra o evento no Analytics.
  • O Mentor olha o modelo e o analytics e sugere revisar os temas fracos ou avançar, indicando o próximo tema segundo um grafo de pré-requisitos.
  • O modelo do aluno é salvo ao final e recarregado na sessão seguinte, garantindo a memória de longo prazo, e a sessão gera um relatório com engajamento, barras de domínio e risco.

Como rodar

O assistente roda do zero, só com a biblioteca padrão do Python.

# Modo interativo: converse com o assistente no terminal
python final_assistant.py

# Sessão roteirizada de ponta a ponta, para uma visão rápida
python final_assistant.py --demo

No modo interativo, ele pergunta o seu nome, retoma o seu progresso se já houver um modelo salvo, e ao sair grava o modelo atualizado e um relatorio_sessao.md. Digite ajuda para ver o que dá para fazer, ou sair para encerrar.

Usando no seu código

from final_assistant import AssistenteEducacional, ModeloAluno

aluno = ModeloAluno("Ana", preferencias=["exemplos visuais"])
assistente = AssistenteEducacional(modelo=aluno)

print(assistente.responder("o que é a derivada?"))      # Tutor com RAG e citação
print(assistente.responder("28*3/4"))                    # Calculadora
print(assistente.responder("exercício de derivada"))     # propõe um exercício
print(assistente.responder("6"))                         # corrige e atualiza o domínio
print(assistente.responder("relatório"))                 # Analytics + Mentor

# A sessão interativa aceita entradas injetáveis, o que a torna fácil de testar.
assistente.sessao_interativa(entradas=["o que é a integral?", "sair"])

Testes

Os testes rodam só com a biblioteca padrão e exercitam o fluxo de ponta a ponta: roteamento do agente, RAG com citação, calculadora, banco de exercícios com correção, pré-requisitos, analytics com risco, persistência e a personalização que adapta a explicação ao domínio.

pytest projects/m14-final-assistant/

Como estender

  • Trocar a busca TF-IDF por embeddings densos e um banco vetorial (ChromaDB ou Qdrant, Módulo 9).
  • Ativar a geração via Ollama, já prevista em gerar_explicacao, para o Tutor redigir a explicação a partir do contexto na profundidade recomendada (Módulos 7 e 8).
  • Orquestrar o roteamento e os agentes com LangGraph, modelando o fluxo como um grafo (Módulos 10 e 11).
  • Estimar o risco de desengajamento com a regressão logística do dashboard do Módulo 12.
  • Estimar o domínio com deep knowledge tracing, usando as redes do Módulo 5.

Decisões de projeto

O assistente foi escrito do zero, sem dependências, para que toda a lógica de integração fique visível e rode em qualquer lugar. O coordenador deixou de ser um switch sobre um tipo de mensagem pré-rotulado e passou a ser um agente que roteia a mensagem livre do aluno, no espírito do Módulo 10. Cada componente é uma versão compacta do que foi construído no módulo correspondente, conectada pelo roteador e por um modelo do aluno compartilhado e persistente. O resultado é um acompanhamento personalizado que emerge da integração, não de uma peça única, e que serve de base sólida para evoluções de produção.