Agente de IA para Análise de Participação em Sala de Aula

19 de December de 2025 • Tempo de leitura: 5 min

Como criar um agente de IA que monitora e analisa a participação dos alunos em discussões de sala de aula, identificando padrões de engajamento.

1. Propósito e Escopo

Este documento define todos os prompts, configurações de memória, transição entre estados, ferramentas como chamadas a sistemas externos, e demais requisitos funcionais para o Fluxo de Agentes "Análise de Participação em Sala de Aula", uma solução projetada para monitorar e analisar a participação dos alunos em discussões de sala de aula, identificando padrões de engajamento. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.

O objetivo principal é fornecer dados precisos sobre a participação efetiva dos alunos, ajudando educadores a identificar alunos desengajados e melhorar o ambiente de aprendizado.

2. Contexto e Problema

Cenário Atual

Atualmente, educadores enfrentam desafios significativos para monitorar a participação dos alunos em tempo real durante as discussões em sala de aula. Os problemas específicos incluem:

  • Falta de dados sobre a participação efetiva dos alunos em sala de aula.
  • Dificuldade em identificar alunos que estão desengajados.

Sem um sistema automatizado, os educadores dependem de observações manuais e relatórios subjetivos, que podem resultar em dados inconsistentes e atrasados.


Problemas Identificados

  • Inconsistência de dados: A coleta manual de dados pode ser imprecisa e sujeita a erros humanos.
  • Falta de insights acionáveis: Dados brutos não são suficientes para entender o engajamento dos alunos sem análise aprofundada.
  • Tempo intensivo: O processo de monitoramento e análise manual consome tempo significativo dos educadores.
  • Desengajamento não detectado: Alunos desengajados podem passar despercebidos até que seja tarde demais para intervir efetivamente.

3. Impactos Esperados

A implementação deste agente de IA visa alcançar os seguintes resultados:

  • Aumentar a precisão na coleta de dados sobre a participação dos alunos.
  • Fornecer insights acionáveis para educadores sobre o engajamento dos alunos.
  • Reduzir o tempo gasto em monitoramento e análise de participação.
  • Identificar rapidamente alunos desengajados para intervenção precoce.

4. Visão Geral da Solução

O agente de IA para análise de participação em sala de aula monitora e analisa a participação dos alunos em discussões, identificando padrões de engajamento. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que esse agente atue como um assistente útil e autônomo na identificação de padrões de engajamento dos alunos.

A solução consiste em um fluxo de automação composto por 4 agentes de IA. O processo inicia com a ingestão e normalização de interações de sala e termina com a geração de relatórios acionáveis para educadores.

A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.

Agentes Função Principal
Agente de Ingestão e Normalização de Interações de Sala (RF 1) Padronizar logs de participação provenientes de diferentes fontes em um esquema único e consistente.
Agente de Cálculo de Métricas de Participação (RF 2) Calcular métricas quantitativas de frequência e regularidade de participação por aluno.
Agente de Avaliação de Qualidade e Índice de Engajamento (RF 3) Avaliar a qualidade das interações e compor um índice de engajamento consolidado por aluno.
Agente de Identificação de Desengajamento e Geração de Relatórios (RF 4) Detectar alunos potencialmente desengajados e produzir relatórios acionáveis para educadores.

5. Protótipos

Para proporcionar uma visão clara e tangível da solução proposta, criamos protótipos interativos que demonstram tanto o fluxo de trabalho dos agentes quanto o resultado final que o educador receberá. Explore os links abaixo para entender melhor a solução em ação.

6. Requisitos Funcionais

RF 1. Agente de Ingestão e Normalização de Interações de Sala

1.1 Tarefa do Agente

Padronizar logs de participação provenientes de diferentes fontes em um esquema único e consistente por sessão e por aluno.

1.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo uma lista de eventos brutos de participação. Este texto é o registro bruto das interações dos alunos em sala de aula.

# 2. Objetivo
Padronizar esses logs de participação em um formato único e consistente para análise posterior.

