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 Análise de Sentimento em Feedback Estudantil. 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 é analisar feedbacks de estudantes para identificar tendências e áreas de melhoria, utilizando técnicas de análise de sentimento e sugerindo ações para melhorar a satisfação dos estudantes e a qualidade dos cursos.
2. Contexto e Problema
Cenário Atual
As instituições de ensino enfrentam desafios na interpretação sistemática de feedbacks qualitativos fornecidos por estudantes. Estes feedbacks são cruciais para identificar tendências e áreas de melhoria, mas a análise manual é demorada e sujeita a erros.
Problemas Identificados
- Dificuldade em interpretar feedbacks qualitativos: A diversidade e subjetividade dos feedbacks tornam sua análise um desafio.
- Falta de identificação de tendências: Sem uma análise sistemática, é difícil identificar padrões consistentes ao longo do tempo.
- Áreas de melhoria pouco claras: Sem identificar claramente as áreas que precisam de atenção, os esforços de melhoria podem ser mal direcionados.
3. Impactos Esperados
A implementação deste agente de IA visa alcançar os seguintes resultados:
- Automatizar a análise de feedbacks, reduzindo o tempo e esforço necessários para interpretar grandes volumes de dados qualitativos.
- Identificar tendências e padrões de forma consistente e confiável, permitindo uma resposta proativa a problemas emergentes.
- Sugerir ações concretas para melhorar a satisfação dos estudantes e a qualidade dos cursos.
4. Visão Geral da Solução
O agente de IA para análise de sentimento em feedback estudantil processa feedbacks textuais dos estudantes, aplica técnicas de análise de sentimento para identificar tendências e áreas de melhoria, e sugere ações para otimizar a qualidade dos cursos e a satisfação dos estudantes. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que esse agente atue como um recurso eficiente e autônomo na análise de feedbacks.
A solução consiste em um fluxo de automação composto por 3 agentes de IA. O processo inicia com a normalização e enriquecimento dos feedbacks, seguido pela classificação de sentimento e identificação de tópicos, e finaliza com a agregação de dados para identificar tendências e sugerir recomendações de ação.
| Agentes | Função Principal |
|---|---|
Agente de Normalização e Enriquecimento de Feedback (RF 1)
| Padronizar e enriquecer feedbacks textuais de estudantes para viabilizar classificação consistente posterior. |
Agente de Classificação de Sentimento e Tópicos (Aspect-Based) (RF 2)
| Classificar sentimento geral e por aspecto, extrair evidências textuais e registrar sinais de qualidade por feedback. |
Agente de Agregação, Tendências e Recomendações (RF 3)
| Consolidar análises individuais para identificar tendências, áreas de melhoria e priorizar ações em nível de curso, professor e geral. |
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. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente de Normalização e Enriquecimento de Feedback
1.1 Tarefa do Agente
Padronizar e enriquecer feedbacks textuais de estudantes para viabilizar classificação consistente posterior.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo uma lista de feedbacks textuais de estudantes. Cada feedback é um objeto JSON com informações associadas ao curso e professor.
# 2. Objetivo
Padronizar e enriquecer os feedbacks para permitir uma classificação consistente e precisa posterior.
# 3. Regras que você deve seguir para gerar sua resposta
- Se 'texto' estiver vazio, nulo ou com menos de 3 palavras significativas, defina tem_conteudo=false e flags_qualidade.muito_curto=true; mantenha o texto_original e pare o processamento de enriquecimento para este item.
- Detecte idioma do texto; se não for pt ou en, marque idioma como 'outro' e flags_qualidade.incompreensivel=true se a compreensão sem tradução for inviável.
- Preserve o texto_original; gere texto_normalizado aplicando: remoção de URLs, normalização de espaçamentos, remoção de excesso de pontuação repetida, expansão de gírias simples (ex: 'prof'→'professora'/'professor' conforme contexto), conversão para minúsculas exceto siglas claras (ex: 'EAD'), e conversão de emojis comuns para descritores semânticos (ex: 😀→':feliz').
- PII: se o texto contiver telefone, e-mail ou CPF, defina contém_pii=true e substitua padrões por marcadores '[telefone]', '[email]', '[cpf]' em texto_sem_pii; caso contrário, defina contém_pii=false e texto_sem_pii=texto_normalizado.
- Sinalize ironia_suspeita em indicadores_linguisticos.tem_ironia_suspeita=true quando coexistirem termos positivos e negativas fortes unidos por conectores adversativos (ex: 'amei... mas...'), ou aspas indicando ceticismo, ou uso de 'só que'/'só que não'.
- Marque duplicado_suspeito quando texto_normalizado coincidir 100% com outro item do mesmo lote com metadados iguais (curso e professor).
- Não remova informações semânticas sobre curso/professor; copie metadados recebidos para o campo metadados preservando chaves originais (curso, professor, data).
- Saída sempre como lista no mesmo ordenamento de entrada; cada item deve conter: id, texto_original, texto_normalizado, idioma, tem_conteudo, contém_pii, texto_sem_pii, indicadores_linguisticos{tem_emojis, tem_maiusculas_excessivas, tem_ironia_suspeita}, flags_qualidade{muito_curto, incompreensivel, duplicado_suspeito}, metadados{curso, professor, data}. 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 feedbacks textuais de estudantes 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 arquivo JSON na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: O input inicial para o fluxo é uma lista de objetos JSON representando feedbacks textuais de estudantes.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs nos formatos:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 50.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser uma lista de objetos JSON normalizados e enriquecidos, prontos para a classificação de sentimentos e tópicos.
-
Exemplo de Estrutura de Output:
[{"id":"fb_001","texto_original":"Amei a prof! Mas a plataforma caiu.","texto_normalizado":"amei a professora mas a plataforma caiu","idioma":"pt","tem_conteudo":true,"contém_pii":false,"texto_sem_pii":"amei a professora mas a plataforma caiu","indicadores_linguisticos":{"tem_emojis":false,"tem_maiusculas_excessivas":false,"tem_ironia_suspeita":false},"flags_qualidade":{"muito_curto":false,"incompreensivel":false,"duplicado_suspeito":false},"metadados":{"curso":"MAT101","professor":"Ana","data":"2025-02-10"}}] - Número de caracteres esperado: O texto final deve ser conciso e informativo, com um tamanho estimado em torno de 4.000 caracteres, podendo variar conforme a complexidade do feedback.
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 Classificação de Sentimento e Tópicos (RF 2).
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Classificação de Sentimento e Tópicos (RF 2).
RF 2. Agente de Classificação de Sentimento e Tópicos (Aspect-Based)
2.1 Tarefa do Agente
Classificar sentimento geral e por aspecto, extrair evidências textuais e registrar sinais de qualidade por feedback.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo uma lista de objetos JSON normalizados e enriquecidos, produzidos pelo agente anterior, cada um representando um feedback textual de estudante.
# 2. Objetivo
Classificar o sentimento geral e por aspecto, extrair evidências textuais e registrar sinais de qualidade para cada feedback.
# 3. Regras que você deve seguir para gerar sua resposta
- Ignore itens com tem_conteudo=false ou flags_qualidade.incompreensivel=true; para esses, retorne apenas id e motivo_ignorado ('sem_conteudo' ou 'incompreensivel').
- Taxonomia fixa de aspectos (categoria): ["didatica","clareza","avaliacao","feedback_do_professor","materiais","comunicacao","suporte_tecnico","plataforma","infraestrutura","carga_horaria","ritmo","conteudo","organizacao","acessibilidade","preco"]; se nenhum aspecto se aplicar, registre aspectos=[].
- Defina sentimento.label entre: 'positivo', 'negativo', 'neutro', 'negativo_misto', 'positivo_misto'. Use 'misto' quando houver ao menos um aspecto positivo e um negativo com |polaridade| ≥ 0.4 cada.
- Calcule polaridade_global em escala de -1 a 1 considerando a média ponderada dos aspectos (peso 1 por aspecto, aumente para 1.5 se evidência contiver queixa operacional direta como 'caiu', 'não funciona', 'erro').
- Confianca (0 a 1): alta (≥0.8) quando houver frases claras e específicas; média (0.6-0.79) quando houver generalidades; baixa (<0.6) quando houver ambiguidade, ironia_suspeita ou muito_curto.
- Para cada aspecto identificado: atribua polaridade (-1 a 1), confianca (0 a 1) e colete de 1 a 3 evidencias (trechos literais do texto_sem_pii). Não invente evidências; apenas recortes do próprio texto.
- emocao_primaria escolha de: ["satisfacao","entusiasmo","indiferenca","frustracao","raiva","tristeza","surpresa"] com base no tom predominante.
- Defina qualidade_classificacao.neutro_por_pouca_evidencia=true quando texto for elogio/critica muito genérica sem objeto (ex: 'ok', 'bom curso').
- Se indicadores_linguisticos.tem_ironia_suspeita=true, marque qualidade_classificacao.texto_com_ironia=true e reduza confianca global em 0.1 (mínimo 0).
- sugestoes_microacoes: gere até 2 sugestões específicas e executáveis por item, alinhadas aos aspectos negativos detectados; formate como imperativos objetivos, sem depender de dados externos.
- Preserve metadados do item de entrada em metadados no output.
- Saída sempre como lista; cada item deve conter: id, sentimento{label, polaridade_global, confianca}, emocao_primaria, aspectos[], sugestoes_microacoes[], qualidade_classificacao{neutro_por_pouca_evidencia, misto, texto_com_ironia}, metadados{curso, professor, data}. 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 do agente anterior (RF 1).
- Tipo do input: Este agente deve ser apto a receber como input uma lista de objetos JSON normalizados e enriquecidos.
-
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 uma lista de objetos JSON com a análise de sentimento e tópicos para cada feedback.
-
Exemplo de Estrutura de Output:
[{"id":"fb_001","sentimento":{"label":"negativo_misto","polaridade_global":-0.2,"confianca":0.76},"emocao_primaria":"frustracao","aspectos":[{"categoria":"didatica","polaridade":0.7,"confianca":0.8,"evidencias":["amei a professora"]},{"categoria":"plataforma","polaridade":-0.9,"confianca":0.9,"evidencias":["a plataforma caiu"]}],"sugestoes_microacoes":["verificar estabilidade da plataforma no horário da turma MAT101"],"qualidade_classificacao":{"neutro_por_pouca_evidencia":false,"misto":true,"texto_com_ironia":true},"metadados":{"curso":"MAT101","professor":"Ana","data":"2025-02-10"}}] - 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 do feedback.
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 de Agregação, Tendências e Recomendações (RF 3).
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Agregação, Tendências e Recomendações (RF 3).
RF 3. Agente de Agregação, Tendências e Recomendações
3.1 Tarefa do Agente
Consolidar análises individuais para identificar tendências, áreas de melhoria e priorizar ações em nível de curso, professor e geral.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo uma lista de objetos JSON com análises de sentimento e tópicos, produzidos pelo agente anterior, cada um representando um feedback textual de estudante.
# 2. Objetivo
Consolidar as análises individuais para identificar tendências, áreas de melhoria e priorizar ações em nível de curso, professor e geral.
# 3. Regras que você deve seguir para gerar sua resposta
- Considere apenas itens analisados com sentimento.label definido (ignore motivos_ignorado).
- Calcule distribuicao_sentimento agregando rótulos; conte 'negativo_misto' e 'positivo_misto' dentro de 'misto' e registre também proporções.
- Calcule nps_proxy: promotores = sentimentos positivos com polaridade_global >= 0.6; detratores = negativos ou mistos com polaridade_global <= -0.2; neutros = demais.
- Para cada categoria de aspecto, compute: freq (número de ocorrências), polaridade_media (média das polaridades dos aspectos) e confidencia_media; liste top 5 positivos e top 5 negativos por freq, desempate por |polaridade_media|.
- Defina areas_melhoria_priorizadas selecionando até 5 categorias negativas com: frequencia >= 5 OU polaridade_media <= -0.4. Classifique impacto_estimado: 'alto' se freq>=15 ou polaridade_media<=-0.7; 'medio' caso contrário quando negativas; 'baixo' para demais não listadas.
- Gere recomendacoes_acao específicas para cada area_melhoria_priorizada, contendo: acao (imperativo claro), responsavel_sugerido entre ["Docente","Coordenacao","TI","Suporte","Conteudo"], esforco_estimado em ["baixo","medio","alto"] usando heurística: mudanças de material=baixo/medio; processos de plataforma=medio/alto; treinamentos=baixo/medio; e impacto_esperado alinhado ao impacto_estimado.
- Ordene recomendacoes_acao por prioridade usando score = (impacto: alto=3, medio=2, baixo=1) + (frequencia_bucket: >=20=3, 10-19=2, 5-9=1) - (esforco: alto=2, medio=1, baixo=0). Menor prioridade numérica indica maior prioridade.
- Produza cortes_por_dimensao por curso e por professor quando metadados existirem, incluindo KPIs: negatividade = (negativo + misto_negativo)/total_do_corte; misto = proporcao de itens rotulados como 'misto'. Liste aspectos_criticos (até 3) por frequência negativa e pontos_fortes (até 3) por frequência positiva.
- Gere alertas quando: (a) qualquer corte por curso tiver negatividade > 0.3; (b) qualquer categoria aumentar > 30% de frequência negativa comparada à média do lote (use média global do lote como baseline interna); (c) presença de mais de 10% de itens com texto_com_ironia=true indicar risco de ruído interpretativo.
- Inclua visao_geral.total_feedbacks (itens válidos), distribuições e nps_proxy; todos os números devem ser inteiros quando contagens e decimais com 2 casas para médias.
- Saída única em objeto JSON com: visao_geral, tendencias{top_aspectos_negativos, top_aspectos_positivos}, areas_melhoria_priorizadas[], recomendacoes_acao[], cortes_por_dimensao{por_curso[], por_professor[]}, alertas[]. 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: Este agente deve ser apto a receber como input uma lista de objetos JSON com análises de sentimento e tópicos.
-
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.
3.3.2 Especificação do Output
- Formato de output: O output deve ser um objeto JSON consolidando tendências, áreas de melhoria e recomendações de ação.
-
Exemplo de Estrutura de Output:
{"visao_geral":{"total_feedbacks":120,"distribuicao_sentimento":{"positivo":48,"negativo":36,"neutro":18,"misto":18},"nps_proxy":{"promotores":45,"neutros":30,"detratores":45}},"tendencias":{"top_aspectos_negativos":[{"categoria":"plataforma","freq":22,"polaridade_media":-0.72},{"categoria":"materiais","freq":15,"polaridade_media":-0.55}],"top_aspectos_positivos":[{"categoria":"didatica","freq":40,"polaridade_media":0.78}]},"areas_melhoria_priorizadas":[{"categoria":"plataforma","criterios":{"frequencia":22,"severidade_media":0.72,"impacto_estimado":"alto"},"justificativa":"quedas recorrentes impactam aulas síncronas"}],"recomendacoes_acao":[{"acao":"estabilizar infraestrutura da plataforma no horário noturno","responsavel_sugerido":"TI","esforco_estimado":"medio","impacto_esperado":"alto","prioridade":1}],"cortes_por_dimensao":{"por_curso":[{"curso":"MAT101","kpis":{"negatividade":0.32,"misto":0.18},"aspectos_criticos":["plataforma"]}],"por_professor":[{"professor":"Ana","kpis":{"negatividade":0.20},"pontos_fortes":["didatica"]}]},"alertas":[{"tipo":"limiar_negatividade","descricao":"Negatividade > 0.3 em MAT101","severidade":"alto"}]} - 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 dos dados analisados.
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 é o resultado final e não é passada para outros agentes internos.
3.3.6 Regras de Orquestração e Transição
A execução deste agente finaliza o fluxo. O JSON gerado é o resultado que deve ser disponibilizado para análise.