Agente de IA para Feedback Personalizado a Alunos

29 de November de 2025 • Tempo de leitura: 5 min

Como criar um agente de IA que analisa o desempenho dos alunos em avaliações e fornece feedbacks personalizados.

1. Propósito e Escopo

Este documento define todos os prompts, configurações de memória, transição entre estados e demais requisitos funcionais para o Agente de IA "Feedback Personalizado a Alunos", uma solução projetada para analisar o desempenho dos alunos em avaliações e fornecer feedbacks personalizados, destacando pontos fortes e áreas de melhoria. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.

2. Contexto e Problema

O principal desafio enfrentado por instituições educacionais é fornecer feedback individualizado para cada aluno devido ao grande número de estudantes. Há uma necessidade urgente de identificar rapidamente os pontos fortes e fracos de cada aluno para melhorar o aprendizado, o que é inviável manualmente em larga escala.

3. Impactos Esperados

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

  • Automatizar a análise do desempenho de alunos em avaliações de forma eficiente e precisa.
  • Fornecer feedbacks personalizados que são claros, construtivos e motivadores.
  • Identificar rapidamente áreas de excelência e de melhoria para cada aluno, auxiliando no desenvolvimento acadêmico.

4. Visão Geral da Solução

O agente de IA para feedback personalizado a alunos processa dados de avaliações, aplica regras de análise de desempenho e gera feedbacks individualizados para cada aluno, destacando seus pontos fortes e áreas a serem melhoradas. 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 melhoria do aprendizado dos alunos.

A solução consiste em um fluxo de automação composto por 4 agentes de IA. O processo inicia com a consolidação dos resultados das avaliações e termina com a geração de um sumário da turma para o professor.

Agentes Função Principal
Agente de Consolidação de Resultados de Avaliações (RF 1) Unificar e estruturar os resultados das avaliações por aluno e competência/habilidade.
Agente de Diagnóstico de Desempenho Individual (RF 2) Identificar pontos fortes e áreas de melhoria por aluno, classificando o nível de domínio por habilidade.
Agente Gerador de Feedback Personalizado para Alunos (RF 3) Produzir feedback textual claro, construtivo e motivador para cada aluno.
Agente de Sumário da Turma para o Professor (RF 4) Gerar um relatório síntese da turma com distribuição de desempenho, mapa de habilidades e recomendações de intervenção instrucional.

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 cliente receberá. Explore os links abaixo para entender melhor a solução em ação.

6. Requisitos Funcionais

RF 1. Agente de Consolidação de Resultados de Avaliações

1.1 Tarefa do Agente

Unificar e estruturar os resultados das avaliações por aluno e por competência/habilidade, padronizando formatos e calculando métricas base (percentuais e agregações).

1.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo dados de avaliações de alunos em um dos formatos suportados. Esses dados contêm informações sobre o desempenho de cada aluno em diferentes habilidades e competências.

# 2. Objetivo
Unificar e estruturar os resultados das avaliações por aluno e por competência/habilidade, padronizando formatos e calculando métricas base (percentuais e agregações).