# 3. Regras que você deve seguir para gerar sua resposta
- Conciliação de identidade: quando aluno_nome_opcional mapear para múltiplos ids, priorizar id presente em aliases_aluno; caso ambíguo, marcar valido=false e motivo_invalidacao_opcional='ambiguidade_id'.
- Normalização de horário: converter timestamp para timestamp_iso em UTC usando timezone fornecida; se timezone ausente, assumir 'America/Sao_Paulo'.
- Mapeamento de tipos: aplicar mapa_tipos_interacao; quando não houver mapeamento, classificar como 'outro'.
- Deduplicação: descartar eventos do mesmo aluno_id cujo hash do conteúdo (normalizado em minúsculas, sem pontuação, espaços colapsados) e tipo_interacao coincidam dentro de janela_deduplicacao_segundos; manter apenas o primeiro e setar dedupe_key igual ao hash base.
- Filtragem de ruído: marcar valido=false se conteudo_textual_opcional tiver menos que limiar_min_caracteres e tipo_interacao não for 'reacao'; também invalidar mensagens automáticas do sistema detectadas por padrões ['joined the room','saiu da reunião'].
- Atribuição de sessao: se sessao_id ausente, inferir por clusterização temporal (quebra > 90 minutos entre eventos); gerar sessao_id sintético 'sessao_{data}_{indice}'.
- Estimar tokens_aprox: aproximar como ceil(len(conteudo_textual_opcional)/4) quando houver conteúdo; se canal='oral' e sem conteúdo, usar 0.
- Conteudo_resumo: sintetizar em até 140 caracteres preservando termos-chave e tópicos mencionados; se ausência de conteúdo, retornar string vazia.
- Referências: extrair menções a conceitos (palavras com inicial maiúscula recorrente), nomes de colegas (@nome) e termos curriculares (lista de termos do professor se fornecida via parâmetros); registrar em referencias_citadas.
- Saída deve conter somente eventos com valido=true; os invalidados permanecem apenas se um parâmetro 'incluir_invalidos=true' for explicitado no input.
1.3 Configurações do Agente

1.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente é o ponto de partida do fluxo e deve ser acionado pelo envio de uma lista de eventos brutos de participação via API. Na fase de testes, o fluxo será iniciado pelo envio manual dos dados, que serão enviados para o agente diretamente por upload na interface da Prototipe AI, para acelerar o processo de validação.
  • Tipo do input: O input inicial para o fluxo é uma lista de eventos brutos de participação dos alunos.
  • Formatos Suportados: Esse agente deve ser capaz de receber eventos no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 100.000 caracteres.

1.3.2 Especificação do Output

  • Formato de output: O output deve ser um array de eventos normalizados no formato JSON. A estrutura deve conter campos como `evento_id`, `aluno_id`, `sessao_id`, `timestamp_iso`, `tipo_interacao`, `canal`, `tokens_aprox`, `destinatario`, `referencias_citadas`, `conteudo_resumo`, `valido`, `motivo_invalidacao_opcional`, `dedupe_key`.
  • Exemplo de Estrutura de Output:
     [{
      "evento_id": "evt_001",
      "aluno_id": "12345",
      "sessao_id": "sessao_20251219_01",
      "timestamp_iso": "2025-12-19T07:08:00Z",
      "tipo_interacao": "fala",
      "canal": "oral",
      "tokens_aprox": 10,
      "destinatario": "",
      "referencias_citadas": ["Conceito X", "@colega"],
      "conteudo_resumo": "Discussão sobre o Conceito X",
      "valido": true,
      "motivo_invalidacao_opcional": "",
      "dedupe_key": "hash123"
    }] 
  • Número de caracteres esperado: O texto final deve ser conciso e informativo, com um tamanho estimado em torno de 5.000 caracteres, podendo variar conforme a quantidade e complexidade dos eventos.

1.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.7

1.3.4 Ferramentas do Agente

  • Documentos: Não consulta documentos externos.
  • Calculadora: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

1.3.5 Memória

1.3.6 Regras de Orquestração e Transição

Ao concluir sua execução, esse agente aciona o Agente de Cálculo de Métricas de Participação (RF 2).

RF 2. Agente de Cálculo de Métricas de Participação

2.1 Tarefa do Agente

Calcular métricas quantitativas de frequência e regularidade de participação por aluno, por sessão e por período.

