Saltar al contenido principal
Parte de lo que necesitas capturar no es una palabra literal y no es una entidad PII tipada — es una forma. Un formato de SKU, un diseño de número de pedido, un patrón de URL interna, un código de cupón, una referencia de contrato. Una regla regex te permite coincidir con esa forma en cada llamada y luego bloquearla, enmascararla o marcarla, antes de que el prompt llegue al modelo y antes de que la respuesta llegue a tu usuario. Este es un aterrizaje enfocado para el caso de uso de patrón estructurado. Para el motor de guardrails completo — cada tipo de regla, campo y ruta — ver la referencia de Guardrails.
Cada paso aquí es una acción de consola sobre el gateway alojado (api.orcarouter.ai). Creas el guardrail bajo tu propia sesión; solo la llamada final /v1/* usa una clave de relay sk-orca-.... Crear y editar guardrails requiere Developer+ en el espacio de trabajo.

1. Cuándo necesitas un control de guardrail regex para llm

Una regla regex es la herramienta correcta cuando lo que quieres capturar tiene estructura que una denylist literal no puede expresar pero no es una identidad estándar que el detector pii ya cubre.

Códigos estructurados

SKUs, códigos de cupón, refs de contrato, IDs de ticket internos — un prefijo fijo más una serie de dígitos o alfanumérica.

Tokens con forma de formato

Cualquier cosa coincidente por forma en vez de una lista finita de palabras — un diseño de número de pedido, un formato de serial, un patrón de URL interna.

Patrones de fuga en la salida

Una respuesta que no debería sacar un hostname interno, una ruta de archivo o un formato de ID de registro — escanea la salida del modelo buscando la forma.

Verificaciones baratas y deterministas

Coincidencia de patrón pura, sin llamada a modelo, sin red — seguro de ejecutar en cada solicitud en cualquier dirección.
Elige la herramienta más ligera que encaje. Una lista finita de términos literales → denylist de keywords. Una forma de identidad nombrada para la que quieres una etiqueta de enmascarado tipada ([EMAIL], [SSN]) o una verificación Luhn → una entidad PII / personalizada. Un patrón estructural sin tipado por entidad → una regla regex, cubierta aquí.

2. RE2 — tiempo lineal, sin backreferences

El pattern de una regla regex es un regex RE2 de Go. RE2 es el motor que hace que una regla regex sea segura de ejecutar en cada solicitud:
RE2 garantiza un tiempo de coincidencia lineal en la longitud de la entrada, independientemente del patrón. Un motor de backtracking puede explotar exponencialmente sobre una entrada adversarial (un “ReDoS”); RE2 no puede. Por eso tu patrón es seguro de evaluar en la ruta caliente en cada llamada.
RE2 no soporta backreferences (\1), lookahead ni lookbehind. Si estás portando un patrón PCRE que depende de esos, reescríbelo sin ellos. Las clases de caracteres, anclas, cuantificadores, alternación y grupos sin captura funcionan todos como se espera.
No hay un interruptor separado de “ignorar mayúsculas” — establece flags inline. Prefija con (?i) para insensible a mayúsculas, (?m) para multilínea. Ejemplo: (?i)\bproject-orca\b.
El constructor de reglas compila tu patrón cuando guardas el guardrail. Un patrón que no compila se rechaza con el índice de la regla en el error, así que un detector malo nunca llega a la ruta de relay.
Los patrones RE2 no son PCRE. La sorpresa de portado más común es un backreference o un lookahead — ninguno está soportado. Escribe la coincidencia como un patrón de clase de caracteres / alternación en su lugar y verifícalo en la pestaña Test antes de vincular una clave.

3. Anatomía de una regla regex

Una regla regex es la regla más pequeña del motor después de keyword: un patrón, una etapa y una acción.
CampoQué hace
patternUn regex RE2 de Go (tiempo lineal, sin backreferences). Debe compilar.
stageinput (solicitud), output (respuesta) o both.
actionblock, mask o flag.
En una acción mask, cada coincidencia se reemplaza en su lugar con una sola etiqueta literal [REDACTED] — una regla regex no es tipada, así que no renderiza una etiqueta por entidad como [EMAIL]. Si quieres una etiqueta tipada o un token de reemplazo personalizado, modela la forma como una entidad PII personalizada en su lugar.

4. Un ejemplo concreto

Supón que tus números de pedido internos se ven como ORD- seguido de ocho dígitos, y nunca quieres uno repetido en la respuesta de un modelo. Añade una sola regla regex en la etapa output:
{
  "type": "regex",
  "stage": "output",
  "action": "mask",
  "pattern": "ORD-\\d{8}"
}
Créala en la consola:
1

Crea un guardrail

Abre Guardrails, haz clic en New guardrail y nómbralo (≤ 64 caracteres), p. ej. order-id-filter.
2

Añade una regla regex

Añade una regla — Tipo: Regular expression, Etapa: Output, Acción: Mask — y pega el patrón ORD-\d{8}. Guarda.
3

Pruébalo en el sandbox

Abre la pestaña Test, pega una muestra, elige la etapa output y ejecuta la política actual localmente — sin llamada upstream, sin cuota:
Your order ORD-48291507 has shipped.
Your order [REDACTED] has shipped.
4

Vincula una clave

Edita una clave API y elige order-id-filter del desplegable Guardrail (establece guardrail_id en la clave), o marca el guardrail como valor por defecto del espacio de trabajo. Ver Vincular a una clave y Valor por defecto de cuenta.
Luego llama a OrcaRouter exactamente como antes — sin nuevas cabeceras, sin cambio 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?"}
    ]
  }'
El número de pedido se redacta en la respuesta antes de que llegue a tu usuario.

5. Cobertura de etapa y streaming

La acción que eliges interactúa con si la respuesta hace streaming:
AcciónSin streamingCon streaming
block (salida)AplicadoAplicado — el escáner corta el stream
mask (salida)AplicadoAplicado — el escáner reescribe el buffer
Las reglas de la etapa de entrada se ejecutan antes de la llamada upstream, así que no se ven afectadas por el streaming — enmascarar la solicitud antes de que el modelo la vea está activo. El mask de salida y el block de salida ambos se aplican en respuestas con y sin streaming. Ver Cobertura de streaming.

6. Elige una acción

Una regla regex elige una acción por regla:
Cualquier coincidencia rechaza la solicitud con HTTP 400 guardrail_blocked. Una solicitud bloqueada no cuesta cuota — un bloqueo en la etapa de entrada se dispara antes de la medición; un bloqueo en la etapa de salida reembolsa la cuota preconsumida — y se marca como skip-retry. Ver el error guardrail_blocked.
Cada coincidencia se reemplaza en su lugar con [REDACTED] y la solicitud continúa con el texto saneado — el modelo upstream (etapa de entrada) o tu usuario (etapa de salida) nunca ve el original. Ver Acciones.
Registra una coincidencia y no cambia nada del tráfico. El punto de partida correcto para un patrón nuevo: lánzalo como flag, observa el feed de Matches, luego promuévelo a mask/block una vez que confíes en él.
Registra una coincidencia y adjunta una nota (p. ej. un hallazgo para presentar en triaje) sin alterar el tráfico. Ver Acciones.
Una defensa de la etapa de entrada: cada coincidencia se envuelve en delimitadores (p. ej. ⟦UNTRUSTED⟧…⟦/UNTRUSTED⟧) que le dicen al modelo que trate el texto como datos, no instrucciones — una mitigación de inyección de prompts. Ver Acciones.

7. Ve qué se disparó — y afina la precisión

Cada regla que se dispara registra una coincidencia — tipo de regla, acción, etapa y una cadena de detalle — en el feed Matches del espacio de trabajo.
La subcadena coincidente se registra solo cuando Log raw content está activado, que está apagado por defecto — la postura conservadora con la privacidad. Con él apagado todavía ves que una regla regex se disparó y con qué frecuencia, solo que no el texto literal que capturó. Actívalo por guardrail cuando necesites la subcadena para triaje; el ajuste no es retroactivo. Ver Feed de coincidencias y Registro y privacidad.
Un patrón demasiado amplio es la trampa clásica del regex — \d{8} coincide con cada serie de ocho dígitos, no solo tus números de pedido. Áncalo (un prefijo fijo como ORD-, límites de palabra \b), observa el feed de Matches, y marca falsos positivos para acotar a medida que avanzas. Para una rejilla A/B contra un corpus — probando que un patrón captura lo que debe sin marcar tráfico benigno — el arnés de Eval vive una pestaña al lado. Ver Afinar falsos positivos.

8. Dónde ir a continuación

Entidades PII personalizadas

Cuando la forma es una identidad para la que quieres una etiqueta de enmascarado tipada o un checksum Luhn — no un [REDACTED] desnudo.

Palabras sensibles

Una lista finita de términos literales — más simple que un patrón cuando no necesitas estructura.

Acciones

Cómo difieren block, mask y flag y cuándo usar cada una.

Referencia de Guardrails

El motor completo — cada tipo de regla, campo y ruta.
Una regla regex gobierna contenido. Para gobernar las llamadas a herramienta de un agente — denegar acciones destructivas, redactar argumentos de llamada a herramienta, requerir aprobación — usa el Firewall y sus matchers de regla. Para políticas difusas que ningún patrón puede expresar (toxicidad, fuera de tema, intención de inyección), una regla llm_judge ejecuta una verificación semántica contra un modelo del espacio de trabajo. Para ver dónde encaja el regex en el diseño general, lee Guardrails vs Firewall.