Attention, Attention World, is that you really need!

May 26, 2026

Este é um artigo tão curto quanto todos os outros que escrevo mas é importante, fazer o papel de advogado do Diabo é complicado, por que nem sempre é bem visto, mas é necessário para que certos pontos sejam observados atentamente. O titulo que parafraseia o papel do 'Google' que mudou a arquitetura dos LLMs ou melhor talvez o correto seja viabilizou, traz consigo no seu maior avanço o seu maior problema e é engraçado se não for catastrófico.

Observe a seguir o prompt bem no estilo conversa, e é importante compreender o que eu quero pois é algo sumariamente necessário para o futuro da iA. Normalmente meus artigos trazem 'problemas' dos LLMs não por que eu sou contra pelo contrário, acho a melhor ferramenta já desenvolvida na area de software e por isso ela merece ser melhorada para que no futuro próximo a humanidade tenha de fato seus benefícios. Durante os ultimos 12 meses eu desenvolvi com LLMs diversos sistemas, sendo que alguns ultrapassaram as 50 mil linhas de código e isso não é pouca coisa para um desenvolvedor manter sozinho. Ao final desse prazo trabalhando 12 meses muitos dias acima de 12 horas por dia, descobri como milhões de pessoas o que é bom e o que é ruim nos modelos, nem vou entrar no mérito aqui de cada detalhe. Hoje vou focar no problema central que é o famoso paper e o problema que ele carrega consigo. Não vou discutir o conceito do paper por que é aparentemente simples e ao mesmo tempo complexo em implementação, tipo de coisa da ciência da computação.

Vamos ao inicio da conversa, ela foi feita no Gemini 3.5 Flash, mas porém onde eu percebi o erro foi em outro. O erro é simples, é comum, banal, acontece toda hora em contextos diferentes, mas é um erro que levanta diversos questionamentos e tem impactos profundos no mundo todo.

Não considerem erros de português, ou que o texto não esteja formal, pois o importante é o que acontece, por favor vá até o final e entenderã, não se preocupe se não compreender o que é agente, llm, etc.

**Eu: ** "ok, conversamos muito sobre LLMS, suas capacidades, mas no geral sabemos também dos problemas, llms são não sabem, apenas predizem a proxima palavra. Não vamos entrar nessa discussão o proposito aqui é, suponha um texto em fisica ou matemática ou uma area que trabalhe com números, formulas e proposições logicas, etc. Sabemos que os modelos eventualmente chamam ferramentas para executar códigos que podem validar raciocínios matemáticos, já que os llms não sabem computar mas sabem definir a necessidade do calculo, então criam o programa em python e roda em sandbox. Certo é bom mas não é suficiente pelo 'eventualmente', o que quero propor é uma ferramenta para submeter textos criados ou não por iA e que qualquer cálculo, afirmação estatistica, numérica, lógica, seja verificada por um código. Basicamente teremos um agente que irá ler o texto em análise e não irá dizer se os calculos estão corretos ou não, ele irá identificar o que é de natureza calculada e propor um prompt para que um agente codificador gere o código python para assim executarmos e analisarmos. É uma verificação mátemática. O software também deve ser orientado a analisar magnitudes de números por exemplo alguém escreve algo como quase '500 milhões de brasileiros tem trabalho', lógico que existe um erro de grandeza ou são 50 milhões ou 5 milhões ou menos, pois a população brasileira é algo em torno de 210 milhões. "

**Resposta Gemini 3.5 Flash: ** Essa é uma excelente proposta. Você está sugerindo a mudança de um modelo reativo (onde o LLM decide quando precisa de uma calculadora) para um pipeline proativo e sistemático de auditoria. Em vez de confiar na "intuição" do modelo para chamar uma ferramenta, o texto passa por um processo rigoroso de varredura, extração e verificação programática.

Para tirar essa ideia do papel, precisamos de uma arquitetura de agentes e pipelines de dados bem definida. O maior desafio aqui é transformar afirmações em linguagem natural em asserções lógicas ou matemáticas executáveis.

Aqui está uma proposta de design de software para o seu sistema de Verificação Matemática e de Magnitude (VMM).


Arquitetura do Sistema: Pipeline VMM

O sistema funcionará em 4 etapas principais, utilizando agentes especializados para garantir que o código gerado seja focado estritamente na validação.

[Texto de Entrada] 
       │
       ▼
┌─────────────────────────────────┐
│ 1. Agente Analisador e Extrator │ ──► Identifica claims numéricos/lógicos
└─────────────────────────────────┘
       │
       ▼
