Agente de IA para Recomendações de Leitura Personalizadas para Alunos

24 de December de 2025 • Tempo de leitura: 5 min

Como criar um agente de IA que analisa o histórico de leitura dos alunos e recomenda novos livros com base em seus interesses e nível de leitura.

1. Propósito e Escopo

Este documento define todos os prompts, configurações de memória, transição entre estados, consulta a documentos e demais requisitos funcionais para o Fluxo de Agentes "Recomendações de Leitura Personalizadas para Alunos", uma solução de automação projetada para oferecer sugestões de leitura personalizadas para alunos com base em seus históricos de leitura e interesses. 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 o histórico de leitura dos alunos e recomendar novos livros que correspondam aos seus interesses e nível de leitura, mantendo-os engajados e motivados.

2. Contexto e Problema

Cenário Atual

Atualmente, as escolas enfrentam desafios significativos ao tentar oferecer recomendações de leitura personalizadas para cada aluno. Os bibliotecários têm pouco tempo para analisar individualmente o histórico de leitura dos alunos, o que dificulta a manutenção do engajamento dos alunos com sugestões relevantes e motivadoras.


Problemas Identificados

  • Dificuldade em oferecer recomendações personalizadas: A falta de tempo dos bibliotecários para analisar individualmente o histórico de leitura dos alunos leva a recomendações genéricas.
  • Falta de engajamento dos alunos: Sugestões de leitura não alinhadas com os interesses dos alunos resultam em desinteresse e baixa motivação para a leitura.

3. Impactos Esperados

A implementação deste fluxo de automação visa alcançar os seguintes resultados:

  • Aumentar o engajamento dos alunos com sugestões de leitura personalizadas e motivadoras.
  • Otimizar o tempo dos bibliotecários, permitindo que o sistema automatizado analise o histórico de leitura e forneça recomendações precisas.
  • Melhorar a experiência de leitura dos alunos, promovendo um interesse contínuo por novos livros e gêneros.

4. Visão Geral da Solução

O agente de IA para recomendações de leitura personalizadas analisa o histórico de leitura dos alunos e utiliza algoritmos de recomendação para sugerir novos livros que correspondam ao nível de leitura e interesses dos alunos. 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 recomendação de livros para alunos.

A solução consiste em um fluxo de automação composto por 4 agentes de IA. O processo inicia com a análise do histórico de leitura dos alunos e termina com a geração de uma lista de recomendações personalizadas.

A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.

Agentes Função Principal
Agente de Análise de Histórico de Leitura (RF 1) Analisar o histórico de leitura dos alunos para identificar preferências e interesses.
Agente de Preparação de Parâmetros de Busca de Catálogo (RF 2) Transformar o perfil do leitor em parâmetros prontos de busca para a API de catálogo de livros.
Agente de Execução de Chamada à API (RF 3) Realizar chamada à API do Sistema de Catálogo de Livros para obter a lista de candidatos a recomendação.
Agente de Recomendação de Livros (RF 4) Gerar a lista final de recomendações personalizadas para os alunos.

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

6. Requisitos Funcionais

RF 1. Agente de Análise de Histórico de Leitura

1.1 Tarefa do Agente

Analisar o histórico de leitura dos alunos para identificar, em uma única execução, preferências por gêneros e autores, idioma predominante, nível de leitura e sinais de engajamento/recência.

1.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com dados do histórico de leitura dos alunos. Este JSON contém informações detalhadas sobre os livros lidos, incluindo títulos, autores, gêneros, datas de início e fim, status de leitura, avaliações, idioma e outros detalhes relevantes.

# 2. Objetivo
Analisar o histórico de leitura para identificar padrões de preferência e interesses dos alunos, gerando um perfil detalhado do leitor.

