Saltar para o conteúdo
Voltar ao trabalho

Trabalho · IA Aplicada · 2026

Um contrato de confiança para relatórios gerados

Cada afirmação num relatório gerado carrega uma etiqueta calculada em código a partir da proveniência da evidência. O leitor fica a saber de que frase desconfiar, e as etiquetas acabaram por auditar o sistema que as produziu.

1. O problema

Um relatório gerado soa confiante do princípio ao fim. A prosa tem um só registo, e por isso uma afirmação apoiada numa página analisada e uma afirmação que o modelo adivinhou ficam idênticas no ecrã. Um leitor que já foi queimado uma vez descarta o documento inteiro, e num relatório que termina num veredicto de Continuar, Pausar ou Matar sobre o produto de alguém, uma única afirmação errada sem marca chega para o perder.

A solução que entregámos é um contrato: cada afirmação carrega uma de três etiquetas, Verificada, Provável ou Desconhecida, e a etiqueta é calculada em código a partir da origem da afirmação. Ao modelo nunca é pedido que avalie o próprio texto. A autoavaliação falha na mesma direção do texto que classifica, o que a torna decoração.

2. A etiqueta é uma função da proveniência

Cada afirmação sai da síntese com três campos: como foi produzida (observada numa fonte, inferida ou estimada), a confiança do analisador, e se uma fonte de suporte sobreviveu à normalização. A etiqueta deriva desses campos depois da geração, num único sítio, com um teste por cima.

lib/trust-labels.ts, a derivação
function deriveClaimLabel(claim: Claim): TrustLabel {
  if (claim.type === "observed"
      && claim.confidence === "high"
      && claim.hasSupport) return "Verified"
  if ((claim.type === "inferred" || claim.type === "estimated")
      && claim.confidence !== "low") return "Likely"
  return "Unknown"
}

3. Citações verificadas por substring

As etiquetas ordenam as afirmações. Uma segunda verificação prende-as: uma afirmação que cita uma fonte tem de carregar um excerto literal dessa fonte, e depois da geração uma função confirma que o excerto existe no documento com um teste de substring. O teste é deliberadamente primitivo. Uma verificação de alucinação construída sobre outra chamada a um modelo pode alucinar; uma substring, nunca.

A verificação provou o seu valor cedo. Numa ronda de avaliação, um modelo produziu uma resposta fluente e plausível com zero chamadas a ferramentas, a responder de memória sem nada recuperado. Todas as verificações de excerto falharam ao mesmo tempo, e a transcrição mostrou um relatório que leria perfeitamente bem sem citar nada. Resultado plausível, processo errado, apanhado em código.

4. As etiquetas auditaram o próprio sistema

O contrato pagou-se de uma forma que não desenhámos. Numa série de avaliações, 13 de 15 transcrições bem-sucedidas produziram exatamente as mesmas contagens: duas Verificadas, nove Prováveis. Uma análise real tem variância, e contagens idênticas significavam afirmações estruturais. O rasto levou a analisadores que emitiam um bloco fixo de duas afirmações com tipo e confiança predefinidos: as etiquetas descreviam o código, e o código era igual em todas as rondas.

O caso contrário confirmou que as etiquetas seguem a evidência. Um site analisado devolveu pouco conteúdo, e o relatório saiu com zero Verificadas, quatro Prováveis, onze Desconhecidas: a distribuição colapsou para Desconhecida exatamente quando a evidência colapsou. A correção que se seguiu deixou cada analisador emitir uma lista de afirmações de comprimento variável, com tipo, confiança e suporte derivados do que foi de facto observado na página.

5. O que levar daqui

  • 1

    Etiquetas de confiança pertencem ao código, derivadas da proveniência. Um modelo a avaliar o próprio texto falha com o texto.

  • 2

    Uma substring é uma primitiva de verificação que nunca alucina. Use-a antes de qualquer coisa mais inteligente.

  • 3

    A distribuição das etiquetas é um diagnóstico. Contagens idênticas entre rondas significam que o pipeline está a afirmar, e foi a medição que o mostrou.