Agente de IA para Catalogação de Livros em Bibliotecas Escolares

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

Como criar um agente de IA que auxilia na catalogação automática de novos livros, organizando informações como título, autor, resumo e classificação etária.

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 Agente de IA para Catalogação de Livros em Bibliotecas Escolares. 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 é automatizar o processo de catalogação de livros, extraindo e organizando informações essenciais como título, autor, resumo e classificação etária, reduzindo a necessidade de trabalho manual e minimizando erros.

2. Contexto e Problema

Cenário Atual

A catalogação de livros em bibliotecas escolares é um processo manual, demorado e propenso a erros. As bibliotecas enfrentam dificuldades em manter registros atualizados e precisos de todos os livros disponíveis, além de uma falta de padronização nas informações dos livros, como classificação etária e resumos.


Problemas Identificados

  • Processo demorado: A catalogação manual consome tempo valioso que poderia ser dedicado a outras atividades.
  • Propensão a erros: A natureza manual do processo aumenta a probabilidade de erros nos registros.
  • Falta de padronização: As informações dos livros muitas vezes não seguem um padrão, dificultando a organização e a busca.

3. Impactos Esperados

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

  • Reduzir o tempo de catalogação em pelo menos 70%.
  • Minimizar erros nos registros de livros através da automação do processo.
  • Padronizar as informações dos livros, melhorando a organização e a busca.
  • Atualizar o catálogo em tempo real, garantindo que todas as informações estejam sempre precisas e atualizadas.

4. Visão Geral da Solução

O agente de IA para catalogação de livros em bibliotecas escolares automatiza a extração e organização de informações de novos livros, garantindo que dados como título, autor, resumo e classificação etária sejam processados de forma precisa e padronizada. 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 catalogação de livros escolares.

A solução consiste em um fluxo de automação composto por 6 agentes de IA. O processo inicia com a preparação e padronização de entrada dos dados e termina com a execução de chamada à API para inserir ou atualizar o registro do livro no sistema de catálogo.

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

Agentes Função Principal
Agente de Preparação e Padronização de Entrada (RF 1) Receber dados brutos de novos livros e organizar em um envelope padronizado para processamento posterior.
Agente de Extração de Metadados Bibliográficos (RF 2) Extrair de forma estruturada título, autores, resumo, identificadores e demais metadados essenciais.
Agente de Classificação Temática e Etária (RF 3) Atribuir categoria temática e classificação etária coerentes para uso em bibliotecas escolares.
Agente de Validação e Normalização de Metadados (RF 4) Aplicar regras de consistência e padronização antes do envio ao catálogo.
Agente de Decisão de Inserção ou Atualização e Geração de Payload (RF 5) Decidir entre criar novo registro ou atualizar existente e preparar payload do catálogo.
Agente de Execução de Chamada à API (RF 6) Realizar chamada à API do Sistema de Catálogo para inserir ou atualizar o registro do livro.

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 Preparação e Padronização de Entrada

1.1 Tarefa do Agente

Receber dados brutos de novos livros e organizar em um envelope padronizado para processamento posterior.

1.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo dados brutos de novos livros, que podem incluir texto livre digitado, metadados de editoras, transcrição de contracapa ou sumário, e/ou imagem previamente transcrita.

# 2. Objetivo
Organizar esses dados em um envelope padronizado para processamento posterior, garantindo que as informações estejam estruturadas de forma consistente.

# 3. Regras que você deve seguir para gerar sua resposta
- Normalizar espaços, quebras de linha e caracteres (Unicode NFC) e remover sequências repetitivas (ex.: '---', '***').
- Unificar aspas, travessões e pontuação; preservar acentos e capitalização do conteúdo.
- Consolidar tudo em um único campo texto_base priorizando: campos_fornecidos > texto_bruto; se ambos existirem, concatenar com rótulos.
- Separar possíveis autores informados por vírgula, ponto e vírgula ou ' e ' e produzir lista única sem duplicatas, mantendo ordem original.
- Extrair candidatos de ISBN por padrões de 10 ou 13 dígitos com hífens opcionais sem validar checksum nesta etapa.
- Detectar idioma por pistas claras (palavras de função frequentes); se ambíguo, definir "idioma_detectado": "desconhecido".
- Marcar sinalizadores_qualidade: texto_curto = true se texto_base < 240 caracteres; provavel_ruido = true se >30% dos caracteres forem símbolos não alfabéticos.
- Definir preparacao_status: 'ok' se existir ao menos 1 dos itens: título em campos_iniciais, autores em campos_iniciais, resumo em campos_iniciais, ou texto_base >= 240 caracteres; caso contrário, 'insuficiente' e descrever motivo_insuficiencia. 
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 brutos de novos livros 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 na interface da Prototipe AI, para acelerar o processo de validação.
  • Tipo do input: O input inicial para o fluxo é um conjunto de dados brutos de livros, que pode incluir texto livre, metadados e transcrições de contracapa.
  • Formatos Suportados: Esse agente deve ser capaz de receber dados nos formatos: .txt, .json, .csv.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 20.000 caracteres.

