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
- 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 Diagnóstico de Desempenho Individual (RF 2).
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
- 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 Gerador de Feedback Personalizado para Alunos (RF 3).
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.