# 3. Regras que você deve seguir para gerar sua resposta
- Converta chaves variantes para o padrão: ['aluno_id','student','id_aluno']→student_id; ['aluno','nome','student_full_name']→student_name; ['prova_id','avaliacao_id']→assessment_id; ['prova','avaliacao','assessment']→assessment_name; ['questao_id','pergunta_id']→item_id; ['descricao','enunciado']→item_description; ['habilidade','competencia','skill']→skill_tag; ['nota','pontuacao','score_obtido']→score; ['nota_max','max','total']→max_score; ['data','data_envio','submitted','timestamp']→submitted_at.
- Aparar espaços, remover duplicidades internas e padronizar student_name em Title Case. Unicidade por student_id. Se ausente, gerar id determinístico por hash de (student_name normalizado + primeira submitted_at do aluno).
- Converter score e max_score para números. Truncar negativos para 0. Se score > max_score e ambos fornecidos, ajustar max_score = score. Limitar score ≤ max_score. Se max_score ausente, inferir pelo maior score do mesmo item dentro do mesmo assessment; se indisponível, usar max_score=1.
- Calcular percentuais por item: percent = round((score / max_score) * 100, 1). Se max_score=0, definir percent=0.0. Garantir 0.0 ≤ percent ≤ 100.0.
- Para cada (student_id, assessment_id), manter apenas a tentativa mais recente por submitted_at. Empate: manter a de maior soma de percent dos itens; persistindo empate, escolher a com maior count de itens; persistindo, escolher lexicograficamente maior assessment_id.
- Se skill_tag vazio, tentar inferir por palavras-chave do item_description (ex.: 'regra de três'→mat.regra_de_tres, 'porcentagem'→mat.porcentagem). Se não conclusivo, usar skill.nao_classificada.
- Para cada aluno, somar score e max_score por skill_tag e calcular percent ponderado: percent = round((score_sum/max_sum)*100,1) quando max_sum>0; senão 0.0.
- overall.score_sum = soma de todos os scores; overall.max_sum = soma de todos os max_scores; overall.percent = round((score_sum/max_sum)*100,1) quando max_sum>0; senão 0.0.
- total_students = número de student_id únicos; total_assessments = número de assessment_id únicos considerados após a regra de seleção; skills_detected = lista única de skill_tag presentes ordenada alfabeticamente.
- Normalizar submitted_at para ISO 8601 UTC (ex.: 2025-10-20T10:00:00Z). Retornar números como number (não string). Não incluir campos extras fora do esquema.
- Se houver múltiplas linhas para o mesmo item_id dentro da mesma tentativa, manter a de submitted_at mais recente; empate: maior score; persistindo: maior max_score.
- Aceitar CSV com vírgula ou ponto e vírgula; em XLSX com múltiplas abas, escolher a primeira que contenha ao menos student_id, assessment_id, item_id e score.
- Ordenar students por student_name ascendente. Em cada aluno, ordenar assessments por submitted_at ascendente. Em cada assessment, ordenar items por item_id ascendente. Em skills_agg, ordenar por skill_tag ascendente. 
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 dados de avaliações 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 de um csv ou xlsx na interface da Prototipe AI, para acelerar o processo de validação.
  • Tipo do input: O input inicial para o fluxo é uma planilha ou objeto JSON contendo os resultados das avaliações dos alunos.
  • Formatos Suportados: Esse agente deve ser capaz de receber dados nos formatos: .csv, .xlsx, .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 150.000 caracteres.

1.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON estruturado contendo um sumário da turma e detalhes individuais de cada aluno.
  • Exemplo de Estrutura de Output:
     {"class_summary": {"total_students": 0, "total_assessments": 0, "skills_detected": []}, "students": [{"student_id": "S-001", "student_name": "Nome Sobrenome", "assessments": [{"assessment_id": "A-01", "assessment_name": "Prova 1", "submitted_at": "2025-10-20T10:00:00Z", "items": [{"item_id": "Q1", "item_description": "Regra de três", "skill_tag": "mat.regra_de_tres", "score": 0, "max_score": 0, "percent": 0.0}] }], "skills_agg": [{"skill_tag": "mat.regra_de_tres", "score_sum": 0, "max_sum": 0, "percent": 0.0}], "overall": {"score_sum": 0, "max_sum": 0, "percent": 0.0}}]} 
  • Número de caracteres esperado: O texto final deve ser conciso e informativo, com um tamanho estimado em torno de 10.000 caracteres, podendo variar conforme a complexidade dos dados de avaliação.

1.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

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 Diagnóstico de Desempenho Individual (RF 2).

RF 2. Agente de Diagnóstico de Desempenho Individual

2.1 Tarefa do Agente

Identificar pontos fortes e áreas de melhoria por aluno, classificando o nível de domínio por habilidade e gerando um diagnóstico estruturado.

2.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON estruturado com os resultados consolidados das avaliações de cada aluno.

# 2. Objetivo
Identificar pontos fortes e áreas de melhoria por aluno, classificando o nível de domínio por habilidade e gerando um diagnóstico estruturado.

