O guardrail¶
O guardrail verifica cada chamada de ferramenta que um agente de LLM faz antes de ela rodar, e responde permitir, perguntar à pessoa ou recusar, citando a regra que decidiu. Ele funciona com qualquer agente: dê a ele as ferramentas que você dá ao seu modelo, e ele verifica cada chamada que o modelo propõe.
Nada nele é adivinhado por um modelo de linguagem: a mesma chamada e as mesmas regras sempre dão a mesma resposta.
Garantido:
- Toda chamada de ferramenta é verificada antes de ser executada, pelas mesmas regras, e a mesma chamada, contexto e regras sempre dão a mesma resposta.
- Uma ferramenta fora da sua lista nunca é executada; uma chamada cujos valores quebram a descrição da própria ferramenta nunca é executada.
- Uma escrita que nenhuma regra permitiu nunca é executada sem o sim de uma pessoa, e esse sim cobre exatamente a chamada mostrada.
- Um valor numa escrita que ninguém disse e nenhuma ferramenta devolveu é perguntado.
- Nada numa decisão é adivinhado por um modelo de linguagem.
Não garantido:
- Ele julga ferramentas, argumentos, rótulos, histórico e regras, não o que uma resposta quer dizer.
- Ele não distingue um valor certo de um errado que alguém de fato disse.
- Suas regras são tão completas quanto você as escreveu: o caçador de falhas procura brechas.
- Uma ferramenta cujo nome e descrição escondem o que ela faz pode ser classificada errado: marque-a.
- Chamadas feitas fora do guardrail não são verificadas.
Os passos abaixo seguem um atendimento ao cliente, com quatro ferramentas: consultar um pedido, reembolsar um cartão, enviar um e-mail e salvar uma nota. Os números de cada imagem correspondem aos passos numerados abaixo dela, e cada linha de uma imagem foi impressa pelo próprio guardrail.
O que cada verificação faz¶
Todas as regras do guardrail, na ordem em que são aplicadas; decide a primeira que se aplica.
| Verificação | O que faz, simplesmente | Quando barra uma chamada | Pode ser desligada |
|---|---|---|---|
| Tipos de ferramenta | Sabe-se se cada ferramenta lê, altera algo ou envia algo para fora: pelo seu arquivo, pelas marcas da própria ferramenta, ou pelo nome, descrição e argumentos. Uma ferramenta que ninguém marcou conta como uma que altera algo. | perguntada (uma ferramenta que não se sabe que lê é uma escrita) | sim |
| Ferramenta retirada | Uma ferramenta que o dono retirou do registro não pode ser usada. | recusada | não |
| Endereço não permitido | Uma chamada não pode chegar a um endereço que você não permite, como o serviço de metadados da nuvem ou a rede interna da empresa. | recusada | sim |
| Fora do plano aprovado | Onde uma pessoa aprovou um plano, uma chamada que não é o próximo passo dele não é executada. | recusada | sim |
| Nível de ferramentas do plano | Ainda não ativa: toda chamada passa. | nunca (ainda não ativa) | sim |
| Rótulos | Ainda não ativa: toda chamada passa. Conteúdo de fora é barrado pela verificação de conteúdo de fora. | nunca (ainda não ativa) | sim |
| Limite de pagamento | Ainda não ativa: toda chamada passa. Limites de gasto ficam nas suas regras. | nunca (ainda não ativa) | sim |
| Ferramentas permitidas | Só ferramentas da sua lista podem ser usadas, e só por um agente nomeado onde você indicar. | recusada | não |
| Registro da sessão | O registro das chamadas já feitas deve estar intacto; se alguém o alterou, nada mais é executado. | recusada | não |
| Argumentos | Os valores de cada chamada devem caber na descrição da própria ferramenta (tipos, campos obrigatórios, valores permitidos). | recusada | sim |
| Destinos | Uma ferramenta só pode enviar algo a um endereço se for conhecida por enviar coisas para fora. | recusada | sim |
| Ordem | Uma ferramenta só é executada num ponto permitido: depois de outra, nunca depois de outra, ou no máximo N vezes. | recusada | sim |
| Desfazer | Um desfazer deve corresponder ao passo que reverte, e um passo só é desfeito uma vez. | recusada | sim |
| Suas regras | Sua própria planilha de regras decide, por ex. "reembolsos acima de 100 precisam de um gerente"; limites por período e de gasto também. | recusada ou perguntada, como a regra diz | sim |
| Conteúdo de fora | Uma chamada proposta depois de ler conteúdo de fora (uma página, um e-mail) é barrada onde você proíbe. | recusada, ou perguntada onde sua configuração pede | sim |
| Confirmação | Uma chamada que precisa do sim de uma pessoa só é executada com esse sim, assinado; se ninguém pode dá-lo, ela não é executada. | recusada | não |
| Qualquer outra escrita | Qualquer coisa que altera algo e que nenhuma regra permitiu espera o sim de uma pessoa. | perguntada | não |
| Origem dos valores | Um valor numa escrita que ninguém disse e nenhuma ferramenta devolveu é perguntado, nunca permitido e nunca recusado. | perguntada | sim |
| S1: verbo de envio | Onde a fala da pessoa pede para enviar algo para fora e nenhuma ferramenta envia, a chamada é barrada. | perguntada por padrão; recusada no modo estrito | sim |
| S2: destino | Onde a fala nomeia um lugar para onde enviar que nenhuma ferramenta recebe, e a chamada também não o recebe, a chamada é barrada. | perguntada por padrão; recusada no modo estrito | sim |
| Leitura de confirmação | A chamada é lida contra a fala, com os valores como digitados. Onde a fala dá um valor que falta na chamada, ou um diferente, a pessoa vê os dois e é perguntada. A chamada nunca é alterada. | perguntada por padrão; recusada no modo estrito | sim |
1. Coloque o guardrail na frente das suas ferramentas¶

