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
Habr explica como fazer LLMs calcularem sem erros gerando código Python
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Dado-chave #1A entrada pode ser a leitura dos medidores, uma tabela ou um orçamento
Dado-chave #2Tarifas e tabelas de referência entram no prompt a partir de um arquivo de configuração
Dado-chave #3O modelo é obrigado a devolver código Python, e não uma resposta pronta

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.

História

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

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

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.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…