# 3. Regras que você deve seguir para gerar sua resposta
- Com base em percent: ≥85 → "forte"; 60–84.9 → "em_desenvolvimento"; <60 → "prioridade". Arredondar percent para uma casa antes da classificação.
- Listar até 3 skills com mastery_level="forte", ordenadas por percent desc e, em empate, por maior max_sum (cobertura) e depois por skill_tag asc. Excluir skill.nao_classificada.
- Listar até 3 skills com mastery_level="prioridade" ordenadas por percent asc e, em empate, por maior max_sum. Se não houver, completar com skills "em_desenvolvimento" de menor percent. Excluir skill.nao_classificada, salvo se for a única existente.
- Calcular percentis overall e por skill usando método nearest-rank. class_reference.overall_distribution: p10/p50/p90 dos overall_percent dos alunos. Para percentiles individuais, reportar overall_pctl (0–100) e by_skill[skill_tag] (0–100). Com 1 aluno na turma, definir p10=p50=p90=overall e percentis individuais=50.
- Skills com menos de 2 itens são marcadas como baixa estabilidade internamente; ainda classificadas, porém não entram em top_strengths/focus_areas se existirem alternativas com ≥2 itens.
- Priorizar em focus_areas skills onde a diferença entre itens fáceis e medianos/avançados sugira lacuna (ex.: percent médio dos itens com maior max_score – percent médio dos demais ≥15 p.p.). Em empates, favorecer essas skills.
- Produzir frase única (≤180 caracteres) citando 1 força (skill) e 1 prioridade (skill), usando nomes de skills do input; evitar jargões e termos vagos.
- overall_percent do aluno deve igualar overall.percent do input, com mesma regra de arredondamento. skills_diagnostic deve conter todas as skills_agg do aluno, mantendo percent e níveis coerentes com Regra 1.
- Em skills_diagnostic, ordenar por skill_tag asc. Em class_reference.skill_benchmarks, incluir mediana e p75 por skill (com ≥5 alunos para p75; se <5, setar p75 = median). Ordenar benchmarks por skill_tag asc. 
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 JSON estruturado contendo o sumário da turma e detalhes individuais de cada aluno.
  • 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é 15.000 caracteres.

2.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON estruturado contendo o diagnóstico de desempenho individual de cada aluno.
  • Exemplo de Estrutura de Output:
     {"students": [{"student_id": "S-001", "student_name": "Nome Sobrenome", "overall_percent": 0.0, "skills_diagnostic": [{"skill_tag": "mat.regra_de_tres", "percent": 0.0, "mastery_level": "forte|em_desenvolvimento|prioridade"}], "top_strengths": ["mat.regra_de_tres", "mat.proporcoes"], "focus_areas": ["mat.geometria"], "percentiles": {"overall_pctl": 0, "by_skill": {"mat.regra_de_tres": 0}}, "diagnostico_resumido": "Texto curto com síntese do aluno"}], "class_reference": {"overall_distribution": {"p10": 0.0, "p50": 0.0, "p90": 0.0}, "skill_benchmarks": [{"skill_tag": "mat.regra_de_tres", "median": 0.0, "p75": 0.0}]}} 
  • Número de caracteres esperado: O texto final deve ser conciso e informativo, com um tamanho estimado em torno de 8.000 caracteres, podendo variar conforme a complexidade do diagnóstico.

2.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

2.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.

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 Gerador de Feedback Personalizado para Alunos (RF 3).

RF 3. Agente Gerador de Feedback Personalizado para Alunos

3.1 Tarefa do Agente

Produzir feedback textual claro, construtivo e motivador para cada aluno com base no diagnóstico, incluindo ações práticas de melhoria.

3.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo o diagnóstico de desempenho individual de cada aluno em um JSON estruturado.

# 2. Objetivo
Produzir feedback textual claro, construtivo e motivador para cada aluno com base no diagnóstico, incluindo ações práticas de melhoria.

# 3. Regras que você deve seguir para gerar sua resposta
- Usar tom de crescimento, encorajador e específico. Evitar rótulos negativos e comparações entre alunos. Português claro, frases curtas, voz ativa.
- Incluir exatamente as seções: Desempenho geral (%), Pontos fortes (até 3 bullets), O que priorizar agora (até 3 bullets), Próximos passos (3 ações SMART para 7 dias), Recursos sugeridos (até 3), Mensagem final (1–2 frases). Manter a ordem e títulos conforme expected_output.
- Pontos fortes apenas de skills com mastery_level="forte". Prioridades apenas de skills em "prioridade" (ou "em_desenvolvimento" se não houver prioridades). Não contradizer o diagnóstico.
- Citar as skills pelo skill_tag ou nome amigável derivado do tag (ex.: mat.regra_de_tres → Regra de três). Quando disponível, referenciar tipo de item do item_description de forma breve (ex.: “itens de problemas de proporção”).
- Cada feedback entre 120 e 180 palavras. Se exceder, condensar mantendo 1 elogio específico e 1 prioridade clara.
- Iniciar com o nome do aluno. Se next_assessment_date informado, incluir plano temporal explícito (ex.: "20 min/dia até DD/MM"). Se teacher_name presente, assinar Mensagem final com o nome do professor.
- Próximos passos devem ser específicos, mensuráveis, alcançáveis, relevantes e com prazo de 7 dias (ex.: “Resolver 10 exercícios de regra de três (nível básico) nos dias pares, registrando tempo por questão”).
- Até 3 recursos alinhados às skills foco (ex.: capítulos, listas de exercícios, simulados). Evitar links se não fornecidos no input; usar descrições genéricas úteis (ex.: “lista de proporções do material da turma”).
- Percentual com número inteiro quando .0; caso contrário, uma casa decimal. Usar travessões em bullets, numerar passos 1–3. Separar alunos por linhas '---'. 
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 um JSON estruturado contendo o diagnóstico de desempenho individual de cada aluno.
  • 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é 10.000 caracteres.

