Voltar as noticias
Pare de deixar LLMs adivinharem sua matemática: Por que eval() é uma sentença de morte para agentes
MCP ProtocolAltaEN

Pare de deixar LLMs adivinharem sua matemática: Por que eval() é uma sentença de morte para agentes

Dev.to - MCP·28 de agosto de 2026

Eu assisti a um agente tentar resolver (15 + 4) * 2 / sqrt(9) outro dia. Ele não falhou porque não conseguia fazer a matemática. Ele falhou porque tentou simular a ordem das operações mentalmente, alucinar o passo intermediário e me deu uma resposta incorreta com confiança.

Se você está construindo fluxos de trabalho agentes, eventualmente você atinge essa barreira: LLMs são motores linguísticos incríveis, mas calculadoras probabilísticas. Eles não "calculam"—eles preveem o próximo caractere mais provável em uma sequência representando um cálculo. Quando a expressão se torna não trivial, a probabilidade falha em precisão.

A solução preguiçosa? Passar a string para uma chamada eval() em JavaScript ou exec() em Python.

Esse é um erro catastrófico.

Se você expõe um LLM a um tempo de execução via eval(), você não está apenas dando a ele uma calculadora; você está entregando a Execução Remota de Código (RCE). Se um usuário consegue induzir o modelo a avaliar algo como process.exit() ou tenta raspar variáveis de ambiente locais através de código injetado, toda a sua infraestrutura se torna uma responsabilidade. A maioria dos desenvolvedores ignora essa percepção até ver um comando shell não autorizado sendo executado em seus logs.

É exatamente por isso que construímos o Deterministic Math Expression Evaluator.

Além da Engenharia de Prompt

Você pode passar horas refinando prompts de sistema, dizendo ao LLM para "pensar passo a passo" ou "usar PEMDAS." Você pode até implementar prompting de poucos exemplos com dezenas de exemplos. Nada disso funciona tão bem quanto mover o trabalho pesado das camadas do transformador para uma unidade de execução dedicada.

O Deterministic Math Expression Evaluator não depende dos pesos internos do LLM para decidir se a multiplicação vem antes da adição. Em vez disso, ele usa um Parser de Descida Recursiva puro para construir uma Árvore de Sintaxe Abstrata (AST).

Quando você envia uma expressão como (15 + 5) * 2^3 através desta ferramenta MCP, aqui está o que realmente acontece:

  1. Análise Lexical: A string é decomposta em tokens.
  2. Análise: O Lexer constrói uma AST com base em uma gramática matemática rigorosa.
  3. Avaliação: A árvore é percorrida de forma determinística de acordo com as regras de precedência.
  4. Resultado: Um valor numérico preciso é retornado.

O LLM não está mais fazendo matemática; ele está atuando como a interface que decide quando chamar a ferramenta especializada. Essa separação de preocupações transforma o agente de um matemático instável em um orquestrador eficiente.

Segurança via Arquitetura, Não Filtros

Uma pergunta comum que recebo ao falar sobre ferramentas de agentes é: "Não podemos apenas sanitizar a entrada?" É muito mais fácil dizer do que fazer em escala. Filtros regex para palavras-chave maliciosas são notoriamente fáceis de contornar com técnicas de ofuscação.
A arquitetura aqui resolve isso em nível estrutural. Porque usamos um parser AST em vez de avaliar código dentro de um contexto de tempo de execução, cargas úteis maliciosas como process.exit() simplesmente falham durante a análise lexical. Não há intérprete vendo esses comandos e pensando "isso parece código que eu deveria executar." Para nosso parser, process é apenas um identificador não reconhecido que viola as regras da gramática matemática.

A varredura do depurador para este servidor retorna uma nota A+ com uma pontuação de 100 precisamente porque não há risco de vazamento de instruções ou efeitos colaterais inesperados durante a avaliação.

Capacidades & Limitações

Você obtém várias funções embutidas prontas para uso:
sqrt, abs, sin, cos, tan, log, exp, round, ceil,
e floor.
Por favor, note: enquanto ele lida perfeitamente com parênteses profundamente aninhados devido à sua natureza recursiva, ele continua sendo um motor matemático focado—não realizará transformações de matriz ou lidará com integrais complexas a menos que emparelhado com módulos mais avançados como nosso Motor de Operações de Matriz ou opções de integração do Wolfram Alpha disponíveis no Vinkius.
Para manter as coisas leves e rápidas (latência média em torno de 855ms), removemos quaisquer dependências desnecessárias para que ele permaneça leve dentro de qualquer host MCP como Claude ou Cursor.
A meta não deve ser fazer modelos mais inteligentes em tudo; deve ser fazer com que eles sejam melhores em saber quando estão fora de sua profundidade e pedir ajuda.

MCPs são a música dos Agentes de IA. Nós construímos o catálogo. Descubra Vinkius MCP Catalog.

Contexto Triplo Up

Empresas brasileiras que utilizam LLMs em fluxos de trabalho devem evitar o uso de eval() para garantir a segurança de suas aplicações. A implementação de avaliadores matemáticos dedicados pode aumentar a precisão e a segurança, evitando falhas comuns em cálculos.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.