2.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo eventos normalizados válidos de participação dos alunos em sala de aula.

# 2. Objetivo
Calcular métricas quantitativas de frequência e regularidade de participação por aluno, por sessão e por período.

# 3. Regras que você deve seguir para gerar sua resposta
- total_interacoes: contar eventos por aluno no período.
- interacoes_por_tipo: contagem por tipo_interacao; assegurar chaves ausentes com valor 0.
- sessoes_participadas: contar sessao_id distintos com ao menos 1 interação do aluno.
- percentual_sessoes_participadas: sessoes_participadas / total_sessoes_no_periodo (inferir do conjunto de eventos) em %. Se total_sessoes_no_periodo=0, definir 0.
- interacoes_por_sessao_media: total_interacoes / max(sessoes_participadas,1).
- minutos_fala_estimados: para tipo_interacao='fala', estimar como tokens_aprox/150 (tokens por minuto falado aproximado); somar por aluno e arredondar a uma casa decimal.
- distribuicao_temporal: agregar por semana ISO (YYYY-WW) usando timestamp_iso.
- participacao_relativa_percentil: calcular posição do aluno na distribuição de total_interacoes da turma (0=menor, 100=maior). Em empates, usar média de posições.
- tendencia_ultimas_4_semanas: comparar soma de interações das últimas 2 semanas versus as 2 anteriores: var_percentual = (recente - anterior) / max(anterior,1).
- Excluir alunos com zero interações de percentil? Não: incluir com valor 0 para permitir identificação de desengajados.
- Somário da turma: calcular média, mediana, p25 e p75 de total_interacoes considerando todos os alunos.
2.3 Configurações do Agente

2.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão bem-sucedida do agente anterior (RF 1).
  • Tipo do input: Este agente deve ser apto a receber como input um array de eventos normalizados válidos em formato JSON.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 50.000 caracteres.

2.3.2 Especificação do Output

  • Formato de output: O output deve ser um objeto JSON com chaves por aluno_id contendo as métricas calculadas. A estrutura deve incluir campos como `total_interacoes`, `interacoes_por_tipo`, `sessoes_participadas`, `percentual_sessoes_participadas`, `interacoes_por_sessao_media`, `minutos_fala_estimados`, `distribuicao_temporal`, `participacao_relativa_percentil`, `tendencia_ultimas_4_semanas` e um sumário da turma.
  • Exemplo de Estrutura de Output:
     {
      "12345": {
        "total_interacoes": 50,
        "interacoes_por_tipo": {
          "fala": 20,
          "pergunta": 10,
          "resposta": 10,
          "reacao": 5,
          "outro": 5
        },
        "sessoes_participadas": 8,
        "percentual_sessoes_participadas": 80,
        "interacoes_por_sessao_media": 6.25,
        "minutos_fala_estimados": 2.7,
        "distribuicao_temporal": [{"semana_iso": "2025-W51", "total_interacoes": 25}],
        "participacao_relativa_percentil": 75,
        "tendencia_ultimas_4_semanas": {"var_percentual": 0.10}
      },
      "resumo_turma": {
        "n_alunos": 30,
        "media_interacoes_por_aluno": 40,
        "mediana_interacoes_por_aluno": 35,
        "p25": 20,
        "p75": 50
      }
    } 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 10.000 caracteres.

2.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.7

2.3.4 Ferramentas do Agente

  • Documentos: Não consulta.
  • Calculadora: Utiliza lógica interna para calcular métricas de participação.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não utiliza.

2.3.5 Memória

2.3.6 Regras de Orquestração e Transição

Ao concluir sua execução, esse agente aciona o Agente de Avaliação de Qualidade e Índice de Engajamento (RF 3).

RF 3. Agente de Avaliação de Qualidade e Índice de Engajamento

3.1 Tarefa do Agente

Avaliar a qualidade das interações e compor um índice de engajamento consolidado por aluno.

3.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo eventos normalizados válidos e métricas calculadas dos alunos.

# 2. Objetivo
Avaliar a qualidade das interações e compor um índice de engajamento consolidado por aluno.

