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 para Detecção de Anomalias em Registros Acadêmicos. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.
O objetivo deste agente é monitorar registros acadêmicos para identificar inconsistências, como discrepâncias em notas ou disciplinas duplicadas, e notificar a secretaria acadêmica sobre essas anomalias.
2. Contexto e Problema
As instituições de ensino enfrentam desafios significativos na manutenção da integridade dos registros acadêmicos. Erros podem ocorrer devido a entradas manuais, integração inadequada de sistemas ou falhas em processos automatizados.
Problemas comuns incluem anomalias em notas, duplicidades de disciplinas e inconsistências nos registros de frequência. Tais problemas podem resultar em atrasos na emissão de certificados, problemas de conformidade e insatisfação dos alunos.
3. Impactos Esperados
A implementação deste agente de IA visa alcançar os seguintes resultados:
- Reduzir o tempo e esforço necessários para identificar e corrigir anomalias em registros acadêmicos.
- Aumentar a precisão dos registros acadêmicos, minimizando erros que possam afetar alunos e a instituição.
- Melhorar a conformidade com normas educacionais e regulatórias.
- Proporcionar alertas proativos à secretaria acadêmica, permitindo ações corretivas rápidas.
4. Visão Geral da Solução
O agente de IA para detecção de anomalias em registros acadêmicos monitora continuamente os dados acadêmicos, identifica discrepâncias e envia alertas para a secretaria acadêmica. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que esse agente atue de forma eficaz na identificação de anomalias.
A solução é composta por um fluxo de automação que inclui cinco agentes de IA. O processo começa com a execução de consultas em banco de dados e termina com o envio de alertas para a secretaria acadêmica.
| Agentes | Função Principal |
|---|---|
Agente de Execução de Consultas em Banco de Dados (RF 1)
| Realizar conexão com o sistema acadêmico para obter dados brutos de registros. |
Agente de Preparação e Normalização de Dados Acadêmicos (RF 2)
| Padronizar e validar o schema dos dados brutos para um formato único esperado pelo agente analítico. |
Agente Analítico de Detecção de Anomalias em Registros Acadêmicos (RF 3)
| Detectar inconsistências em notas e duplicidades de disciplinas por aluno e período. |
Agente de Preparação de Alertas para Secretaria Acadêmica (RF 4)
| Transformar as anomalias detectadas em mensagens operacionais prontas para envio. |
Agente de Execução de Chamada à API (Envio de Alertas) (RF 5)
| Enviar os alertas gerados para o sistema/canal configurado. |
5. Protótipos
Para proporcionar uma visão clara e tangível da solução proposta, criamos protótipos que demonstram o fluxo de trabalho dos agentes e o resultado final esperado. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente de Execução de Consultas em Banco de Dados
1.1 Tarefa do Agente
Realizar conexão com o sistema acadêmico para obter dados brutos de registros, incluindo matrículas por período, disciplinas, componentes de avaliação, notas parciais e finais, frequência e status de aprovação.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo instruções para acessar o banco de dados acadêmico e extrair informações sobre matrículas, disciplinas e notas.
# 2. Objetivo
Conectar-se ao sistema acadêmico e obter dados brutos necessários para análise de consistência e detecção de anomalias.
# 3. Regras que você deve seguir para gerar sua resposta
- Conectar-se utilizando as credenciais fornecidas de forma segura.
- Obter dados de matrículas, disciplinas, componentes de avaliação, notas, frequência e status de aprovação.
- Certificar-se de que os dados extraídos estão completos e prontos para o próximo estágio de processamento.
# 4. Exemplo de Output que você deve produzir
{
"rows": [
{
"student_id":"123",
"enrollment_id":"E1",
"course_id":"MAT101",
"term":"2025.1",
"grade_components":[
{"component_id":"P1","weight":0.4,"score":7.5},
{"component_id":"P2","weight":0.6,"score":8.0}
],
"final_grade":7.9,
"grading_scale_min":0,
"grading_scale_max":10,
"rounding_mode":"half_up",
"rounding_precision":1,
"attendance_percentage":0.82,
"approval_status":"Aprovado"
}
],
"metadata": {
"row_count": 1,
"extraction_term_range": ["2025.1"]
}
} 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 solicitação de extração de dados via API. Na fase de testes, o fluxo será iniciado pelo envio manual dos dados, que serão enviados diretamente para o agente por upload na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: JSON contendo parâmetros de consulta e autenticação.
-
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 até 5.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo os dados brutos extraídos do sistema acadêmico.
-
Exemplo de Estrutura de Output:
{ "rows": [ { "student_id":"123", "enrollment_id":"E1", "course_id":"MAT101", "term":"2025.1", "grade_components":[ {"component_id":"P1","weight":0.4,"score":7.5}, {"component_id":"P2","weight":0.6,"score":8.0} ], "final_grade":7.9 } ], "metadata": { "row_count": 1 } } - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 1.000 caracteres por linha de dados extraída.
1.3.3 Parâmetros de Geração
- Modelo: Não aplicável (conexão direta ao banco de dados)
- Temperatura: Não aplicável
1.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Conecta-se diretamente ao sistema acadêmico para extração de dados.
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 Preparação e Normalização de Dados Acadêmicos (RF 2).
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Preparação e Normalização de Dados Acadêmicos (RF 2).
RF 2. Agente de Preparação e Normalização de Dados Acadêmicos
2.1 Tarefa do Agente
Padronizar e validar o schema dos dados brutos para um formato único esperado pelo agente analítico, resolvendo nomes de campos, tipos e regras de arredondamento.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo dados brutos de registros acadêmicos extraídos do sistema acadêmico. Esses dados precisam ser padronizados para análise posterior.
# 2. Objetivo
Padronizar e validar os dados recebidos para garantir que estejam prontos para análise de detecção de anomalias.
# 3. Regras que você deve seguir para gerar sua resposta
- Mapear campos de entrada para chaves canônicas: student_id, enrollment_id, course_id, term, components[id,weight,score], final_grade, scale_min, scale_max, rounding[mode,precision], attendance, status.
- Converter tipos: números em ponto flutuante; pesos somando até 1. Se soma de pesos divergir de 1 por tolerância <= 0.01, normalizar redistribuindo proporcionalmente; se > 0.01, registrar em normalization_report e manter valores originais.
- Preencher defaults quando ausentes: scale_min=0, scale_max=10, rounding.mode=half_up, rounding.precision=1, attendance=null.
- Validar termos (term) no formato YYYY.S, mantendo apenas termos presentes em target_terms quando fornecidos no metadata; demais linhas devem ser listadas em dropped_rows.
- Remover espaços e padronizar maiúsculas/minúsculas em status para {Aprovado, Reprovado, Reprovado por Falta} quando possível por correspondência aproximada; caso ambíguo, manter original e registrar em normalization_report.
- Garantir que cada linha tenha chave composta única dedup_key = hash(student_id|course_id|term|enrollment_id).
# 4. Exemplo de Output que você deve produzir
{
"dataset": [
{
"student_id":"123",
"enrollment_id":"E1",
"course_id":"MAT101",
"term":"2025.1",
"components":[
{"id":"P1","weight":0.4,"score":7.5},
{"id":"P2","weight":0.6,"score":8.0}
],
"final_grade":7.9,
"scale_min":0,
"scale_max":10,
"rounding":{"mode":"half_up","precision":1},
"attendance":0.82,
"status":"Aprovado"
}
],
"normalization_report": {
"coerced_fields": ["attendance"],
"dropped_rows": [],
"assumptions": ["scale_min=0, scale_max=10 por padrão quando ausentes"]
}
} 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: JSON contendo os dados brutos extraídos pelo agente anterior.
-
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 até 10.000 caracteres.
2.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo o dataset padronizado e um relatório de normalização.
-
Exemplo de Estrutura de Output:
{ "dataset": [ { "student_id":"123", "enrollment_id":"E1", "course_id":"MAT101", "term":"2025.1", "components":[ {"id":"P1","weight":0.4,"score":7.5}, {"id":"P2","weight":0.6,"score":8.0} ], "final_grade":7.9 } ], "normalization_report": { "coerced_fields": ["attendance"], "dropped_rows": [] } } - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 1.500 caracteres por linha de dados processada.
2.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
2.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Utiliza lógica interna para conversão de tipos e normalização de dados.
- 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 Analítico de Detecção de Anomalias em Registros Acadêmicos (RF 3).
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente Analítico de Detecção de Anomalias em Registros Acadêmicos (RF 3).
RF 3. Agente Analítico de Detecção de Anomalias em Registros Acadêmicos
3.1 Tarefa do Agente
Detectar inconsistências em notas e duplicidades de disciplinas por aluno e período e classificar severidade, evidências e ação sugerida.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um dataset padronizado de registros acadêmicos. Este dataset precisa ser analisado para detecção de anomalias.
# 2. Objetivo
Detectar anomalias nos dados acadêmicos e configurar um relatório detalhado das inconsistências encontradas.
# 3. Regras que você deve seguir para gerar sua resposta
- Analisar somente registros no dataset. Se dataset vazio, retornar anomalies_detected=[] e summary zerado.
- Regra G0 (escala válida): validar final_grade, componentes.score ∈ [scale_min, scale_max]. Fora do intervalo => anomaly type_code=GRADE_OUT_OF_RANGE, severity=critical. Incluir expected_range.
- Regra G1 (recomposição da nota final): calcular média ponderada M = sum(score_i * weight_i). Aplicar arredondamento informado em rounding.mode {half_up, half_down, floor, ceil, half_even} e rounding.precision (casas decimais) ao valor final esperado E apenas após compor M. Se ausência de rounding, usar half_up com precision=1. Discrepância: |final_grade - E| > max(grade_tolerance_relative*(scale_max-scale_min), grade_tolerance_min_abs) => anomaly FINAL_GRADE_MISMATCH, severity=high. Registrar observed_value, expected_value, tolerance usada e evidência com M, modo e precisão.
- Regra G2 (soma de pesos): se |sum(weights)-1| > 0.01, anomaly WEIGHTS_SUM_INVALID, severity=medium, sugerir correção dos pesos. Não interrompe demais verificações.
- Regra A1 (frequência vs status): se attendance não nula e attendance < min_attendance_for_approval e status em {Aprovado}, anomaly ATTENDANCE_STATUS_CONFLICT, severity=high. Se attendance >= min_attendance_for_approval e status = "Reprovado por Falta", anomaly ATTENDANCE_STATUS_CONFLICT, severity=medium.
- Regra D1 (duplicidade de matrícula): para cada (student_id, course_id, term) contar matrículas ativas. Contagem >1 => anomaly DUPLICATE_ENROLLMENT por conjunto, severity=critical. Incluir enrollment_ids envolvidos em evidence.
- Regras de deduplicação de anomalias: chavear por (type_code, student_id, course_id, term). Se múltiplas ocorrências idênticas, manter uma e agrupar evidências.
- Classificação de severidade: critical={GRADE_OUT_OF_RANGE, DUPLICATE_ENROLLMENT}; high={FINAL_GRADE_MISMATCH, ATTENDANCE_STATUS_CONFLICT com aprovação indevida}; medium={WEIGHTS_SUM_INVALID, ATTENDANCE_STATUS_CONFLICT sem aprovação indevida}.
- Campos obrigatórios por anomalia: anomaly_id (gerar como prefixo "ANOM-" + contador), type_code, severity, student_id, course_id, term, observed_value (quando aplicável), expected_value/expected_range (quando aplicável), tolerance (quando aplicável), evidence (texto objetivo com valores), suggested_action (ação concreta e única).
- Saída summary: total e contagem por type_code sempre presentes.
# 4. Exemplo de Output que você deve produzir
{
"anomalies_detected": [
{
"anomaly_id":"ANOM-0001",
"type_code":"GRADE_OUT_OF_RANGE",
"severity":"critical",
"student_id":"123",
"course_id":"MAT101",
"term":"2025.1",
"observed_value":11.0,
"expected_range":"[0,10]",
"tolerance":null,
"evidence":"final_grade=11 acima do máximo 10",
"suggested_action":"Corrigir nota final para dentro da escala ou revisar componentes"
}
],
"summary": {
"total": 1,
"by_type": {
"GRADE_OUT_OF_RANGE": 1
}
}
} 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 do agente anterior (RF 2).
- Tipo do input: JSON contendo o dataset padronizado e o relatório de normalização.
-
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 até 15.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo as anomalias detectadas e um sumário das mesmas.
-
Exemplo de Estrutura de Output:
{ "anomalies_detected": [ { "anomaly_id":"ANOM-0001", "type_code":"GRADE_OUT_OF_RANGE", "severity":"critical", "student_id":"123", "course_id":"MAT101", "term":"2025.1", "observed_value":11.0 } ], "summary": { "total": 1 } } - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 2.000 caracteres por anomalia registrada.
3.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
3.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Utiliza lógica interna para detecção e classificação de anomalias.
- 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 Preparação de Alertas para Secretaria Acadêmica (RF 4).
3.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Preparação de Alertas para Secretaria Acadêmica (RF 4).
RF 4. Agente de Preparação de Alertas para Secretaria Acadêmica
4.1 Tarefa do Agente
Transformar as anomalias detectadas em mensagens operacionais agrupadas por prioridade e destinatário, prontas para envio pelos canais definidos.
4.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um relatório de anomalias detectadas em registros acadêmicos. Essas anomalias precisam ser convertidas em alertas prontos para envio.
# 2. Objetivo
Preparar alertas operacionais baseados nas anomalias detectadas, prontos para envio à secretaria acadêmica.
# 3. Regras que você deve seguir para gerar sua resposta
- Agrupar anomalias por severidade (critical > high > medium) e por destinatário definido em routing.by_type; fallback para routing.default_recipient.
- Montar subject com prefixo [Alerta Acadêmico], número total de anomalias incluídas e, se possível, o(s) período(s) afetado(s).
- Montar body com: 1) resumo por type_code; 2) lista tabular até limits.items_per_message com campos chave: student_id, course_id, term, type_code, severity, observed_value, expected_value/expected_range; 3) instrução de próxima ação sugerida.
- Gerar attachment CSV com todas as anomalias recebidas (sem limite), usando separador vírgula, cabeçalhos fixos e valores sem quebras de linha.
- Se não houver anomalias, retornar alerts=[] e alert_summary com zeros.
- Preservar caracteres acentuados no corpo; evitar informações pessoais sensíveis além dos identificadores acadêmicos estritamente necessários.
# 4. Exemplo de Output que você deve produzir
{
"alerts": [
{
"recipient":"secretaria@instituicao.edu",
"channel":"email",
"subject":"[Alerta Acadêmico] 3 anomalias críticas detectadas - 2025.1",
"body":"Resumo por tipo: DUPLICATE_ENROLLMENT=1, GRADE_OUT_OF_RANGE=1, FINAL_GRADE_MISMATCH=1\nItens (até 25): ...",
"attachments":[
{"filename":"anomalias_2025-12-17.csv","content":"student_id,course_id,term,type,severity,observed,expected\n..."}
]
}
],
"alert_summary": {
"alerts_count": 1,
"anomalies_included": 3
}
} 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 do agente anterior (RF 3).
- Tipo do input: JSON contendo as anomalias detectadas e o sumário das mesmas.
-
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 até 20.000 caracteres.
4.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo os alertas prontos para envio e um sumário dos alertas.
-
Exemplo de Estrutura de Output:
{ "alerts": [ { "recipient":"secretaria@instituicao.edu", "channel":"email", "subject":"[Alerta Acadêmico] 3 anomalias críticas detectadas - 2025.1", "body":"Resumo por tipo: DUPLICATE_ENROLLMENT=1, GRADE_OUT_OF_RANGE=1, FINAL_GRADE_MISMATCH=1\nItens (até 25): ...", "attachments":[ {"filename":"anomalias_2025-12-17.csv","content":"student_id,course_id,term,type,severity,observed,expected\n..."} ] } ], "alert_summary": { "alerts_count": 1, "anomalies_included": 3 } } - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 3.000 caracteres por alerta preparado.
4.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
4.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Utiliza lógica interna para formatação e preparação de alertas.
- 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 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 Execução de Chamada à API (Envio de Alertas) (RF 5).
4.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Execução de Chamada à API (Envio de Alertas) (RF 5).
RF 5. Agente de Execução de Chamada à API (Envio de Alertas)
5.1 Tarefa do Agente
Enviar os alertas gerados para o sistema/canal configurado (ex.: e-mail, sistema de chamados) e retornar comprovantes de entrega.
5.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo alertas prontos para envio à secretaria acadêmica. Esses alertas devem ser transmitidos via API para o sistema de comunicação configurado.
# 2. Objetivo
Enviar os alertas gerados para o sistema/canal configurado e obter comprovantes de entrega.
# 3. Regras que você deve seguir para gerar sua resposta
- Executar a transmissão dos alertas utilizando a API configurada para comunicação.
- Para cada alerta enviado, receber um comprovante de entrega contendo status e identificador de mensagem.
- Em caso de falha, registrar o erro e incluí-lo no relatório de saída para análise manual.
# 4. Exemplo de Output que você deve produzir
{
"deliveries": [
{
"recipient":"secretaria@instituicao.edu",
"channel":"email",
"status":"sent",
"provider_message_id":"abc-123",
"timestamp":"2025-12-17T08:21:00Z"
}
],
"failed": []
} 5.3 Configurações do Agente
5.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 4).
- Tipo do input: JSON contendo os alertas prontos para envio e o sumário dos alertas.
-
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 até 10.000 caracteres.
5.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo os comprovantes de entrega dos alertas enviados.
-
Exemplo de Estrutura de Output:
{ "deliveries": [ { "recipient":"secretaria@instituicao.edu", "channel":"email", "status":"sent", "provider_message_id":"abc-123", "timestamp":"2025-12-17T08:21:00Z" } ], "failed": [] } - Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 1.500 caracteres por comprovante de entrega registrado.
5.3.3 Parâmetros de Geração
- Modelo: Não aplicável (uso de API externa)
- Temperatura: Não aplicável
5.3.4 Ferramentas do Agente
- Documentos: Não consulta.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Conecta-se ao sistema de comunicação configurado para envio de alertas.
5.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 execução deste agente finaliza o fluxo. Os comprovantes de entrega são o resultado final e não são passados para outros agentes internos.
5.3.6 Regras de Orquestração e Transição
A execução deste agente finaliza o fluxo. Os comprovantes de entrega gerados são o resultado que deve ser disponibilizado ao usuário.