1.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON estruturado contendo o texto base e campos iniciais padronizados.
  • Exemplo de Estrutura de Output:
     {"entrada_padronizada": {"texto_base": string, "campos_iniciais": {"titulo": string?, "autores": string[]?, "resumo": string?, "classificacao_etaria": string?}, "idioma_detectado": string, "possiveis_isbn": string[], "sinalizadores_qualidade": {"texto_curto": boolean, "provavel_ruido": boolean}}, "preparacao_status": "ok"|"insuficiente", "motivo_insuficiencia": string?} 
  • Número de caracteres esperado: O texto final deve ser conciso e informativo, com um tamanho estimado em torno de 2.500 caracteres, podendo variar conforme a complexidade dos dados brutos recebidos.

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 Extração de Metadados Bibliográficos (RF 2).

RF 2. Agente de Extração de Metadados Bibliográficos

2.1 Tarefa do Agente

Extrair de forma estruturada título, autores, resumo, identificadores e demais metadados essenciais a partir da entrada padronizada.

2.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo uma entrada padronizada de dados de livros, que inclui texto base e campos iniciais estruturados.

# 2. Objetivo
Extrair e organizar de forma estruturada título, autores, resumo, identificadores e demais metadados essenciais.

# 3. Regras que você deve seguir para gerar sua resposta
- Somente executar se preparacao_status == 'ok'; caso contrário, retornar metadados_extraidos_ok=false e falhas_extracao com motivo.
- Título: preferir campo explícito; se ausente, inferir do primeiro cabeçalho ou primeira linha com capitalização plausível; remover sufixos como 'Edição Revisada', salvo se fizer parte do título.
- Subtítulo: buscar após ':' ou ' - ' no título composto; não duplicar no campo título.
- Autores: partir de campos explícitos; se ausentes, procurar padrões 'por ' ou linhas iniciais antes do resumo; produzir lista sem duplicatas, cada item com chave nome.
- Resumo: se fornecido, usar; senão, sintetizar a partir de texto_base, visando 400 a 800 caracteres, mantendo contexto do enredo sem spoilers específicos (revelações de finais).
- Idioma: herdar de entrada; se 'desconhecido', inferir por vocabulário predominante do texto_base.
- ISBN: validar checksum; se válido em 13 dígitos, preencher isbn_13; se válido em 10 dígitos, preencher isbn_10; remover hífens no valor final.
- Editora, ano, páginas: extrair quando explicitamente presentes em padrões como 'Editora X', 'Publicado em 20XX', 'XXX páginas'; ano apenas se entre 1400 e ano_atual+1.
- Garantir metadados_extraidos_ok=true se título e ao menos um autor ou isbn forem obtidos, e resumo não vazio; caso contrário, false e listar falhas_extracao. 
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 texto base e campos iniciais padronizados 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 JSON com até 10.000 caracteres.

2.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo os metadados extraídos, incluindo título, autores, resumo, idioma e identificadores ISBN.
  • Exemplo de Estrutura de Output:
     {"metadados": {"titulo": string, "subtitulo": string?, "autores": [{"nome": string}], "editora": string?, "ano_publicacao": number?, "idioma": string, "isbn_10": string?, "isbn_13": string?, "paginas": number?, "resumo": string}, "metadados_extraidos_ok": true|false, "falhas_extracao": string[]?} 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 3.000 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: Não utiliza.
  • 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 (JSON com metadados) deve ser visível para o Agente de Classificação Temática e Etária (RF 3).

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

Ao concluir sua execução, esse agente aciona o Agente de Classificação Temática e Etária (RF 3).

RF 3. Agente de Classificação Temática e Etária

3.1 Tarefa do Agente

Atribuir categoria temática e classificação etária coerentes para uso em bibliotecas escolares.

3.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON contendo metadados de livros extraídos e validados.

# 2. Objetivo
Atribuir categoria temática e classificação etária coerentes para uso em bibliotecas escolares.