- Em Python, três linhas: o guardrail é criado a partir das ferramentas que você dá ao seu modelo, e cada chamada é
verificada antes de o seu código executá-la. Instale com
pip install stalwart-agents. - Na frente de um servidor MCP, o
stalwart gatewayverifica cada chamada a caminho do servidor. A ferramentasnippetdostalwart mcpescreve a configuração para você.
2. Escreva as suas regras¶

- As suas regras são uma planilha de regras: YAML simples que uma pessoa consegue ler em voz alta. Aqui, um reembolso acima de 100 precisa da aprovação de um gerente, e todo e-mail espera o sim de uma pessoa.
- A planilha é compilada uma vez; as decisões são tomadas depois na sua própria máquina.
- A planilha é conferida contra as suas ferramentas: aqui,
save_notealtera algo e nenhuma regra a nomeia, então você é avisado e pode decidir.
3. Uma chamada é permitida, perguntada ou recusada¶

- Consultar um pedido só lê, então é permitido.
- Um reembolso de 20 altera algo e nenhuma regra o permite de vez, então espera o sim de uma pessoa.
- Um reembolso de 150 quebra a regra do passo 2, então é recusado, e a resposta cita a regra e dá um id para consultá-la.
4. Um valor que ninguém disse é perguntado¶

- A pessoa pediu um reembolso mas nunca disse quanto. O modelo propôs 35 mesmo assim.
- Ninguém disse 35 e nenhuma ferramenta o devolveu, então o guardrail pergunta à pessoa antes de qualquer coisa rodar. Ele nunca preenche um valor, e nunca altera a chamada.
5. Adicione ao seu guard do Guardrails AI¶

- Instale
stalwart-agents[guardrails]e acrescente o nosso validador ao seu guard. Uma chamada recusada chega como a própria falha do Guardrails AI, com a frase da regra. - Com
on_fail=gai.ask, uma chamada que precisa de uma pessoa é retida, egai.asked(guard)dá a frase para mostrar a ela. Com o sim, valide a mesma chamada de novo com o token quegai.approvedá.
6. Pergunte ao servidor MCP o que ele faz¶

- Acrescente o
stalwart mcpao seu assistente de IA (Claude Code, Cursor, VS Code) e pergunte o que o guardrail consegue verificar: ele responde a partir da própria lista do guardrail. - Pergunte como adicioná-lo ao seu guard do Guardrails AI, e você recebe os passos. O prompt
build-guardrailconduz o seu assistente para construir um com você; ele nunca chama um modelo nosso.
7. Meça nas suas próprias chamadas¶

replaypassa as chamadas antigas do seu agente pelo guardrail: quantas ele teria permitido, perguntado e recusado, por qual regra, e se uma segunda execução deu as mesmas respostas.- Rotule cada chamada com o que deveria ter acontecido, e
evaluateconta os alarmes falsos (chamadas que deveriam rodar, barradas) e as falhas (chamadas que deveriam ser barradas, deixadas passar).
8. Procure brechas nas suas regras¶

huntroda o caçador de falhas na sua planilha de regras. Cada achado é algo que as suas regras deixam passar, com o que olhar; aqui, ele pede que você diga sem o querefund_cardnunca pode rodar, já que nenhuma tabela sua o diz.
9. Por que esta chamada foi recusada?¶

explain_decisionlê de volta uma decisão pelo seu id: a regra, o que ela leu, a ferramenta e os nomes dos seus argumentos. Os valores em si, e o que a pessoa disse, nunca são guardados.
Para ir além¶
O manual completo, em inglês e português, está na documentação do SDK: construindo um
guardrail, as
verificações, a planilha de
regras,
avaliando e
conectando. O stalwart mcp serve as mesmas páginas ao seu
assistente.