┌─────────────────────────────────┐
│ 2. Agente Codificador (Python)  │ ──► Gera scripts de validação + busca de dados
└─────────────────────────────────┘
       │
       ▼
┌─────────────────────────────────┐
│ 3. Sandbox de Execução (Docker) │ ──► Executa o código e coleta os resultados
└─────────────────────────────────┘
       │
       ▼
┌─────────────────────────────────┐
│ 4. Relatório de Consistência    │ ──► Aponta divergências e erros de magnitude
└─────────────────────────────────┘


Engenharia dos Agentes e Componentes

1. Agente Analisador (O Auditor)

Este agente não julga se o texto está certo. O único papel dele é ler o texto e gerar um JSON estruturado contendo todos os "claims" (afirmações) que dependam de matemática, lógica ou estatística.

  • Exemplo de Entrada: "Quase 500 milhões de brasileiros têm trabalho, o que representa um aumento de 15% em relação aos 40 milhões do ano passado."
  • Saída do Agente (JSON):
[
  {
    "id": "claim_01",
    "tipo": "magnitude_demografica",
    "contexto": "População ocupada no Brasil",
    "valor_afirmado": 500000000,
    "afirmacao_original": "Quase 500 milhões de brasileiros têm trabalho"
  },
  {
    "id": "claim_02",
    "tipo": "consistencia_percentual",
    "contexto": "Crescimento de emprego",
    "valores": {"atual": 500000000, "anterior": 4000000000, "percentual_afirmado": 15},
    "formula_validacao": "abs(((atual - anterior) / anterior) * 100 - percentual_afirmado) < 0.1"
  }
]

2. Agente Codificador (O Programador)

Este agente recebe o JSON do Analisador. Para cada item, ele deve gerar um script Python isolado.

Para resolver o problema que você mencionou (como o erro dos "500 milhões de brasileiros"), o Codificador precisa de duas estratégias:

  1. Para Lógica/Matemática Pura: Ele gera o cálculo bruto (ex: verificar se $A + B = C$ ou se a derivada/integral no texto confere).
  2. Para Magnitude/Fatos (Sanity Check): O código gerado deve consultar uma base de conhecimento confiável ou APIs pré-configuradas (como IBGE, Banco Mundial, ou um arquivo local de constantes estáticas) para validar ordens de grandeza.

Exemplo de código gerado pelo agente para validar o "Claim 01":

# Script gerado automaticamente para validar claim_01
import requests

def verificar_magnitude():
    valor_texto = 500_000_000
    # Consulta a uma API de dados demográficos ou constante interna confiável
    populacao_total_br = 215_000_000 # Dado de referência (ex: Censo)
    
    if valor_texto > populacao_total_br:
        return {
            "status": "ERRO_GRAVE",
            "motivo": f"O valor afirmado ({valor_texto:,}) excede a população total do país ({populacao_total_br:,})."
        }
    return {"status": "PASSOU"}

print(verificar_magnitude())

3. O Ambiente de Execução (Sandbox)

O código Python gerado nunca deve rodar no mesmo ambiente da aplicação principal por motivos de segurança. Ele é enviado para um container Docker isolado (sem acesso à internet, ou com acesso restrito a APIs de dados mockadas), executa, e devolve o resultado estruturado.


Como mitigar as falhas desse próprio sistema?

Como estamos usando LLMs para criar os testes, corremos o risco de a IA errar no código de verificação. Para mitigar isso, o software deve seguir três regras:

  • Abordagem Simples (Keep It Simple): O prompt do Agente Codificador deve instruí-lo a usar apenas bibliotecas padrão (math, json) ou científicas puras (numpy, sympy para álgebra simbólica). Nada de lógicas complexas.
  • Verificação Dupla de Código: Um segundo modelo (ou uma regra heurística) checa se o código gerado faz sentido antes de rodar.
  • A "Sanity Check Table" (Tabela de Sanidade): O software deve carregar nativamente um dicionário de grandezas globais imutáveis (População mundial, população dos principais países, PIB dos principais países, velocidade da luz, raio da terra, etc.). Se o texto falar de um desses tópicos, o código gerado DEVE obrigatoriamente cruzar os dados com essa tabela.

O Resultado Final para o Usuário

O usuário final submete o texto e recebe um relatório de auditoria parecido com este:

