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
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Cálculo de Métricas de Participação (RF 2).
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
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Avaliação de Qualidade e Índice de Engajamento (RF 3).
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
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Identificação de Desengajamento e Geração de Relatórios (RF 4).
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.