4.4 KiB
4.4 KiB
PRD - Product Requirements Document
Agente de IA para Classificação de Transações Bancárias
1. Visão Geral
Este documento define os requisitos para o desenvolvimento de um Agente de Inteligência Artificial especializado na classificação de transações bancárias. O sistema operará exclusivamente via API, consumindo dados já tratados e utilizando técnicas de RAG (Retrieval-Augmented Generation) para sugerir classificações com base em histórico prévio, priorizando eficiência em ambientes com restrição de hardware (CPU-only).
2. Objetivos do Produto
- Classificação Inteligente: Categorizar transações com base na descrição, utilizando similaridade (RAG) e inferência de modelo local.
- Eficiência de Recurso: Operar com baixo consumo de RAM e exclusivamente em CPU.
- Desacoplamento: Interação exclusiva via API, sem interface direta com usuário final.
- Autonomia: Processamento assíncrono sem bloqueio aguardando feedback humano imediato.
3. Escopo
3.1 Incluso
- Integração via API para recebimento de dados de transações (já parseados).
- Busca de transações similares em base vetorial (RAG).
- Motor de inferência utilizando LLM Local (Llama 3).
- Cálculo de taxa de acerto e confiança.
- Mecanismo de feedback diferido (Human-in-the-loop passivo).
3.2 Não Incluso
- Leitura ou parsing de arquivos (OFX, CSV, PDF, Excel).
- OCR ou extração de dados de imagens.
- Interface de usuário direta para o agente (o agente é um backend service).
- Bloqueio de execução por espera humana.
4. Funcionalidades Principais
4.1 Interface de Entrada
- O agente expõe endpoints para receber objetos JSON contendo estritamente:
idTransacao(varchar 1000): Identificador único da transação na origem.dataEntrada(date): Data de competência da transação.descricao(varchar 500): Texto descritivo da transação bancária.
- Nota: O campo de Valor foi removido nesta fase para evitar vieses em ambientes multi-empresa, focando a classificação puramente na semântica da descrição.
4.2 Motor de Classificação (Core AI - RAG + LLM Local)
- Estratégia:
- Recebe a descrição da transação.
- Consulta banco vetorial para encontrar transações passadas similares já classificadas (pelo agente ou humanos).
- LLM (Llama 3) analisa a descrição atual + exemplos recuperados (Contexto).
- Define a Categoria e Subcategoria.
- Resources: Otimizado para rodar localmente limitando uso de RAM.
4.3 Métricas e Feedback
- Dashboard de Métricas: Exposição de dados sobre taxa de acerto e confiança do modelo.
- Feedback Loop: O sistema deve permitir que uma aplicação externa envie a correção de uma classificação. Essa correção é salva no banco para refinar futuras buscas RAG.
5. Requisitos Não Funcionais
- Hardware: Execução exclusiva em CPU. Mínimo consumo de RAM plausível.
- Privacidade: Dados processados localmente. Sem envio para APIs externas (OpenAI/Anthropic).
- Latência: Foco em throughput, aceitável latência de inferência local desde que não trave a aplicação chamadora.
6. Stack Tecnológica Definida
- Linguagem: Python (Versão travada: 3.12.1).
- Framework: A definir (LangChain ou implementação customizada leve).
- LLM: Llama 3 (versão otimizada para CPU/Local, ex: GGUF/Ollama se aplicável).
- Base de Dados:
- Relacional: PostgreSQL (para dados estruturados, logs, ponteiros).
- Vetorial: Solução integrada ou leve para RAG, indexando descrições e classificações históricas.
7. Fluxo de Execução
- Trigger: Aplicação externa envia transação via API para o Agente.
- Retrieval: Agente busca no VectorDB as "Top-K" transações mais parecidas semanticamente com a atual.
- Inference: Prompt montado com a Transação Atual + Exemplos Recuperados é enviado ao Llama 3 Local.
- Result: Agente retorna a classificação sugerida + Score de Confiança.
- Human Review (Assíncrono): Através da aplicação principal, o usuário valida.
- Learning: Se houve correção, a aplicação notifica o Agente/Banco para atualizar o "Golden Record" usado no RAG.
8. Próximos Passos
- Definir a versão exata do Llama 3 e método de quantização para CPU.
- Modelar o schema do banco de dados (Tabela de Transações vs Tabela de Embeddings).
- Configurar ambiente Python 3.12 travado.