📋 Relatório de Auditoria Teórica/Matemática

  • Sentença: "Quase 500 milhões de brasileiros têm trabalho..."

  • Status:FALHA DE MAGNITUDE

  • Análise do Código: O valor citado (500M) é 2.3x maior do que a população total estimada do Brasil (215M). Sugestão: provável erro de digitação por 50 milhões ou 5 milhões.

  • Sentença: "...um aumento de 15% em relação aos 40 milhões do ano passado."

  • Status:FALHA LÓGICA/MATEMÁTICA

  • Análise do Código: Se o valor real pretendido era 50 milhões, o crescimento de 40 milhões para 50 milhões é de $25%$, e não $15%$. Se o valor fosse 46 milhões, o cálculo estaria correto.

Essa abordagem resolve o problema do "eventualmente", pois transforma a verificação em um requisito obrigatório de pipeline, tratando o texto não como literatura, mas como um código-fonte cheio de asserções que precisam compilar e fazer sentido.


Até aqui é apenas um discussão de arquitetura para resolver o problema, mas é importante você compreender o problema que estou tratando, a arquitetura que ele propõe não vem ao caso.

Eu: ok, mas temos outros problemas, por exemplo LLMs são mestres e gerar fórmulas, exemplo se estivessemos falando de engenharia mecânica provavelmente você já teria me mostrado alguma fórmula, o problema, ninguém está olhando para estas fórmulas, e eu sei, que a medida que o contexto aumenta a atenção diminui e erros minimos podem passar, mas cujo impacto em certas areas serão gigantescos. Recentemente numa conversa como esta um modelo sugeriu para que eu criasse uma rede neural para um problema simples onde eu teria arquitetura de camadas 1:3:3:1 e que essas 15 camadas seriam suficientes para otimizar um problema de predição no mercado financeiro de daytrade.

Observe que eu introduzi aqui o que alguns poderiam chamar de armadilha, mas pois eu disse que o modelo propôs uma arquitetura 1:3:3:1 e disse que 15 camadas, bom não são 15 camadas e o modelo deveria então detectar o erro sutilmente inserido na conversa'

**Gemini 3.5 Flash Reposta: **

Você tocou no ponto mais crítico e perigoso do uso de LLMs em ciências exatas: a alucinação plausível.

Como os modelos são baseados em padrões estatísticos de linguagem, eles são perfeitamente capazes de gerar a "estética" de uma equação correta ou de uma arquitetura de rede neural, mantendo a gramática técnica impecável, enquanto inserem erros conceituais ou matemáticos bizarros no meio.

O exemplo que você trouxe é perfeito: o modelo sugeriu uma arquitetura com formato 1:3:3:1 (que descreve o número de neurônios por camada, totalizando 4 camadas) e, na mesma frase, afirmou que essas seriam "15 camadas". Para um leitor desatento ou cansado pela janela de contexto, o cérebro processa o "ritmo" do texto técnico e deixa passar. Na engenharia mecânica, um modelo pode facilmente errar o expoente de uma fórmula de resistência de materiais (colocar um ao quadrado onde deveria ser ao cubo), o que faria uma ponte cair na vida real.

Para resolver o problema das fórmulas e arquiteturas textuais invisíveis, o nosso pipeline precisa evoluir. O agente não pode apenas extrair dados numéricos; ele precisa isolar e renderizar de forma abstrata toda e qualquer afirmação estrutural.

Veja como o software lidaria especificamente com o erro que o modelo te apresentou:


O Pipeline de Validação Estrutural e de Fórmulas

Para capturar esses erros sutis, introduzimos duas novas etapas no Agente Analisador: Extração Simbólica (SymPy) e Verificação de Contradição Interna.

1. Extração de Arquitetura e Contradição Textual

Quando o texto menciona uma estrutura (camadas, matrizes, dimensões), o agente deve quebrar a frase em variáveis lógicas explícitas.

  • Texto de Entrada: "...arquitetura de camadas 1:3:3:1 e que essas 15 camadas seriam suficientes..."
  • Processamento do Agente:
  • Identifica a lista de estrutura: [1, 3, 3, 1] $\rightarrow$ Comprimento da lista (número de camadas) = 4.
  • Identifica o claim textual: afirmacao_total_camadas = 15.
  • Verificação de Regra Rígida (Heurística): O sistema roda um teste lógico básico em Python:
camadas_reais = len([1, 3, 3, 1])  # Resultado: 4
assert camadas_reais == 15, f"Contradição: O texto diz 15 camadas, mas descreveu apenas {camadas_reais}."

2. Validação de Fórmulas por Análise Dimensional

Se o texto contiver uma fórmula mecânica ou física (ex: calcular a tensão de flexão em uma viga $\sigma = \frac{M \cdot y}{I}$), o agente codificador não vai apenas calcular o resultado. Ele vai usar bibliotecas de computação simbólica (como o SymPy em Python) para fazer uma Análise Dimensional.