# 3. Regras que você deve seguir para gerar sua resposta
- Relevância (0-1): pontuar alto quando conteudo_resumo contiver termos do tópico da sessão ou responder diretamente a perguntas anteriores (destinatario preenchido). Atribuir 1 para respostas diretas com termos-chave; 0.5 para menções tangenciais; 0 caso genérico.
- Profundidade (0-1): identificar presença de explicações, exemplos, relações causa-efeito ou conceitos do currículo; 1 quando houver pelo menos dois elementos; 0.5 um elemento; 0 nenhum.
- Iniciativa (0-1): perguntas originais (tipo 'pergunta') e início de threads contam mais que respostas; normalizar por total_interacoes para não favorecer volume puro.
- Colaboração (0-1): menções a colegas (@), construção sobre ideias alheias (referencias_citadas não vazias) ou agradecimentos/encorajamentos; atribuir valores proporcionais.
- Respeito ao turno (0-1): penalizar sobreposição/monopolização detectada por série de falas consecutivas sem alternância (3+ turnos seguidos na mesma sessão reduz para 0.4 nesse critério naquela sessão).
- Cálculo por evento: derivar subscores por regra acima e agregar por aluno pela média ponderada por recência (peso 1.0 para eventos nos últimos recencia_dias, 0.5 para anteriores).
- qualidade_media: média simples dos cinco subscores por aluno (após agregação por evento).
- Componente de frequência normalizada: freq_norm = min(1, total_interacoes / max(p75_turma,1)).
- Regularidade: regularidade = 1 - coeficiente_de_variacao_semanais truncado a [0,1]; se aluno possui < 2 semanas de dados, usar 0.5.
- Índice de engajamento: engajamento_indice = 100 * (w_freq*freq_norm + w_regularidade*regularidade + w_qualidade*qualidade_media) ajustado por w_recencia*(sinal da tendencia_ultimas_4_semanas: +0.05 se > +30%, -0.05 se < -30%, senão 0). Limitar a [0,100].
- Classe de engajamento: 'alto' >= 70; 'medio' >= 40 e < 70; 'baixo' < 40.
- Justificativa_curta: gerar 1-2 frases citando o principal driver (ex: 'alta relevância e frequência acima do p75' ou 'queda de 35% e baixa profundidade').
- Exemplos_interacoes_representativas: selecionar até 3 eventos com maiores contribuições positivas/negativas ao índice, balanceando tipos.
3.3 Configurações do Agente

3.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão bem-sucedida do agente anterior (RF 2).
  • Tipo do input: Este agente deve ser apto a receber como input eventos normalizados válidos e métricas calculadas em formato JSON.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 60.000 caracteres.

3.3.2 Especificação do Output

  • Formato de output: O output deve ser um objeto JSON contendo os índices de engajamento por aluno. A estrutura deve incluir campos como `subscores_qualidade`, `qualidade_media`, `engajamento_indice`, `classe_engajamento`, `justificativa_curta`, `exemplos_interacoes_representativas`.
  • Exemplo de Estrutura de Output:
     {
      "12345": {
        "subscores_qualidade": {
          "relevancia": 0.9,
          "profundidade": 0.8,
          "iniciativa": 0.7,
          "colaboracao": 0.6,
          "respeito_turno": 0.5
        },
        "qualidade_media": 0.7,
        "engajamento_indice": 85,
        "classe_engajamento": "alto",
        "justificativa_curta": "Alta relevância e frequência acima do p75",
        "exemplos_interacoes_representativas": ["evt_001", "evt_002", "evt_003"]
      }
    } 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 8.000 caracteres.

3.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.7

3.3.4 Ferramentas do Agente

  • Documentos: Não consulta.
  • Calculadora: Utiliza lógica interna para calcular índices de engajamento.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não utiliza.

3.3.5 Memória

3.3.6 Regras de Orquestração e Transição

Ao concluir sua execução, esse agente aciona o Agente de Identificação de Desengajamento e Geração de Relatórios (RF 4).

RF 4. Agente de Identificação de Desengajamento e Geração de Relatórios

4.1 Tarefa do Agente

Detectar alunos potencialmente desengajados e produzir relatórios acionáveis para educadores.

4.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo índices de engajamento dos alunos e métricas de participação.

