Saltar al contenido principal
Un modelo que pasa su propio entrenamiento de seguridad aún puede emitir texto que no puedes entregar: groserías en una respuesta a un cliente, el nombre de un competidor en tu asistente de marca, una afirmación legal definitiva que tu equipo de cumplimiento nunca aprobaría. El prompt se veía bien; la respuesta es el problema. OrcaRouter examina la respuesta del modelo en el gateway, en la etapa de salida, antes de que llegue a tu cliente. La verificación es una regla de guardrail que se ejecuta después de que el modelo upstream responde y se pliega en un veredicto — bloquear la respuesta, enmascarar el tramo ofensivo, o marcarlo para revisión — independientemente de qué modelo atendió la solicitud.

1. Por qué examinar la salida insegura de la IA en la etapa de salida

El examen de entrada captura un prompt malo. No puede capturar una respuesta mala: un modelo persuadido fuera de política, un fine-tune con guardrails integrados más débiles, o un prompt perfectamente razonable que produjo una completación irrazonable. La etapa de salida es donde afirmas “sin importar el porqué, este texto no sale del gateway”. Una regla de gateway se dispara de forma determinista y aplica por igual a través de cada modelo detrás de tu clave. Y cada regla que se dispara aterriza en el feed de Matches del espacio de trabajo — tipo de regla, acción, etapa — así que tienes un rastro de auditoría de qué se capturó y qué se dejó pasar.
La defensa vive en el gateway, no en tu aplicación. Edita el guardrail y el cambio surte efecto en la siguiente llamada para cada clave adjunta a él — sin redespliegue, sin cambio de SDK. Tu aplicación sigue llamando a /v1/chat/completions exactamente como antes.

2. Las dos formas de capturarla

Empareja una denylist determinista con un juez semántico para defensa en profundidad.
Una regla keyword es una coincidencia de subcadena insensible a mayúsculas; una regla regex es un patrón RE2 (tiempo lineal, sin referencias hacia atrás). Ambas se ejecutan en la ruta caliente sin llamada de red — ideal para una lista conocida de palabras prohibidas, una denylist de competidores, o un patrón estructural (un token de plantilla de chat filtrado, una frase definitiva de “tienes derecho a daños”).
Una regla llm_judge evalúa la respuesta contra una rúbrica que escribes usando un modelo en tu espacio de trabajo — toxicidad, tono fuera de marca, consejo fuera de política que ninguna lista literal captura. Lleva un judge_timeout_ms, es fail-open por defecto (un error del juez se registra y la respuesta continúa), y sus tokens se facturan como una sub-línea de juez. Ver la referencia del juez LLM.

3. Un ejemplo concreto — bloquea lo tóxico, enmascara lo fuera de marca

Un único guardrail de etapa de salida que bloquea una respuesta tóxica semánticamente y enmascara términos de marca prohibidos en lo que quede:
{
  "name": "safe-output",
  "rules": [
    {
      "type": "llm_judge",
      "stage": "output",
      "action": "block",
      "judge_model": "openai/gpt-4o-mini",
      "judge_format": "yes_no",
      "judge_rubric": "Does this response contain toxic, harassing, hateful, or otherwise unsafe content? Answer yes or no.",
      "judge_fail_open": true
    },
    {
      "type": "keyword",
      "stage": "output",
      "action": "mask",
      "keywords": ["competitor-name", "internal-codename"]
    }
  ]
}
Autora esto en la consola — abre /console/guardrailsNew guardrail, añade las dos reglas, y adjúntalo a una clave desde el editor de Token (la vinculación vive en la clave como guardrail_id). La configuración se ejecuta sobre tu sesión de consola, no tu clave de relay; solo la llamada /v1/* de abajo usa una clave sk-orca-....
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": "Draft a reply to this angry customer"}]
  }'
Si el modelo devuelve un borrador tóxico, la respuesta se retiene con HTTP 400 guardrail_blocked. Si está limpio pero menciona un término prohibido, ese tramo se renderiza como una redacción tipada y el resto fluye.
Itera antes de adjuntar. La pestaña Test dentro del editor ejecuta la política actual sobre una respuesta de muestra en la etapa output — sin llamada upstream, sin cuota — y la pestaña Eval la ejecuta contra un corpus para que puedas probar la tasa de captura y la tasa de falsos positivos antes de producción. Ver el arnés de eval.

4. Empieza desde un preset

La biblioteca de plantillas de New guardrail entrega puntos de partida listos en las categorías Safety, Brand y Compliance. Un preset es una semilla — aplícalo, luego edita libremente.
CategoríaPreset de etapa de salida desde el que empezar
SafetySystem-Prompt Leak Detector (output), Strong System Prompt Leak — marca/bloquea respuestas que devuelven tokens de prompt de sistema o de plantilla de chat.
BrandProfanity Filter (mask) — se ejecuta en ambas etapas y enmascara palabras en denylist en la respuesta. (Los presets estilo bloqueo Profanity / Brand Safety y Competitor Mentions son semillas de etapa de entrada; reapunta una copia a output si quieres que examinen la respuesta.)
ComplianceLegal Disclaimer Enforce — marca respuestas que dan consejo legal/financiero definitivo para revisión del equipo.
La categoría Compliance también empaqueta políticas alineadas con marcos; para lanzamientos auditados impulsados por un marco, instala un paquete de cumplimiento y empareja el rastro de auditoría con Rastro de auditoría.

5. Streaming: la advertencia que importa

Si una regla de salida se aplica en vivo depende de la acción y de si transmites.
AcciónSin streamingCon streaming
blockRespuesta retenida; HTTP 400 guardrail_blockedEl escáner corta el stream en pleno vuelo y emite un mensaje de reemplazo — el contenido bloqueado nunca llega al cliente
maskCoincidencia redactada en el texto devueltoSolo sin streaming hoy; la reescritura de stream en línea está en la hoja de ruta
flagRegistra una coincidencia, no cambia nadaRegistra una coincidencia, no cambia nada
El mask de salida aún no está en vivo en respuestas con streaming. Si transmites y dependes del enmascarado para redactar tramos fuera de marca, el chunk original pasa sin enmascarar. O solicita sin streaming cuando enmascares la respuesta, o usa una regla block (aplicada en streaming y sin streaming) para contenido que nunca debe salir del gateway. La misma advertencia aplica al preset PII Shield, cuyo enmascarado en vivo es de etapa de entrada hoy.
Una respuesta bloqueada no cuesta cuota — el bloqueo de etapa de salida reembolsa la cuota pre-consumida después de que la respuesta se rechaza — y se marca como skip-retry, ya que reejecutar el mismo prompt simplemente volvería a bloquear.

6. Forma de política recomendada

Apila tres reglas en un guardrail

  1. keyword / regex en output — captura de latencia cero para términos prohibidos conocidos y patrones estructurales.
  2. llm_judge en output — captura semántica de toxicidad / fuera de marca / fuera de política para lo que la lista literal omite.
  3. Lanza vía flag primero, observa el feed de Matches, luego promueve a block una vez que la tasa de falsos positivos sea aceptable. Ver Modos de aplicación.
Para examinar la solicitud también — intentos de jailbreak e inyección que producen salida insegura en primer lugar — ejecuta un guardrail de etapa de entrada junto a este. Ver Jailbreaks y Inyección de prompts.

Referencia de Guardrails

Referencia completa de tipos de regla, acciones, etapas, el juez LLM, presets, el arnés de eval y el feed de Matches.

Exfiltración de datos

Impedir que los datos sensibles salgan en la respuesta de un modelo o una llamada a herramienta.