# 3. Regras que você deve seguir para gerar sua resposta
- Calcular cold_start como true quando o histórico tiver menos de 3 itens concluídos nos últimos 180 dias; definir motivo_cold_start conforme o caso: 'poucos_itens' ou 'sem_recencia'.
- Para pontuar gêneros e autores: considerar apenas itens com status 'concluido' (peso_base=1.0), 'em_andamento' (0.5) e 'abandonado' (-0.7). Aplicar decaimento temporal: fator_recencia = exp(-dias_desde_data_fim/180). Ajuste por avaliação: delta_avaliacao = (avaliacao-3)*0.15 (usar 0 se ausente). Score_item = peso_base * fator_recencia + delta_avaliacao; somar por genero e por autor.
- Normalizar os escores por genero e por autor para 0..1 dividindo pelo maior escore do respectivo conjunto; manter suporte_itens (contagem de obras distintas) e suporte_recencia_dias (mínimo dias desde leitura de itens do gênero/autor).
- Idiomas preferidos: proporção por contagem ponderada (mesmo Score_item) e normalizada para somar 1. Ordenar por proporção desc.
- Nível de leitura inferido: se 'nivel_catalogo' estiver presente em >=40% dos itens concluídos, escolher o modo predominante (ou mediana se for escala numérica como Lexile). Caso contrário, usar heurística: média ponderada de páginas por dia (paginas / max(1, dias leitura)), faixa_etaria_obra predominante e complexidade implícita (penalizar obras abandonadas com páginas altas). Mapear para {fund1,fund2,medio} pela mediana do conjunto ponderado. Definir faixa_sugerida com tolerância: se tolerancia_desafio='alta' então [nivel-1, nivel+1], 'moderada' [nivel, nivel+1], 'baixa' [nivel, nivel].
- Tolerância a desafio: 'alta' se existirem avaliações >=4 em obras acima do nível base (quando identificável) em pelo menos 30% dos casos recentes (<=120 dias); 'baixa' se houver abandonos recorrentes (>20%) em obras acima do nível; caso contrário 'moderada'.
- Recência: identificar o último gênero pela obra mais recente concluída; calcular dias_desde_ultima_leitura pela data_fim mais recente; se ausente, usar data_inicio.
- livros_lidos_para_excluir: listar pares {titulo, autor} únicos de obras com status 'concluido' ou 'em_andamento'.
- Diretrizes de conteúdo: se houver faixa_etaria_aluno em input externo, preservar; caso ausente, inferir pela moda de faixa_etaria_obra das leituras concluídas; restrições manter vazio se não fornecidas.
- Garantir que generos_preferidos e autores_preferidos retornem no máximo 10 itens cada, ordenados por score_normalizado_0a1 desc. 
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 um JSON com dados do histórico de leitura dos alunos 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 do JSON na interface da Prototipe AI, para acelerar o processo de validação.
  • Tipo do input: O input inicial para o fluxo é um JSON com o histórico de leitura dos alunos.
  • 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.

1.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo o perfil detalhado do leitor, incluindo preferências por gêneros, autores, nível de leitura e diretrizes de conteúdo.
  • Exemplo de Estrutura de Output:
     {
      "perfil_leitor": {
        "aluno_id": "123456",
        "cold_start": false,
        "idiomas_preferidos": [{"idioma": "pt", "proporcao": 0.8}],
        "generos_preferidos": [{"genero": "Aventura", "score_normalizado_0a1": 0.9}],
        "autores_preferidos": [{"autor": "J.K. Rowling", "score_normalizado_0a1": 0.85}],
        "nivel_leitura_inferido": {"nivel_base": "medio", "metodo": "catalogo", "faixa_sugerida": ["medio", "medio"]},
        "tolerancia_desafio": "moderada",
        "recencia": {"ultimo_genero": "Fantasia", "dias_desde_ultima_leitura": 30},
        "livros_lidos_para_excluir": [{"titulo": "Harry Potter", "autor": "J.K. Rowling"}],
        "diretrizes_conteudo": {"faixa_etaria_aluno": "Juvenil", "restricoes": []}
      }
    } 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 2.500 caracteres.

1.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

1.3.4 Ferramentas do Agente

  • Documentos: Não consulta.
  • Calculadora: Utiliza lógica interna para cálculo de escores e níveis de leitura.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não utiliza.

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 Preparação de Parâmetros de Busca de Catálogo (RF 2).

RF 2. Agente de Preparação de Parâmetros de Busca de Catálogo

2.1 Tarefa do Agente

Transformar o perfil do leitor em parâmetros prontos de busca para a API de catálogo de livros.

2.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com o perfil do leitor, gerado pelo agente anterior. Este JSON contém informações detalhadas sobre as preferências de leitura do aluno, incluindo gêneros, autores, nível de leitura e diretrizes de conteúdo.

# 2. Objetivo
Transformar o perfil do leitor em parâmetros prontos de busca para a API de catálogo de livros, garantindo que os parâmetros estejam otimizados para obter as melhores recomendações.