# 2. Objetivo
Detectar alunos potencialmente desengajados e produzir relatórios acionáveis para educadores.

# 3. Regras que você deve seguir para gerar sua resposta
- Motivos de alerta (qualquer um aciona): (1) baixa frequência: total_interacoes abaixo do p25 da turma; (2) baixa qualidade: qualidade_media < limiar_qualidade; (3) queda recente: tendencia_ultimas_4_semanas < limiar_queda_semana; (4) ausência: percentual_sessoes_participadas = 0 ou ausência em ausencia_consecutiva_sessoes mais recentes.
- Severidade: 'alta' se 2+ motivos ou engajamento_indice < 30; 'media' se 1 motivo e engajamento_indice entre 30 e 50; 'baixa' para casos limítrofes (ex: apenas queda recente leve).
- Recomendações: mapear motivo → ação: baixa frequência → convidar a liderar breve síntese; baixa qualidade → orientar uso de exemplos e pedir justificativa; queda recente → contato 1:1 para entender barreiras; ausência → verificar questões de presença/tecnologia e propor recuperação.
- Heatmap textual por sessão: descrever picos em faixas de 10 minutos (ex: '10:00-10:10 pico de perguntas'); se não houver timestamps suficientes, registrar 'distribuição temporal insuficiente'.
- Top/bottom 5: ordenar por engajamento_indice; empates resolvidos por maior qualidade_media (no top) e menor (no bottom).
- Tendências semanais: calcular média do engajamento_indice por semana e variação percentual vs. semana anterior; limitar a duas casas decimais.
- Garantir que nenhum dado pessoal sensível além de aluno_id e métricas seja exposto; não incluir conteúdo integral das falas no relatório, apenas resumos curtos quando necessário.
4.3 Configurações do Agente

4.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão bem-sucedida do agente anterior (RF 3).
  • Tipo do input: Este agente deve ser apto a receber como input índices de engajamento e métricas de participação em formato JSON.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 50.000 caracteres.

4.3.2 Especificação do Output

  • Formato de output: O output deve ser um objeto JSON contendo alertas e relatórios acionáveis. A estrutura deve incluir campos como `alertas`, `relatorio_turma`, `top5_engajamento`, `bottom5_engajamento`, `heatmap_sessoes`, `tendencias_semanais`.
  • Exemplo de Estrutura de Output:
     {
      "alertas": [
        {
          "aluno_id": "12345",
          "severidade": "alta",
          "motivos": ["baixa frequência", "queda recente"],
          "recomendacoes": ["Convidar a liderar breve síntese", "Contato 1:1 para entender barreiras"]
        }
      ],
      "relatorio_turma": {
        "resumo_geral": {
          "n_alunos": 30,
          "distribuicao_classes": {
            "alto": 10,
            "medio": 15,
            "baixo": 5
          }
        },
        "top5_engajamento": [
          {"aluno_id": "12345", "engajamento_indice": 85}
        ],
        "bottom5_engajamento": [
          {"aluno_id": "67890", "engajamento_indice": 15}
        ],
        "heatmap_sessoes": [
          {"sessao_id": "sessao_20251219_01", "data_iso": "2025-12-19", "alunos_ativos": 25, "interacoes_totais": 100, "picos_horarios_textual": "10:00-10:10 pico de perguntas"}
        ],
        "tendencias_semanais": [
          {"semana_iso": "2025-W51", "media_indice": 60.5, "variacao_percentual": -0.05}
        ]
      }
    } 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 15.000 caracteres.

4.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.7

4.3.4 Ferramentas do Agente

  • Documentos: Não consulta.
  • Calculadora: Utiliza lógica interna para calcular alertas e relatórios.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não utiliza.

4.3.5 Memória

  • Visibilidade das Instruções (Prompt): As instruções deste agente não são visíveis para agentes subsequentes.
  • Visibilidade da Resposta: A resposta gerada por este agente é o entregável final e não é passada para outros agentes internos.

4.3.6 Regras de Orquestração e Transição

A execução deste agente finaliza o fluxo. O relatório gerado é o resultado que deve ser disponibilizado ao educador.

© 2025 prototipe.ai. Todos os direitos reservados.