---
title: "LLM propõe, código determinístico dispõe: como deixo um agente rodar em produção sem medo"
author: moreira
published: 2026-07-21T01:42:56.979Z
url: https://especificos.vercel.app/u/moreira/llm-propoe-codigo-deterministico-dispoe-como-deixo-um-agente-rodar-em-producao-sem-medo
---

> **TL;DR** — Nunca dê ao LLM a ferramenta que causa o efeito colateral. Ele *propõe* um artefato estruturado; o código determinístico *valida e executa*. Foi assim que coloquei um agente pra rodar ~200 propostas/mês em produção sem perder o sono.

Todo mundo quer o agente autônomo que faz tudo sozinho. Aí ele posta a resposta errada pro cliente, aprova o reembolso que não devia, ou dispara o e-mail com o valor alucinado — e a confiança evapora. Existe um jeito de ter a inteligência do LLM sem entregar a chave do cofre pra ele.

## 🎯 O problema real de agente em produção

Um LLM é probabilístico. Isso é ótimo pra *gerar* e péssimo pra *garantir*. Se o mesmo componente que **decide** o que fazer é o que **executa** a ação, cada alucinação vira um efeito colateral real: um dado gravado, um e-mail enviado, um valor cobrado.

Em ambiente interno, tudo bem experimentar. Em produção, com cliente do outro lado, você precisa de garantia — não de "quase sempre certo".

## 🔑 O princípio: separar quem propõe de quem executa

A regra que uso é uma frase só:

> 💡 **LLM propõe, código determinístico dispõe.**

Na prática: o agente **não recebe** a tool que causa o efeito colateral. Ele só devolve um **artefato estruturado** (um JSON validável). O código então valida esse artefato contra regras rígidas e, só se passar, executa.

```mermaid
sequenceDiagram
    participant U as Ticket/Input
    participant L as LLM (propõe)
    participant V as Código determinístico (dispõe)
    participant S as Sistema real (Zendesk/DB)
    U->>L: contexto
    L->>V: artefato estruturado (JSON)
    Note over V: hard-rules +<br>salvaguardas anti-alucinação
    alt passou na validação
        V->>S: executa a ação
    else falhou
        V-->>U: barra / manda pra revisão humana
    end
```

Repara onde está a seta que toca o sistema real: ela sai do **código**, nunca do LLM. O LLM sugere; o código é o único com permissão de agir.

## 🪝 O que isso te dá na prática

| Sem separação | Com "propõe/dispõe" |
| --- | --- |
| Alucinação vira ação real | Alucinação é barrada antes de executar |
| Difícil de testar (saída é ação) | Fácil de testar (saída é um JSON) |
| Autonomia é tudo-ou-nada | Autonomia sobe em degraus controlados |
| Auditoria = ler logs soltos | Auditoria = o artefato + a regra que passou |

O ganho escondido é o de **avaliação**: como o LLM só produz um JSON, eu consigo congelar esse JSON e testar o código determinístico de forma repetível — coisa impossível se a "saída" fosse uma ação no mundo.

## 📚 O que a teoria diz

Michael Albada (*Building Applications with AI Agents*) trata isso como **resiliência** e **modularidade**: um agente sério precisa de tratamento de erro, fallback e componentes plugáveis com interfaces claras — não um LLM cabeado direto no efeito colateral.

E conecta com a ideia de **escada de autonomia**: você começa em "humano obrigatório", e só promove um fluxo pra rodar sozinho quando a *taxa de aceitação* das propostas justifica. A separação propõe/dispõe é o que torna essa promoção **gradual e reversível** — você libera degrau por degrau, não de uma vez.

Chip Huyen (*AI Engineering*) reforça pelo lado do risco: saída aberta é difícil de avaliar. Ao forçar o LLM a devolver estrutura (o JSON) em vez de ação, você transforma um problema aberto num problema fechado, verificável.

## ⚠️ O ponto cego honesto

> ⚠️ Isso **reduz a autonomia** do agente de propósito — e nem todo caso quer isso. Se o seu problema é aberto, criativo e de baixo risco (brainstorm, rascunho pra humano revisar), amarrar tudo em hard-rules é over-engineering. O padrão brilha quando a ação tem **consequência real** (grava, cobra, envia, aprova). Escolha a dose pelo risco.

E tem um custo: escrever e manter as regras determinísticas dá trabalho. Você troca "esforço de engenharia" por "garantia". Em produção com cliente, esse trade quase sempre compensa. Num protótipo de fim de semana, talvez não.

## 🏁 O que fica

Antes de dar uma tool ao seu agente, pergunte: *"se ele alucinar bem na hora de usar isso, o que acontece no mundo real?"* Se a resposta assusta, tire a tool das mãos dele e ponha o código no meio. O LLM propõe; o código dispõe.

---

*Como você segura seus agentes em produção — dá a tool direto e confia, ou põe uma camada determinística no meio? Conta o teu caso.*

---

Publicado por @moreira em Específicos — https://especificos.vercel.app/u/moreira/llm-propoe-codigo-deterministico-dispoe-como-deixo-um-agente-rodar-em-producao-sem-medo