# 3. Regras que você deve seguir para gerar sua resposta
- Selecionar até 2 gêneros com maior score para a camada 'essencial', 3-5 para 'expandido' (excluindo os já usados) e 1 emergente para 'exploracao' (gênero com crescimento recente: suporte_recencia_dias <=60 e score >= mediana do conjunto). Se cold_start=true, definir essencial como gêneros apropriados à faixa etária do aluno (ex: infantojuvenil/ficção infantil) e exploracao como um gênero adjacente seguro (ex: aventura, mistério leve).
- termos_autores: incluir até 3 autores preferidos com maior score na camada 'essencial' quando houver; não repetir nas demais camadas.
- faixa_nivel: usar faixa_sugerida do perfil; se tolerancia_desafio='alta', ampliar superior em +1; se 'baixa', reduzir superior em -1, nunca abaixo do mínimo.
- idiomas: se politicas_busca.idiomas_permitidos existir, usar interseção com idiomas_preferidos do perfil (ordem por proporção); caso contrário, usar até 2 idiomas com maior proporção no perfil.
- ordenacao: 'essencial' por relevancia, 'expandido' por popularidade, 'exploracao' por novidade.
- limite por consulta: distribuir limite_resultados respeitando proporcao_camadas (arredondar para inteiro, garantindo soma = limite_resultados). page_size = min(50, limite_resultados).
- exclusões: incluir todos livros de livros_lidos_para_excluir.
- Garantir que o payload não contenha campos nulos e que arrays vazios sejam omitidos. 
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 contendo o perfil do leitor gerado 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 texto com até 6.000 caracteres.

2.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo os parâmetros de busca otimizados para a API de catálogo de livros.
  • Exemplo de Estrutura de Output:
     {
      "payload_busca_catalogo": {
        "consultas": [
          {
            "camada": "essencial",
            "termos_generos": ["Aventura", "Fantasia"],
            "termos_autores": ["J.K. Rowling"],
            "faixa_nivel": ["medio", "medio"],
            "idiomas": ["pt"],
            "ordenacao": "relevancia",
            "limite": 60
          }
        ],
        "exclusoes": {
          "titulos_autores": [{"titulo": "Harry Potter", "autor": "J.K. Rowling"}]
        },
        "proporcao_camadas": {"essencial":0.6, "expandido":0.3, "exploracao":0.1},
        "page_size": 50,
        "pagina_inicial": 1
      }
    } 
  • Número de caracteres esperado: O JSON gerado deve ser claro e otimizado, com um tamanho estimado em 1.500 caracteres.

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 ajustar os parâmetros de busca.
  • 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 Execução de Chamada à API (RF 3).

2.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 (RF 3).

RF 3. Agente de Execução de Chamada à API

3.1 Tarefa do Agente

Realizar chamada à API do Sistema de Catálogo de Livros para obter a lista de candidatos a recomendação conforme o payload recebido.

3.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com os parâmetros de busca otimizados para a API de catálogo de livros. Este JSON contém todas as informações necessárias para realizar a chamada à API e obter os dados de livros candidatos a recomendação.

# 2. Objetivo
Realizar a chamada à API do Sistema de Catálogo de Livros utilizando os parâmetros recebidos e retornar uma lista de livros candidatos a recomendação.

# 3. Regras que você deve seguir para gerar sua resposta
- Realizar a chamada à API utilizando o payload recebido como argumento.
- A API retornará uma lista de livros candidatos a recomendação.
- Seu output final deve ser um JSON contendo a lista de livros, cada item com informações essenciais como título, autor, gênero, idioma, nível de catálogo e outras informações relevantes.
- Em caso de falha na chamada da API, o processo deve ser interrompido e o erro registrado para análise manual. 
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 um JSON com os parâmetros de busca otimizados para a API de catálogo de livros.
  • 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é 6.000 caracteres.

3.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo a lista de livros candidatos a recomendação, com informações essenciais para cada livro.
  • Exemplo de Estrutura de Output:
     {
      "dados_catalogo": [
        {
          "titulo": "O Senhor dos Anéis",
          "autor": "J.R.R. Tolkien",
          "genero": "Fantasia",
          "idioma": "pt",
          "nivel_catalogo": "medio",
          "data_publicacao": "1954-07-29",
          "sinopse": "Uma aventura épica na Terra Média.",
          "disponibilidade": true,
          "id_externo": "123abc"
        }
      ]
    } 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 3.000 caracteres.

3.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: Não se aplica (uso de ferramenta)

3.3.4 Ferramentas do Agente

  • Documentos: Não consulta.
  • Calculadora: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: O agente deverá enviar o JSON recebido para a API externa do Sistema de Catálogo de Livros e retornar a lista de livros recebida como resposta.

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 Recomendação de Livros (RF 4).

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

Ao concluir sua execução, esse agente aciona o Agente de Recomendação de Livros (RF 4).

RF 4. Agente de Recomendação de Livros

4.1 Tarefa do Agente

Gerar a lista final de recomendações personalizadas combinando o perfil do leitor com os candidatos do catálogo, aplicando critérios de adequação, diversidade e engajamento.

4.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo dois inputs:
1.  O JSON com o perfil do leitor, gerado pelo agente de análise de histórico de leitura.
2.  O JSON com a lista de livros candidatos a recomendação, obtido pela chamada à API do Sistema de Catálogo de Livros.

