Pergunta nova = fila
Cada pergunta fora do painel vira um pedido para quem sabe SQL.
Projeto 5 · IA aplicada a dados
Um analista de dados com IA para uma rede de concessionárias (dados 100% fictícios). A IA escolhe ferramentas, consulta o PostgreSQL só para leitura e responde com números conferíveis: cada valor vem com o SQL que o gerou.
01
Numa concessionária, o gerente quer resposta rápida: quem está abaixo da meta, quanto o consórcio cresceu, qual vendedor puxou o mês. Hoje ele depende de alguém que saiba SQL ou de um painel que só responde ao que foi previsto.
Cada pergunta fora do painel vira um pedido para quem sabe SQL.
Um chatbot que "chuta" um número com confiança é mais perigoso que nenhuma resposta.
Dar acesso ao banco para um modelo de linguagem exige garantir que ele nunca altere nada.
O problema é real: é o trabalho do autor numa concessionária Honda em Recife, onde ele montou o painel de vendas do Projeto 1. Este projeto amplia aquele modelo de dados para 24 meses fictícios.
02
A IA não escreve SQL livremente por padrão: ela escolhe entre métricas oficiais, e a API monta o SQL com parâmetros. O SQL livre existe como reserva, atrás de travas.
consultar_metrica
Caminho principal. 9 métricas oficiais (faturamento, ticket médio, % da meta…) com SQL parametrizado: o número certo por construção.
executar_sql
Reserva para o que o catálogo não cobre. Um SELECT só, atrás de 4 camadas de defesa.
descrever_tabelas
Colunas e descrições das views, lidas dos comentários do próprio banco.
responder
Resposta final estruturada. Cada número citado é procurado nos resultados do banco: achou = "conferido".
03
Gravadas da avaliação oficial (sem edição). Escolha uma pergunta e avance pelos passos: a ferramenta que a IA chamou, o SQL que rodou, o que o banco devolveu e a resposta.
04
"A IA responde bem" só vale com número medido. Cada pergunta tem um SQL de referência que gera a resposta certa; o avaliador (Python) faz a pergunta pela API e confere. Os padrões foram plantados nos dados fictícios de propósito: se a IA não os encontra, ela errou.
O valor de uma avaliação é achar erro. Cada falha virou uma correção no código ou no prompt, e foi medida de novo.
05
Uma checagem de texto na aplicação pode ser enganada por um SQL criativo; uma permissão do banco, não. Por isso cada camada tem teste hostil próprio, e a garantia final é o PostgreSQL.
Um comando só, começando com SELECT ou WITH, sem funções de sistema (pg_sleep, set_config, leitura de arquivo, catálogo), máx. 4.000 caracteres, embrulhado num LIMIT.
Protocolo estendido do PostgreSQL: aceita um comando só, mesmo com "; DROP …" no texto.
BEGIN READ ONLY e tempo máximo de 3 s por consulta.
O usuário da IA só tem SELECT em 7 views, nenhum acesso às tabelas de origem, sem CREATE nem TEMP, máx. 5 conexões. A API nem conhece a senha do dono do banco.
06