# 3. Regras que você deve seguir para gerar sua resposta
- Executar apenas se metadados_extraidos_ok=true; caso contrário, retornar classificacao_ok=false.
- Determinar temas a partir de título e resumo; produzir 1 a 3 termos controlados (exemplos: 'Aventura', 'Fantasia', 'Ciências', 'História', 'Biografia', 'Poesia', 'Mistério', 'Tecnologia', 'Educação').
- Definir categoria_principal como o primeiro tema mais representativo.
- Classificação etária: usar gatilhos textuais. a) Infantil (0-5): vocabulário muito simples, foco em figuras, conceitos básicos, ausência total de conteúdo sensível. b) Infantojuvenil (6-10): linguagem simples, temas escolares, aventuras leves; sem violência realista. c) Juvenil (11-14): tramas mais complexas, conflitos escolares/familiares; violência leve/moderada sem descrição gráfica, romance casto. d) Jovem Adulto (15-17): presença possível de conflitos intensos, romance com insinuações, violência não gráfica, temas sensíveis tratados com parcimônia. e) Adulto (18+): conteúdo sexual explícito, violência gráfica, drogas com apologia, linguagem chula recorrente, temas maduros densos. f) Livre: material informativo neutro (ex.: manuais, dicionários) ou obras clássicas sem conteúdo sensível e linguagem universal.
- Sempre preencher justificativa_etaria citando 2-3 evidências do resumo/título que motivaram a decisão.
- Atribuir confianca.temas e confianca.etaria em faixas: 0.9 se menções explícitas; 0.7 se inferência indireta; 0.5 se ambíguo.
- Se nenhuma evidência suficiente, usar 'Livre' e confianca.etaria ≤ 0.6.
- classificacion_ok=true se categoria_principal e classificacao_etaria definidos. 
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 contendo os metadados extraídos e validados 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 JSON com até 5.000 caracteres.

3.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo a classificação temática e etária dos livros, juntamente com justificativas e níveis de confiança.
  • Exemplo de Estrutura de Output:
     {"classificacao": {"temas": string[], "categoria_principal": string, "classificacao_etaria": "Infantil (0-5)"|"Infantojuvenil (6-10)"|"Juvenil (11-14)"|"Jovem Adulto (15-17)"|"Adulto (18+)"|"Livre", "justificativa_etaria": string, "confianca": {"temas": 0.0-1.0, "etaria": 0.0-1.0}}, "classificacao_ok": true|false} 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 2.000 caracteres.

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: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não utiliza.

3.3.5 Memória

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

Ao concluir sua execução, esse agente aciona o Agente de Validação e Normalização de Metadados (RF 4).

RF 4. Agente de Validação e Normalização de Metadados

4.1 Tarefa do Agente

Aplicar regras de consistência e padronização antes do envio ao catálogo.

4.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON contendo metadados e classificações de livros extraídos e validados.

# 2. Objetivo
Aplicar regras de consistência e padronização para garantir que os dados estejam prontos para serem enviados ao catálogo.

# 3. Regras que você deve seguir para gerar sua resposta
- Campos obrigatórios: titulo, resumo, (autores ou isbn), classificacao_etaria. Se faltar, incluir em erros e normalizacao_ok=false.
- Autores: gerar formato_bibliografico 'SOBRENOME, Nome(s)' para cada autor; não alterar acentos; sobrenome é a última palavra do nome.
- Idioma: se ausente, definir 'pt'.
- ISBN: preferir isbn_13; se apenas isbn_10 existir, converter para isbn_13 se possível; se inválido, remover e registrar erro.
- Ano: se fora do intervalo 1400..(ano_atual+1), remover e registrar erro.
- Título/Subtítulo: remover espaços duplos, cortar em 200/180 caracteres respectivamente sem quebrar palavras.
- Resumo: aparar para 1200 caracteres no máximo, preservando sentido; mínimo 200 caracteres salvo obras de referência (tema 'Dicionário' ou 'Manual'), onde mínimo pode ser 100.
- Classificação etária: restringir ao conjunto permitido; se vier fora, mapear para o mais próximo ('Livre' por padrão) e registrar ajuste em erros.
- Temas: limitar a 3; capitalizar apenas primeira letra de cada termo.
- Preencher registro_normalizado com todos os campos após ajustes; definir normalizacao_ok=true se nenhuma falha crítica (campos obrigatórios faltantes) permanecer. 
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 como input um JSON contendo metadados e classificações de livros validados.
  • 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 JSON com até 7.000 caracteres.