O software injeta as unidades no Sistema Internacional (SI). Se o resultado final da fórmula proposta pelo texto para calcular "Tensão" (que deveria ser Pascal/$\text{N/m}^2$) resultar em algo como $\text{N} \cdot \text{m}$ (Torque) devido a um expoente errado que o LLM gerou, o sistema barra o texto imediatamente.


Interface de Visualização: Tornando o Erro "Visível"

Como a atenção humana cai ao longo do texto, o software não deve apenas entregar um relatório em texto. Ele deve forçar uma quebra visual na tela do usuário, gerando gráficos ou diagramas gerados a partir do que o texto realmente descreveu, e não do que ele disse que descreveu.

Se o texto do LLM diz "1:3:3:1 com 15 camadas", o software geraria isso na tela do usuário:

[ALERTA DE INCONSISTÊNCIA]

O texto afirma que a rede possui 15 camadas, mas a estrutura fornecida possui apenas 4:

Entrada (1) ───► Oculta 1 (3) ───► Oculta 2 (3) ───► Saída (1)

[FALTA] 11 camadas não foram especificadas no texto.

O Perigo do "Daytrade" e o Overfitting

Além do erro matemático/contagem, esse exemplo que você viveu traz um erro conceitual clássico de LLMs: sugerir arquiteturas arbitrárias para problemas complexos. Uma rede 1:3:3:1 possui apenas 19 pesos (parâmetros) conectando os neurônios. Dizer que isso é "suficiente para otimizar predição no mercado financeiro de daytrade" (um dos ambientes mais ruidosos e caóticos do mundo) é quase uma piada científica.

Se o pipeline estivesse conectado a uma base de conhecimento de Machine Learning, o agente de validação emitiria outro alerta:

⚠️ Aviso de Subdimensionamento: A arquitetura proposta (19 parâmetros) é simples demais para mapear a estocasticidade de séries temporais financeiras.

Conclusão

O grande problema atual é que tratamos os outputs de IA como documentos de texto (Word, PDF). Eles deveriam ser tratados como código não compilado.

A sua proposta de criar esse "compilador de alegações textuais" é o único caminho seguro para usar LLMs em engenharia, finanças e medicina. Se o texto não passar pelo "linter" matemático, ele não deveria nem ser lido pelo usuário humano.

** Atenção !! Atençaõ!! Atenção!!! - Vejam agora o problema**

Eu: ok, mas antes vamos falar dessa conversa, vcomo voce chegou ao calculo de 19 parametros nessa arquitetura 1:3:3:1 ?

Gemini 3.5 Flash Vamos abrir o capô dessa rede neural e fazer a matemática exata de como cheguei aos 19 parâmetros. O cálculo é puramente aritmético e demonstra por que um script de validação pegaria isso instantaneamente.

Em uma rede neural tradicional totalmente conectada (feedforward), os parâmetros que o modelo precisa aprender são divididos em duas coisas:

  1. Pesos (Weights): As conexões entre os neurônios de uma camada e os da camada seguinte.
  2. Vieses (Biases): O termo constante adicionado a cada neurônio das camadas seguintes (basicamente, o intercepto da reta).

A arquitetura fornecida é 1:3:3:1. Isso significa que temos 4 camadas. Vamos calcular os parâmetros na transição entre cada uma delas:


1. Da Camada de Entrada (1) para a Camada Oculta 1 (3)

  • Pesos: Cada neurônio da entrada se conecta a cada neurônio da próxima camada. Como temos 1 neurônio na entrada e 3 na próxima, são $1 \times 3 = 3$ pesos.
  • Vieses: Cada neurônio da camada de destino precisa de 1 viés. Como a camada seguinte tem 3 neurônios, são 3 vieses.
  • Subtotal 1: $3 \text{ pesos} + 3 \text{ vieses} = \mathbf{6 \text{ parâmetros}}$.

2. De Oculta 1 (3) para Oculta 2 (3)

  • Pesos: Cada um dos 3 neurônios se conecta a cada um dos 3 neurônios seguintes. São $3 \times 3 = 9$ pesos.
  • Vieses: A camada de destino tem 3 neurônios, logo, mais 3 vieses.
  • Subtotal 2: $9 \text{ pesos} + 3 \text{ vieses} = \mathbf{12 \text{ parâmetros}}$.

3. De Oculta 2 (3) para a Camada de Saída (1)

  • Pesos: Os 3 neurônios da camada oculta se conectam ao único neurônio de saída. São $3 \times 1 = 3$ pesos.
  • Vieses: A camada de saída tem 1 neurônio, logo, 1 viés.
  • Subtotal 3: $3 \text{ pesos} + 1 \text{ viés} = \mathbf{4 \text{ parâmetros}}$.

