O problema não é a IA errar
Eu só queria um sistema que mostrasse de onde tirou cada número. Aí apareceram os PDFs cheios de gráficos.
Semana passada eu estava construindo uma prova de conceito: um sistema que gera insights a partir de dados não estruturados. Você pergunta, ele correlaciona os dados, devolve ideias e mostra o número e o trecho exato do documento de onde ele saiu, com link para a fonte.
Parece simples, né? Então vou adicionar um pouquinho de complexidade: o banco de conhecimento que o sistema consulta é composto, em sua maior parte, de PDFs com gráficos.
Talvez você esteja se perguntando se não é exatamente isso que o seu ChatGPT faz quando você manda um PDF e pede pra ele garimpar ideias ali dentro.
Não, não é exatamente isso. Há uma diferença básica: se você acreditar na informação gerada pelo seu ChatGPT, a responsabilidade é sua. Você pode argumentar que o GPT "acerta quase sempre". E é verdade. O problema é que "quase sempre" é um termo meio estranho pra estar num requisito de software.
Somar dois e dois nunca foi opinião
Software não tem talvez. Você manda somar dois e dois, ele responde quatro. Se responder cinco, é bug. Até outro dia, ninguém nunca precisava escrever em contrato que um sistema deve acertar: acertar não era uma qualidade do software, era a definição dele.
Sim, software que erra existe desde sempre: filtro de spam, corretor ortográfico, previsão do tempo, o Waze chutando seu horário de chegada, o antifraude do cartão. Mas cada um se protege de um jeito. O palpite vem rotulado com a própria incerteza ("70% de chance de chuva"). Ou tem um humano no aperto do botão: o corretor sublinha e espera, o e-mail suspeito cai numa pasta que você pode abrir. Ou o erro foi desenhado pra custar pouco: chegar quatro minutos depois do prometido não derruba ninguém. Ou o sistema erra de propósito pro lado seguro: o antifraude desconfia de si mesmo e te liga perguntando se foi você. Modelos de IA não fazem nenhuma das quatro coisas. Dão resposta probabilística com cara de verdade suprema.
O modelo não soma. Ele entende o pedido, interpreta, e devolve algo que costuma estar certo. Costuma. Em geral, está. Nove de dez. Noventa e nove de cem.
De repente, parece inofensivo dizer que "a IA acerta quase sempre".
A verdade é que só passamos a aceitar isso porque a coisa é impressionante o bastante pra baixar a guarda.
A neblina em cima da neblina
Voltando à minha POC. A primeira coisa que eu tentei foi pôr um segundo modelo pra auditar o primeiro. Faz todo sentido: se um erra, o outro pega.
Só que não dá pra garantir que o segundo vai acertar. Errar é humano, e a IA foi feita à nossa imagem e semelhança. Testei modelos de famílias diferentes: trocar de modelo só muda quem erra, não elimina o erro. E quando dois concordam, a probabilidade do erro cai. Mas concordância entre dois palpites não gera prova. O que eu tinha ali era uma neblina auditando a outra, e tudo com uma ótima aparência de rigor.
Com texto, dá pra somar uma camada de conferência mecânica. É só comparar o que o sistema afirma com o que está escrito no documento-fonte, e essa comparação é determinística: sempre a mesma resposta, sem opinião. Mas quando há um gráfico no PDF, não existe um recurso equivalente.
O caso mais simples: a planilha que gerou um gráfico não viaja junto com o PDF exportado. Eu chequei.
Digo, se o gráfico saiu do Excel, o desenho vetorial e a camada de texto ainda estão lá por baixo, e às vezes dá pra fechar a prova só com isso. Mas se o gráfico foi criado num software de design e a lógica dele é visual e "criativa", a coisa complica. Se for uma imagem escaneada, piora ainda mais.
Testei cinco métodos diferentes e várias combinações deles: camada de texto do PDF, desenho vetorial casando a cor do número com a da legenda, modelo de visão lendo a página, consenso entre modelos, autoavaliação de confiança. Nenhum entrega o que o sistema exige. E aqui está o ponto que eu demorei a entender: o problema não é o sistema errar. Que erre! O problema é que, quando ele erra, não sobra nada que ateste isso de forma determinística. Voltamos ao quase.
Pra piorar, a IA é assertiva. Mesmo com várias camadas de checagem, ela declara confiança alta todas as vezes. Inclusive nas que erra. Eu mesmo já escrevi num outro artigo que bastava oferecer uma saída honrosa pro modelo dizer "não sei", e que modelos bem calibrados a usariam. Pois nesse caso dos gráficos, ofereci saída honrosa, explícita, barata e suplicante. Não usou nenhuma vez.
Resumindo, não dá pra usar a autoconfiança da máquina como trava, porque ela é justamente a coisa que nunca trava.
O humano também acerta "quase sempre"
A saída então é pôr um humano pra revisar. Só que o humano também não é determinístico. O revisor cansado bate o olho e aprova, o conferente bate o carimbo na planilha sem conferir a última linha, o especialista lê rápido porque conhece o assunto e por isso mesmo deixa passar o que contraria a expectativa dele. A margem de erro humana existe, varia com o dia, e o mundo inteiro sempre funcionou apesar disso. Vez ou outra, um ônibus espacial explode com todas as assinaturas em dia, mas é a vida.
A razão pela qual convivemos com os erros humanos tem nome: responsabilidade. Quando dá errado, alguém assinou embaixo — mesmo que seja o estagiário.
A prova real
Na aula de matemática, a gente aprendeu a prova real (ou prova dos nove, como minha avó chamava): você faz a conta e depois faz a operação inversa pra ver se volta. O ponto ali não é o aluno ser bom em matemática. É que a matemática não depende disso.
O requisito de um sistema com IA não é acertar quase sempre. É a verificabilidade. Preciso saber, de cada coisa que sai dali, se ela passou por uma prova real ou não.
Isso separa o trabalho em duas pilhas, e essa separação é a decisão que um projeto assim precisa tomar. Não é uma escolha técnica. É escolha de quanto você aceita prometer — e claro, assinar embaixo.
Onde dá pra fazer a prova real, faz. Um número afirmado que existe literalmente num trecho de prosa de um documento é conferível por comparação bruta. Não depende de confiança. É um script: passa ou não passa. Vale dizer o que essa prova prova: que o número existe no texto, não que ele responde à pergunta certa. O sistema pode citar com exatidão um número verdadeiro tirado do parágrafo errado. Mesmo assim, há um degrau que separa prova de aposta: o rastro aponta o lugar exato onde conferir.
Onde não dá, você declara. O dado que vem de gráfico entra num estado pendente e trava até um humano confirmar, e isso fica registrado.
O trade-off é uma cobertura menor. Aceitei a limitação. Um número errado dito com confiança é bem mais perigoso que um gráfico que o sistema admite não conseguir ler. E ninguém troca de banco porque o antifraude ligou pra confirmar uma compra.
Mas... se o humano que revisa também erra, por que travar o gráfico esperando por ele?
Porque o que a confirmação humana entrega não é certeza. É rastro.
A pergunta não é "esse sistema acerta?". É "de tudo que saiu daqui, o que foi provado, o que foi confirmado por alguém, e o que passou sem nenhum dos dois?". Se a terceira pilha existe e você não sabe o tamanho dela, você não tem um sistema. Tem uma bomba-relógio.
Confesso que foi um tiquinho embaraçoso escrever a parte do documento que explica por que o sistema declara que não lê certas páginas. Parece um pedido de desculpas. Não é. É a parte que eu consigo provar.