# 2. Objetivo
Gerar a lista final de recomendações personalizadas para os alunos, combinando o perfil do leitor com os candidatos do catálogo e aplicando critérios de adequação, diversidade e engajamento.

# 3. Regras que você deve seguir para gerar sua resposta
- Excluir livros que coincidam com livros_lidos_para_excluir por título+autor (case-insensitive, ignorar acentos). Descartar itens fora dos idiomas selecionados ou sem genero.
- Pontuação base por alinhamento de gênero: usar score do genero do perfil (0..1) quando existir; se ausente, 0.3. Bônus por autor preferido: +0.15. Penalidade por desvio de nível: -0.2 por cada passo acima do limite superior da faixa_sugerida e -0.1 por passo abaixo do mínimo (não recomendar abaixo se tolerancia='baixa').
- Recência temática: se genero == ultimo_genero e recencia <= 45 dias, +0.05; se aluno com recência > 120 dias, favorecer novidade: +0.05 para data_publicacao nos últimos 24 meses.
- Popularidade/novidade: se ordenação do payload marcar 'novidade' ou data_publicacao <= 24 meses, +0.03; se disponibilidade == false, penalizar -0.2.
- Diversidade: após pontuação, aplicar reordenamento para evitar repetição do mesmo autor em posições consecutivas e garantir pelo menos 3 gêneros distintos quando possível; se necessário, elevar itens de 'expansao' para atender diversidade mínima.
- Classificar tipo: 'continuidade' se genero no top 2 ou autor preferido; 'expansao' se genero entre posições 3-5; 'exploracao' se genero emergente ou fora do conjunto preferido mas compatível com faixa etária e nível.
- Probabilidade de aceitação: mapear a pontuação final para 0..1 por min-max scaling no conjunto de candidatos (se todos iguais, atribuir 0.6 padrão).
- Adequação por faixa etária: true apenas se a obra estiver compatível com diretrizes_conteudo/faixa_etaria_aluno; se ausente, inferir pela categoria/genero e sinopse (evitar temas sensíveis explícitos). Itens inadequados devem ser removidos.
- Tamanho da lista: selecionar top 10; manter até 2 reservas (posições 11-12). Garantir ao menos 1 item de 'exploracao' se incluir_exploracao=true e não houver cold_start; em cold_start, limitar explorações a no máximo 20%.
- Textos de motivo e justificativa: linguagem motivadora, positiva, sem spoilers e com foco em conexão com interesses (ex: "Se você gostou de [autor/gênero], este título aprofunda..." ou "Uma opção rápida e envolvente para seu nível atual"). Respeitar limites de caracteres quando indicado.
- Metadados: calcular diversidade_autores como proporção de autores únicos nas recomendações (0..1) e cobertura_generos como distribuição proporcional dos gêneros selecionados. 
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: Este agente deve ser apto a receber dois JSONs como input: o perfil do leitor e a lista de livros candidatos a recomendaçã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 combinado de até 9.000 caracteres.

4.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo a lista final de recomendações personalizadas, com detalhes sobre cada livro e metadados sobre o processo de recomendação.
  • Exemplo de Estrutura de Output:
     {
      "recomendacoes": [
        {
          "titulo": "O Hobbit",
          "autor": "J.R.R. Tolkien",
          "genero": "Fantasia",
          "idioma": "pt",
          "nivel_recomendado": "medio",
          "tipo": "continuidade",
          "motivo_curto": "Se você gostou de 'O Senhor dos Anéis', este título aprofunda o universo Tolkien.",
          "justificativa": "Uma leitura envolvente e clássica que complementa sua jornada na Terra Média.",
          "adequacao_faixa_etaria": true,
          "motivo_adequacao": "Adequado para leitores juvenis.",
          "novidade": false,
          "data_publicacao": "1937-09-21",
          "prob_aceitacao_0a1": 0.85,
          "rank": 1,
          "resumo_seguro": "A história de Bilbo Bolseiro em sua aventura épica.",
          "cta_personalizado": "Explore mais sobre a Terra Média!"
        }
      ],
      "metadados": {
        "cobertura_generos": {"Fantasia": 0.5},
        "diversidade_autores": 0.8,
        "regras_aplicadas": ["Alinhamento de gênero", "Diversidade de autores"]
      }
    } 
  • Número de caracteres esperado: O JSON gerado deve ser claro e detalhado, com um tamanho estimado em 4.500 caracteres.

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 cálculo de pontuações e probabilidades de aceitação.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não utiliza.

4.3.5 Memória

  • Visibilidade das Instruções (Prompt): As instruções 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, gerando a lista de recomendações que deve ser disponibilizada ao usuário.

© 2025 prototipe.ai. Todos os direitos reservados.