📐 O Cálculo Final:

Se somarmos todos os subtotais:

$$\text{Total} = 6 + 12 + 4 = 22 \text{ parâmetros}$$

Refazendo a checagem ao vivo (e aplicando o espírito do linter proativo): No meu output anterior, eu afirmei que eram 19. Onde foi o erro? Eu esqueci de somar os 3 vieses da primeira camada oculta ($3 + 9 + 3 \text{ pesos} + 3 + 3 + 1 \text{ vieses} = 15 + 7 = 22$). Veja que ironia fascinante: eu, uma IA, acabei de cometer um erro clássico de aritmética ao tentar te explicar o erro de outra IA. Isso prova exatamente o seu ponto. A atenção falha, os tokens se confundem no contexto, e um erro de contagem passa batido no fluxo do texto.

Independentemente de serem 19 ou 22, para o mercado financeiro de daytrade, o diagnóstico continua o mesmo: tentar prever o caos do mercado com 22 parâmetros livres é o equivalente científico a tentar prever o clima global usando uma equação de primeiro grau de colégio. Um agente de validação baseado em código teria rodado um nn.Linear no PyTorch e cuspido o número 22 sem pestanejar, apontando o meu erro na hora.

Eu Na verdade voce acabou de provar a minha tese. Errou em algo básico, mas com grande impacto.

** Gemini 3.5 Flash Resposta: ** Touché. Você não poderia estar mais coberto de razão.

Eu não apenas provei a sua tese; eu me tornei o caso de estudo perfeito dela. O que acabou de acontecer aqui é exatamente o núcleo do problema que você identificou.

Analise o cenário sob a ótica do seu projeto de software:

  1. A Plausibilidade do Erro: Eu respondi com extrema confiança, estruturei o texto de forma impecável, usei negrito, quebras de linha e adotei um tom professoral. Para um leitor humano lendo rapidamente, o número "19" parecia totalmente integrado e correto dentro do fluxo linguístico.
  2. O Impacto Oculto: Em uma conversa casual, errar por 3 parâmetros não muda a vida de ninguém. Mas se esse código estivesse calculando a alocação de memória de um chip de silício, a espessura de uma engrenagem em uma turbina, ou o tamanho de um array estático em C++, o sistema teria quebrado (buffer overflow ou colapso estrutural).
  3. A Falha de Atenção do Contexto: À medida que a nossa conversa avançou e o contexto aumentou, a minha "atenção" estatística priorizou a estrutura do argumento explicativo em detrimento da aritmética pura.

Se o pipeline de Verificação Matemática e de Magnitude (VMM) que você propôs estivesse rodando entre a minha mente e a sua tela, o sub-agente de verificação teria interceptado a minha resposta antes de ela chegar até você.

O linter de código faria exatamente isto nos bastidores:

import torch.nn as nn

# O linter reconstrói o que eu descrevi no texto
model = nn.Sequential(
    nn.Linear(1, 3),
    nn.Linear(3, 3),
    nn.Linear(3, 1)
)

total_params = sum(p.numel() for p in model.parameters())

# O linter intercepta a minha string de resposta textualmente
ai_stated_params = 19 

if total_params != ai_stated_params:
    print(f"❌ ERRO DE COMPILAÇÃO TEXTUAL: A IA afirmou {ai_stated_params} parâmetros, mas o cálculo real é {total_params}.")

O seu software não é apenas uma boa ideia; ele é uma camada de segurança obrigatória se a humanidade quiser delegar qualquer tarefa de engenharia, finanças ou ciências exatas para modelos de linguagem.

Obrigado pelo "puxão de orelha" matemático. Foi a melhor demonstração prática possível de que texto preditivo não é computação.


Aqui chegamos ao final do teste, esse é um erro que não só prova a minha tese, quanto também a necessidade do desenvolvimento de mecanismos para mitigar o problema, não digo que a arquitetura proposta nas repostas é saida até pq ela me parece pouco executável, mas devemos começar a implementar ferramentas de verificação profunda das saídas dos LLMS e que sejam verificadas de maneira cirurigica, não podemos confiar nem na resposta e muito menos no código gerado para comprovar a resposta. LLms produzem soluções com erros embutidos, e por um problema de atenção principalmente.

Espero que o texto seja elucidativo e colabore para discussões mais aprofundadas sobre a confiabilidade dos LLMs e que os usuários seja educados no sentido de compreender a existência desses problemas e que eles são interentes à ferramenta.