
Determinismo como um recurso: quando deixar seu agente chamar uma API matemática em vez de raciocinar
Agentes LLM são ótimos em decidir o que fazer e pouco confiáveis em calcular isso. Peça a um para alocar tráfego entre cinco variantes, precificar risco de cauda ou resolver uma restrição de agendamento e você receberá um número confiante, plausível e sutilmente errado — incluindo tokens queimados.
A solução geralmente não é um prompt melhor. É o mesmo instinto que nos deu a calculadora: mover a matemática determinística para fora do motor probabilístico.
O sinal
Você tem um problema de determinismo no momento em que a saída do seu agente precisa ser:
- reproduzível — mesmas entradas → mesma resposta, a cada execução,
- auditável — alguém pode verificar por que é 0,62 e não 0,61, ou
- correta sob entradas adversariais — um retorno de cauda gorda, uma restrição inviável.
Um LLM não oferece nenhum desses de graça. Uma chamada de ferramenta oferece.
O que descarregar (e um teste barato para cada)
- "Qual variante eu devo enviar?" → um bandido multi-armado / contextual. O agente escolhe a pergunta; a amostragem de Thompson escolhe a alocação. Teste: peça ao seu agente para alocar 1.000 usuários entre 4 braços com as mesmas contagens de conversão, duas vezes. Respostas diferentes? Descarregue isso.
- "Essa métrica é anômala?" → pontue a série contra uma linha de base; não a avalie dentro da janela de contexto.
- "Qual é o VaR / CVaR de 95%?" → Caminhos de Monte Carlo, não uma sensação.
- "Agende essas tarefas dentro desses limites" → um solucionador LP/MIP. LLMs não conseguem satisfazer restrições rígidas de forma confiável; solucionadores não podem violá-las.
O padrão
Exponha a matemática como ferramentas MCP para que o agente as chame como qualquer outra ferramenta — a intenção permanece no modelo, o número vem do código:
// o agente decide a intenção; a ferramenta calcula a resposta
const alloc = await callTool("optimize_contextual", {
arms: variants, // [{ id, name }]
context: userFeatures, // segmento, taxa_abertura_anterior, hora_do_dia
history: pastRewards
});
// `alloc` é reproduzível, sub-milissegundo, e você pode mostrar seu trabalho
Dois detalhes de design que prejudicam as pessoas:
- Recompensa atrasada. Se a recompensa chega aos poucos (aberturas de e-mail ao longo de horas), defina uma janela de atribuição fixa antes de creditar um braço — caso contrário, o bandido explora demais os primeiros abridores e colapsa a diversidade das variantes.
-
Início frio. Comece cada braço com um
Beta(1,1)anterior (ou um anterior informado de campanhas passadas) para que a exploração não morra na primeira execução.
Quando não descarregar
Determinismo é uma restrição, e restrições têm custo. Se a tarefa é genuinamente vaga — resumir um documento, roteirizar uma intenção, redigir um texto — mantenha-a no modelo. Uma regra prática que me serviu bem:
Se você gostaria de um teste unitário para a saída, ela pertence a uma ferramenta, não a um prompt.
Se você deseja um conjunto completo dessas como ferramentas MCP — bandidos, previsão, Monte Carlo, otimização, anomalia/risco — eu mantenho OraClaw (npx -y @oraclaw/mcp-server; 11 das ferramentas são gratuitas, sem chave). Mas o padrão é mais importante do que a ferramenta — conecte qualquer solucionador que você quiser. Divulgação: eu o construí.
Empresas brasileiras podem melhorar a precisão de suas decisões automatizadas ao integrar ferramentas de cálculo determinístico em seus agentes de IA. Isso permite resultados mais confiáveis e auditáveis, essenciais para operações críticas. A adoção de protocolos MCP pode otimizar processos e reduzir erros.

