Habr explica como fazer LLMs calcularem sem erros gerando código Python
Um artigo publicado no Habr mostra um jeito simples de eliminar os erros aritméticos de LLMs: em vez de pedir que o modelo calcule diretamente, ele é obrigado a gerar um script Python, que roda em uma sandbox Docker. A abordagem já é usada em cálculos de contas de serviços públicos e na análise de orçamentos de obras. As tarifas vêm de um arquivo de configuração, os erros são capturados pelo stderr e o resultado pode ser entregue na hora em Excel e em um relatório de texto detalhado.
Processado por IA de Habr AI; editado por Hamidun News
O Habr publicou uma análise prática sobre por que LLMs erram com frequência em aritmética e como contornar o problema em um produto real. Em vez de pedir que o modelo faça as contas, o autor propõe dar a ele outro papel: escrever um script Python e deixar os cálculos para um programa comum.
Por que LLMs erram
O problema não é que um chatbot específico "piorou". O Transformer prevê o próximo token com base em probabilidade, e não chama uma calculadora. Por isso, ao multiplicar números, ajustar uma receita ou calcular uma conta de luz, o modelo pode dar uma resposta que parece convincente, mas difere da correta em alguns pontos percentuais ou até em dezenas. Para o usuário, isso parece degradação, mas na prática se trata de uma limitação fundamental da arquitetura: o LLM reproduz bem o padrão de um cálculo, mas não executa a operação em si.
"O modelo não calcula.
O modelo programa. E o programa calcula."
Por isso, as tarefas mais perigosas são aquelas em que o erro não salta aos olhos de imediato. Quem já sabe conferir o resultado no papel não precisa de um LLM. Mas quando o modelo é usado justamente para evitar contas manuais, um número plausível passa facilmente sem verificação. O artigo cita o exemplo das contas de serviços públicos: o modelo pode lembrar uma tarifa desatualizada, multiplicá-la "de cabeça" e formatar a resposta de forma caprichada, mesmo com o cálculo errado por trás.
Como o esquema funciona
O esquema se baseia na divisão de papéis. O usuário envia a tarefa por um mensageiro, o LLM recebe um prompt de sistema com o contexto e os dados necessários e, em seguida, gera código Python. Esse código roda em uma sandbox Docker isolada, e o serviço devolve não só um texto com o detalhamento linha a linha, mas também um arquivo Excel pronto. Nesse cenário, o modelo cuida da interpretação do pedido e da estrutura do programa, enquanto a precisão aritmética fica inteiramente a cargo do interpretador Python.
- A entrada pode ser a leitura dos medidores, uma tabela ou um orçamento
- Tarifas e tabelas de referência entram no prompt a partir de um arquivo de configuração
- O modelo é obrigado a devolver código Python, e não uma resposta pronta
- O script é executado em um contêiner isolado, com timeout
- No fim, o usuário recebe o cálculo em texto e um arquivo Excel
O autor conta que usa Qwen e DeepSeek nessas tarefas, e não modelos de ponta caros. A lógica é pragmática: para gerar um script de 20–200 linhas, a diferença na qualidade do código entre modelos premium e opções mais acessíveis é pequena, enquanto a diferença de preço é perceptível.
Um ponto destacado à parte: tarifas e tabelas de referência devem chegar ao prompt pelo arquivo de configuração, e não pela "memória" do modelo. Se uma alíquota mudar, basta atualizar uma linha de dados, sem mexer no modelo.
Onde estavam as armadilhas
O erro mais comum no início foi pedir que o modelo encontrasse as tarifas por conta própria. Nesse modo, ele insere com segurança dados desatualizados ou de outra região, e o erro parece plausível. Por isso, o autor levou todos os números sensíveis para o arquivo de configuração e os atualiza separadamente a partir de fontes oficiais.
O segundo problema: alguns modelos, mesmo após a instrução, ainda tentam "calcular de cabeça" e entregar uma resposta pronta. A solução é simples: validar a presença de código Python e, se necessário, reenviar a solicitação com uma formulação mais rígida.
Na prática, também surgiram questões mais técnicas: caracteres cirílicos quebravam no Excel sem UTF-8 explícito, o modelo puxava bibliotecas desnecessárias, como pandas, e, sem o stderr completo, não conseguia corrigir os próprios erros depois que o script falhava. Mas quando o serviço passou a devolver o traceback ao modelo, o número de iterações inúteis caiu cinco vezes, segundo o autor. A mesma abordagem já foi aplicada a uma tarefa mais complexa — a análise de orçamentos de reforma, em que um teste revelou um sobrepreço de 54 168 rublos e oito itens mais de 50% acima do preço de mercado.
O que isso significa
A abordagem "o LLM escreve código, não a resposta" parece uma das formas mais práticas de usar modelos onde a precisão importa. Em contabilidade, orçamentos, impostos e qualquer cenário de cálculo, ela elimina o principal risco: texto, estrutura e automação ficam com o modelo, e os números verificáveis, com um programa comum.
- 1 de nov. de 2026Teste com 16 modelos em 7 buscadores: Exa fez em média 10,5 pontos de 14; SearXNG, cerca de 3
- 1 de nov. de 2026Camada de proteção MoneyGate barrou os 42 pedidos fraudulentos feitos a IAs locais
- 31 de out. de 2026DeepSeek-V4.1-Flash reduz o KV cache na HBM para 890 bytes por token, contra 3514
- 30 de out. de 2026Mistral abre os pesos do Large 4: forte em código, mas chineses marcam 32 pontos contra 26
Perguntas frequentes sobre a notícia
Por que LLMs erram?
O problema não é que um chatbot específico "piorou". O Transformer prevê o próximo token com base em probabilidade, e não chama uma calculadora. Por isso, ao multiplicar números, ajustar uma receita ou calcular uma conta de luz, o modelo pode dar uma resposta que parece convincente, mas difere da correta em alguns pontos percentuais ou até em dezenas. Para o usuário, isso parece degradação, mas na prática se trata de uma limitação fundamental da arquitetura: o LLM reproduz bem o padrão de um cálculo, mas não executa a operação em si. "O modelo não calcula. O modelo programa
Como o esquema funciona?
O esquema se baseia na divisão de papéis. O usuário envia a tarefa por um mensageiro, o LLM recebe um prompt de sistema com o contexto e os dados necessários e, em seguida, gera código Python. Esse código roda em uma sandbox Docker isolada, e o serviço devolve não só um texto com o detalhamento linha a linha, mas também um arquivo Excel pronto. Nesse cenário, o modelo cuida da interpretação do pedido e da estrutura do programa, enquanto a precisão aritmética fica inteiramente a cargo do interpretador Python. A entrada pode ser a leitura dos medidores, uma tabela ou um orçam
Onde estavam as armadilhas?
O erro mais comum no início foi pedir que o modelo encontrasse as tarifas por conta própria. Nesse modo, ele insere com segurança dados desatualizados ou de outra região, e o erro parece plausível. Por isso, o autor levou todos os números sensíveis para o arquivo de configuração e os atualiza separadamente a partir de fontes oficiais. O segundo problema: alguns modelos, mesmo após a instrução, ainda tentam "calcular de cabeça" e entregar uma resposta pronta. A solução é simples: validar a presença de código Python e, se necessário, reenviar a solicitação com uma formulação
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.