1. La pregunta de la cobertura de guardrails en streaming
Una regla de guardrail lleva una etapa (input, output o both) y una
acción — una de cinco: block, mask, flag, annotate o spotlight. La
etapa decide cuándo el gateway la ejecuta; la acción decide qué hace. El único
lugar donde el streaming cambia la forma de la respuesta es la etapa de
salida — porque esa es la única etapa donde el gateway está reenviando bytes
a tu cliente a medida que llegan, sin oportunidad de sostener el payload completo
primero.
Así que la matriz tiene dos celdas donde el streaming importa, y se comportan
diferente: el block de salida se aplica totalmente en un stream (el escáner lo
corta), pero el mask de salida se aplica solo a respuestas sin streaming. En
una respuesta con streaming el escáner aún detecta la coincidencia y puede actuar
sobre una decisión de bloqueo, pero no reescribe el texto enmascarado en el
stream hoy — el enmascarado de salida en banda en el stream está en el roadmap.
mask, reescribe) tu solicitud,
luego reenvía la versión saneada upstream. Si la respuesta hará streaming es
irrelevante; la solicitud es un payload completo que el gateway sostiene
entero. El escaneo de entrada está totalmente activo, enmascarado incluido, en
cada solicitud.2. La matriz de cobertura
Lee esto de arriba a abajo. Cada celda de block está activa, streaming incluido — pero salida + mask + streaming es la única celda que no está aún aplicada en el stream: una regla mask redacta una respuesta sin streaming, y en una respuesta con streaming detecta la coincidencia sin reescribir el delta (el enmascarado de salida en el stream está en el roadmap).| Etapa · acción | Sin streaming | Con streaming |
|---|---|---|
input · block | rechaza la solicitud | rechaza la solicitud |
input · mask | reescribe la solicitud | reescribe la solicitud |
output · block | rechaza la respuesta | corta el stream |
output · mask | redacta la respuesta | detecta la coincidencia; no redacta en el stream (roadmap) |
| cualquiera · flag | solo registra | solo registra |
annotate y spotlight adjuntan una nota (o envuelven texto coincidente) sin
rechazar tráfico y son acciones de la etapa de entrada en la práctica, así que no
cambian las celdas de salida/streaming de arriba; registran una coincidencia como
cualquier otra regla.
input — totalmente activo, en ambos sentidos (block + mask)
input — totalmente activo, en ambos sentidos (block + mask)
block cortocircuita la llamada (HTTP 400
guardrail_blocked, antes de la medición, así que no cuesta cuota). Un
mask reescribe los campos coincidentes en el prompt en su lugar — el
texto saneado es lo que va upstream, y el modelo nunca ve el original. Nada de
esto depende de si la respuesta hace streaming.output · block — aplicado con streaming Y sin streaming
output · block — aplicado con streaming Y sin streaming
guardrail_blocked. En una
respuesta con streaming un escáner de stream observa los deltas a medida
que fluyen; cuando una regla de bloqueo se dispara corta el stream — sella
el escáner, emite un breve aviso de reemplazo en lugar del resto, y cierra el
canal SSE antes de que más contenido bloqueado llegue al cliente. Como las
cabeceras SSE 200 ya salieron para entonces, un bloqueo en streaming no puede
devolver un 400: entrega el bloqueo como un delta final en banda en vez de un
error HTTP.output · mask — solo sin streaming (streaming en el roadmap)
output · mask — solo sin streaming (streaming en el roadmap)
mask reescribe el completado — p.
ej. un email se convierte en [EMAIL] — y el texto saneado es lo que tu
cliente obtiene. En una respuesta con streaming el escáner de stream aún
detecta la coincidencia y computa el enmascarado, pero no reenvía el texto
enmascarado al delta — la salida enmascarada se descarta y solo se actúa sobre
una decisión de bloqueo. Así que una regla mask no redacta una respuesta
con streaming hoy; el enmascarado de salida en banda en el stream está en el
roadmap. Si necesitas mantener la PII fuera de una respuesta con streaming
ahora mismo, crea la regla como block (el escáner corta el stream en la
coincidencia) o examina sin streaming.flag — solo observar, idéntico en todas partes
flag — solo observar, idéntico en todas partes
flag nunca altera el tráfico — registra una coincidencia y deja
pasar los bytes. La etapa y el stream no cambian su comportamiento. Úsala para
medir la tasa de impacto de una regla antes de promoverla a block.3. Un ejemplo concreto — mantener la PII fuera de una respuesta con streaming
Digamos que el modelo puede sacar un email de cliente del contexto RAG, y tu app hace streaming. Elmask de salida no redacta en el stream hoy (el
enmascarado de salida en el stream está en el roadmap) — así que para mantener la
PII fuera de una respuesta con streaming, crea la regla de salida como
block: el escáner mata el stream en el momento en que aparece una
coincidencia. (El mask de salida sí redacta en una respuesta sin streaming.)
Editar política es una acción de gestión sobre tu sesión de consola
(restringida a Developer+); la clave de relay sk-orca-... solo envía tráfico
/v1/* y nunca edita política.
- Abre
/console/guardrails, New guardrail, nómbralostream-pii-out. - Añade una regla:
- Tipo: PII detection
- Etapa:
output - Acción:
block← corta el stream en la coincidencia; en un streammasksolo detecta (redacta respuestas sin streaming)
- Guarda, luego vincúlalo en
/console/tokenvía el desplegable Guardrail de la clave.
stream: true, exactamente como antes:
4. PII Shield a través de la matriz
El preset PII Shield es una sola reglapii, acción mask, etapa both.
Mapéalo sobre la matriz y la cobertura es exactamente lo que esperarías de §2:
- Etapa de entrada — totalmente activo, con o sin streaming. La solicitud se enmascara antes de que el modelo la vea (el valor titular del enmascarado de entrada).
- Etapa de salida, sin streaming — el completado se enmascara antes de regresar.
- Etapa de salida, con streaming — el escáner de stream detecta la coincidencia pero no reescribe el delta hoy, así que la forma enmascarada no llega a un cliente con streaming (el enmascarado de salida en el stream está en el roadmap).
block (o llama sin streaming) para que el stream se corte en
la coincidencia. Ver PII Shield y
formatos de enmascarado.
5. Qué cuesta un bloqueo en streaming
Un bloqueo en streaming lleva la misma contabilidad que cualquier bloqueo de salida — el modelo ya se ejecutó, así que el gateway maneja el reembolso por ti:- En una respuesta sin streaming la llamada devuelve HTTP 400
guardrail_blockedque nombra el guardrail y la regla que se disparó. En una respuesta con streaming las cabeceras SSE200ya están en el cable, así que el bloqueo llega como un delta de reemplazo final en banda y un cierre limpio del canal en vez de un400. - No se cobra cuota. Un bloqueo de entrada se dispara antes de la medición; un bloqueo de salida (con o sin streaming) reembolsa la cuota preconsumida una vez que la respuesta es rechazada. En cualquier caso el llamador no paga nada.
- La solicitud se marca como skip-retry — reejecutar el mismo prompt simplemente volvería a bloquear, así que el gateway no quemará un reintento en otro canal.
GET /api/guardrail/match, abierto a
cualquier Member); la subcadena coincidente se captura solo cuando el toggle
Log raw content del guardrail está activado (apagado por defecto). El detalle
completo vive en
el error guardrail_blocked y el
feed de coincidencias.
6. Prueba tu combinación de etapa/acción antes de lanzar
No adivines qué celda de la matriz aplica a tu política — verifícalo. Ambas herramientas se ejecutan en tu sesión de consola vía la API de gestión:Pestaña Test
Pestaña Eval
7. Dónde ir a continuación
Reglas seguras en streaming
Etapa de salida
Etapa de entrada
Acciones
Conceptos relacionados
Conceptos relacionados
Amenazas que esto aborda
Amenazas que esto aborda
Referencia completa del motor
Referencia completa del motor