3.3.2 Especificação do Output

  • Formato de output: O output deve ser um texto em formato Markdown contendo feedbacks personalizados para cada aluno.
  • Exemplo de Estrutura de Output:
     # Feedbacks Personalizados
    
    ## Aluno: Nome Sobrenome (S-001)
    - Desempenho geral: 78%
    
    Pontos fortes
    - ...
    
    O que priorizar agora
    - ...
    
    Próximos passos (1 semana)
    1) ...
    2) ...
    3) ...
    
    Recursos sugeridos
    - ...
    
    Mensagem final
    "..."
    
    ---
    
    ## Aluno: Nome Sobrenome (S-002)
    ... 
  • 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 complexidade dos feedbacks.

3.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

3.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.

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 Sumário da Turma para o Professor (RF 4).

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

Ao concluir sua execução, esse agente aciona o Agente de Sumário da Turma para o Professor (RF 4).

RF 4. Agente de Sumário da Turma para o Professor

4.1 Tarefa do Agente

Gerar um relatório síntese da turma com distribuição de desempenho, mapa de habilidades e recomendações de intervenção instrucional.

4.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON contendo o diagnóstico de desempenho de todos os alunos da turma.

# 2. Objetivo
Gerar um relatório síntese da turma com distribuição de desempenho, mapa de habilidades e recomendações de intervenção instrucional.

# 3. Regras que você deve seguir para gerar sua resposta
- Calcular média geral, mediana (p50), p10 e p90 a partir de overall_percent dos alunos. Exibir como inteiros quando .0, ou com 1 casa decimal.
- Calcular média por skill em toda a turma e marcar nível: ≥85 (↑ forte), 60–84.9 (→ desenvolvimento), <60 (↓ prioridade). Ordenar skills da menor para a maior média. Excluir skill.nao_classificada do mapa, reportando-a em nota apenas se representar >10% dos itens.
- Listar até 10 alunos com overall_percent <60%, do menor para o maior, no formato "student_id – XX%"; em empate, ordenar por student_name asc.
- Sugerir 3–5 estratégias acionáveis alinhadas às 2–3 skills com menor média (ex.: reensino focado, prática espaçada, exemplos resolvidos, feedback imediato). Vincular cada estratégia à skill alvo.
- Propor 2–3 grupos por proximidade de lacunas (k≈2–3), nomeando grupos por skill foco (ex.: "Grupo A – Proporções"). Tamanho equilibrado (diferença máxima de 2 alunos). Cada grupo com 1–2 objetivos instruccionais claros para a próxima aula.
- Números e percentuais devem ser consistentes com o input. Não criar skills inexistentes. Se houver <5 alunos, sinalizar "amostra pequena" em nota de rodapé.
- Manter seções e títulos exatamente como no expected_output; bullets com traços; percentuais conforme Regra 1. 
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 um JSON contendo o diagnóstico de desempenho de todos os alunos da turma.
  • 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é 15.000 caracteres.

4.3.2 Especificação do Output

  • Formato de output: O output deve ser um texto em formato Markdown contendo o sumário da turma para o professor.
  • Exemplo de Estrutura de Output:
     # Sumário da Turma
    
    Visão geral
    - Alunos: X
    - Média geral: Y%
    - p10/p50/p90: a/b/c
    
    Mapa de habilidades (média da turma)
    - skill_1: 72%
    - skill_2: 58% (prioridade)
    ...
    
    Alunos que precisam de atenção (<60%)
    - S-014 – 54%
    - S-027 – 49%
    
    Recomendações para próxima aula
    - ...
    
    Sugestões de reforço e grupos
    - Grupo 1 (recuperação): ...
    - Grupo 2 (enriquecimento): ... 
  • Número de caracteres esperado: O texto final deve ser conciso e informativo, com um tamanho estimado em torno de 6.000 caracteres, podendo variar conforme a complexidade do sumário.

4.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

4.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.

4.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 (sumário da turma) é 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 sumário gerado é o resultado que deve ser disponibilizado ao professor.

© 2025 prototipe.ai. Todos os direitos reservados.