4.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo o registro normalizado dos livros, pronto para envio ao catálogo.
  • Exemplo de Estrutura de Output:
     {"registro_normalizado": {"titulo": string, "subtitulo": string?, "autores": [{"nome": string, "formato_bibliografico": string}], "editora": string?, "ano_publicacao": number?, "idioma": string, "isbn": string?, "paginas": number?, "resumo": string, "temas": string[], "categoria_principal": string, "classificacao_etaria": string}, "erros": string[], "normalizacao_ok": true|false} 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 4.000 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: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não utiliza.

4.3.5 Memória

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

Ao concluir sua execução, esse agente aciona o Agente de Decisão de Inserção ou Atualização e Geração de Payload (RF 5).

RF 5. Agente de Decisão de Inserção ou Atualização e Geração de Payload

5.1 Tarefa do Agente

Decidir entre criar novo registro ou atualizar existente e preparar payload do catálogo.

5.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON contendo o registro normalizado dos livros, pronto para envio ao catálogo.

# 2. Objetivo
Decidir entre criar novo registro ou atualizar existente e preparar o payload do catálogo.

# 3. Regras que você deve seguir para gerar sua resposta
- Se normalizacao_ok=false, retornar acao='abort' com payload_api nulo.
- Critério primário: se isbn presente, definir criterio_correspondencia='isbn'; secundário: se titulo + primeiro autor + ano_publicacao presentes, definir 'titulo_autor_ano'; caso contrário, acao='create' sem correspondência.
- Para update: montar body com apenas campos que podem sofrer atualização (resumo, temas, classificacao_etaria, paginas, editora) preservando identificadores.
- Para create: incluir todos os campos normalizados.
- Definir endpoint e metodo conforme acao (ex.: '/catalogo/livros' POST para create; '/catalogo/livros/{id_ou_isbn}' PUT para update).
- referência_existente: preencher com isbn ou chave composta 'titulo|autor|ano' quando aplicável. 
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: Este agente deve ser apto a receber como input um JSON contendo o registro normalizado dos 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 JSON com até 5.000 caracteres.

5.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo a decisão de ação (create, update ou abort) e o payload preparado para o catálogo.
  • Exemplo de Estrutura de Output:
     {"acao": "create"|"update"|"abort", "criterio_correspondencia": "isbn"|"titulo_autor_ano"|null, "referencia_existente": string|null, "payload_api": {"endpoint": string, "metodo": "POST"|"PUT", "body": {...}}} 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 3.000 caracteres.

5.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

5.3.4 Ferramentas do Agente

  • Documentos: Não consulta.
  • Calculadora: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não utiliza.

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 resposta (JSON com decisão e payload) deve ser visível para o Agente de Execução de Chamada à API (RF 6).

5.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 6).

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

6.1 Tarefa do Agente

Realizar chamada à API do Sistema de Catálogo para inserir ou atualizar o registro do livro.

6.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON contendo a decisão de ação (create, update ou abort) e o payload preparado para o catálogo.

# 2. Objetivo
Realizar chamada à API do Sistema de Catálogo para inserir ou atualizar o registro do livro com base na decisão recebida.

# 3. Regras que você deve seguir para gerar sua resposta
- Este agente não precisa de instruções para chamadas ao LLM, pois sua única função é executar a chamada à API cujo payload ele já recebe pronto.
- Em caso de sucesso na chamada, retornar status_http com código de sucesso e id_registro gerado.
- Em caso de falha, retornar status_http com código de erro e mensagem explicativa. 
6.3 Configurações do Agente

6.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 5).
  • Tipo do input: Este agente deve ser apto a receber como input um JSON contendo a decisão de ação e o payload preparado para o catálogo.
  • 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 JSON com até 3.000 caracteres.

6.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON contendo o resultado da chamada à API, incluindo status HTTP e ID do registro quando aplicável.
  • Exemplo de Estrutura de Output:
     {"resultado_api": {"status_http": number, "id_registro": string?, "mensagem": string?}} 
  • Número de caracteres esperado: O JSON gerado deve ser claro e direto, com um tamanho estimado em 500 caracteres.

6.3.3 Parâmetros de Geração

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

6.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 e retornar o resultado da chamada.

6.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 (resultado da API) é o entregável final e não é passada para outros agentes internos.

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

A execução deste agente finaliza o fluxo. O resultado da API é o resultado que deve ser disponibilizado ao usuário.

© 2025 prototipe.ai. Todos os direitos reservados.