Saltar para o conteúdo principal
Parte do que você precisa pegar não é uma palavra literal e não é uma entidade PII tipada — é uma forma. Um formato de SKU, um layout de número de pedido, um padrão de URL interno, um código de cupom, uma referência de contrato. Uma regra regex permite que você corresponda essa forma em cada chamada e então a bloqueie, mascare ou sinalize, antes de o prompt chegar ao modelo e antes de a resposta chegar ao seu usuário. Este é um destino focado no caso de uso de padrão estruturado. Para o motor de guardrail completo — cada tipo de regra, campo e rota — veja a referência de Guardrails.
Cada passo aqui é uma ação de console no gateway hospedado (api.orcarouter.ai). Você escreve o guardrail sob sua própria sessão; apenas a chamada final /v1/* usa uma chave de relay sk-orca-.... Criar e editar guardrails exige Developer+ no workspace.

1. Quando você precisa de um controle de regex guardrail llm

Uma regra regex é a ferramenta certa quando a coisa que você quer pegar tem estrutura que uma denylist literal não consegue expressar mas não é uma identidade padrão que o detector pii já cobre.

Códigos estruturados

SKUs, códigos de cupom, refs de contrato, IDs de ticket interno — um prefixo fixo mais uma sequência de dígitos ou alfanumérica.

Tokens em formato definido

Qualquer coisa correspondida por forma em vez de uma lista finita de palavras — um layout de número de pedido, um formato de serial, um padrão de URL interno.

Padrões de vazamento de output

Uma resposta que não deveria trazer à tona um hostname interno, um caminho de arquivo ou um formato de record-ID — varra o output do modelo em busca da forma.

Verificações baratas e determinísticas

Pura correspondência de padrão, sem chamada a modelo, sem rede — seguro para rodar em cada requisição em qualquer direção.
Escolha a ferramenta mais leve que se encaixa. Uma lista finita de termos literais → denylist de keyword. Uma forma de identidade nomeada para a qual você quer uma tag de mask tipada ([EMAIL], [SSN]) ou um check Luhn → uma entidade PII / personalizada. Um padrão estrutural sem tipagem por entidade → uma regra regex, coberta aqui.

2. RE2 — tempo linear, sem backreferences

O pattern de uma regra regex é um regex Go RE2. RE2 é o motor que faz uma regra regex ser segura para rodar em cada requisição:
RE2 garante tempo de correspondência linear no comprimento do input, independentemente do padrão. Um motor com backtracking pode explodir exponencialmente em um input adversarial (um “ReDoS”); RE2 não pode. É por isso que seu padrão é seguro para avaliar no caminho quente em cada chamada.
RE2 não suporta backreferences (\1), lookahead ou lookbehind. Se você está portando um padrão PCRE que depende disso, reescreva-o sem eles. Classes de caractere, âncoras, quantificadores, alternação e grupos não capturadores funcionam todos como esperado.
Não há um switch separado de “ignorar caixa” — defina flags inline. Prefixe com (?i) para sem distinção entre maiúsculas e minúsculas, (?m) para multilinha. Exemplo: (?i)\bproject-orca\b.
O construtor de regras compila seu padrão quando você salva o guardrail. Um padrão que não compila é rejeitado com o índice da regra no erro, então um detector ruim nunca chega ao caminho de relay.
Padrões RE2 não são PCRE. A surpresa de portabilidade mais comum é uma backreference ou um lookahead — nenhum é suportado. Escreva a correspondência como um padrão de classe-de-caractere / alternação em vez disso e verifique-a na aba Test antes de vincular uma chave.

3. Anatomia de uma regra regex

Uma regra regex é a menor regra do motor depois de keyword: um padrão, um estágio e uma ação.
CampoO que faz
patternUm regex Go RE2 (tempo linear, sem backreferences). Deve compilar.
stageinput (requisição), output (resposta) ou both.
actionblock, mask ou flag.
Em uma ação mask, cada correspondência é substituída no lugar por uma única tag literal [REDACTED] — uma regra regex não é tipada, então não renderiza uma tag por entidade como [EMAIL]. Se você quer uma tag tipada ou um token de substituição personalizado, modele a forma como uma entidade PII personalizada em vez disso.

4. Um exemplo concreto

Suponha que seus números de pedido internos sejam ORD- seguido de oito dígitos, e você nunca quer um ecoado de volta na resposta de um modelo. Adicione uma única regra regex no estágio output:
{
  "type": "regex",
  "stage": "output",
  "action": "mask",
  "pattern": "ORD-\\d{8}"
}
Escreva-a no console:
1

Crie um guardrail

Abra Guardrails, clique em New guardrail e nomeie-o (≤ 64 chars), ex.: order-id-filter.
2

Adicione uma regra regex

Adicione uma regra — Tipo: Regular expression, Estágio: Output, Ação: Mask — e cole o padrão ORD-\d{8}. Salve.
3

Teste-a no sandbox

Abra a aba Test, cole uma amostra, escolha o estágio output e rode a política atual localmente — sem chamada upstream, sem cota:
Your order ORD-48291507 has shipped.
Your order [REDACTED] has shipped.
4

Vincule uma chave

Edite uma chave de API e escolha order-id-filter no menu Guardrail (define guardrail_id na chave), ou marque o guardrail como padrão do workspace. Veja Vincular a uma chave e Padrão de conta.
Depois chame o OrcaRouter exatamente como antes — sem novos headers, sem mudança de SDK:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "What is the status of my order?"}
    ]
  }'
O número do pedido é redigido na resposta antes de chegar ao seu usuário.

5. Cobertura de estágio e streaming

A ação que você escolhe interage com o fato de a resposta fazer streaming:
AçãoNão-streamingStreaming
block (output)AplicadoAplicado — scanner corta o stream
mask (output)AplicadoAplicado — scanner reescreve o buffer
As regras de estágio de input rodam antes da chamada upstream, então não são afetadas pelo streaming — mascarar a requisição antes de o modelo sequer vê-la está ativo. Mask de output e block de output são ambos aplicados em respostas streaming e não-streaming. Veja Cobertura de streaming.

6. Escolha uma ação

Uma regra regex escolhe uma ação por regra:
Qualquer correspondência rejeita a requisição com HTTP 400 guardrail_blocked. Uma requisição bloqueada não custa cota — um block no estágio de input dispara antes da medição; um block no estágio de output reembolsa a cota pré-consumida — e é marcada como skip-retry. Veja o erro guardrail_blocked.
Cada correspondência é substituída no lugar por [REDACTED] e a requisição continua com o texto sanitizado — o modelo upstream (estágio de input) ou seu usuário (estágio de output) nunca vê o original. Veja Ações.
Registra um match e não muda nada no tráfego. O ponto de partida certo para um novo padrão: publique-o como flag, observe o feed de Matches, depois promova para mask/block quando você confiar nele.
Registra um match e anexa uma nota (ex.: uma descoberta a exibir na triagem) sem alterar o tráfego. Veja Ações.
Uma defesa de estágio de input: cada correspondência é envolvida em delimitadores (ex.: ⟦UNTRUSTED⟧…⟦/UNTRUSTED⟧) que instruem o modelo a tratar o texto como dados, não instruções — uma mitigação de prompt-injection. Veja Ações.

7. Veja o que disparou — e ajuste a precisão

Toda regra que dispara registra um match — tipo de regra, ação, estágio e uma string de detalhe — no feed Matches do workspace.
A substring correspondente é registrada apenas quando Log raw content está ligado, que está desligado por padrão — a postura conservadora de privacidade. Com ele desligado você ainda vê que uma regra regex disparou e com que frequência, apenas não o texto literal que ela pegou. Ligue-o por guardrail quando precisar da substring para triagem; a configuração não é retroativa. Veja Feed de matches e Logging e privacidade.
Um padrão amplo demais é a armadilha clássica de regex — \d{8} corresponde a toda sequência de oito dígitos, não apenas seus números de pedido. Ancore-o (um prefixo fixo como ORD-, limites de palavra \b), observe o feed de Matches e marque falsos positivos para apertar conforme avança. Para uma grade A/B contra um corpus — provando que um padrão pega o que deveria sem sinalizar tráfego benigno — o Eval harness fica uma aba ao lado. Veja Ajustar falsos positivos.

8. Para onde ir a seguir

Entidades PII personalizadas

Quando a forma é uma identidade para a qual você quer uma tag de mask tipada ou um checksum Luhn — não um [REDACTED] simples.

Palavras sensíveis

Uma lista finita de termos literais — mais simples que um padrão quando você não precisa de estrutura.

Ações

Como block, mask e flag diferem e quando usar cada um.

Referência de Guardrails

O motor completo — cada tipo de regra, campo e rota.
Uma regra regex governa conteúdo. Para governar as chamadas de ferramenta de um agente — negar ações destrutivas, redigir argumentos de chamada de ferramenta, exigir aprovação — use o Firewall e seus matchers de regra. Para políticas difusas que nenhum padrão consegue expressar (toxicidade, fora de tópico, intenção de injeção), uma regra llm_judge roda uma verificação semântica contra um modelo do workspace. Para ver onde regex se encaixa no design geral, leia Guardrails vs Firewall.