Ir al contenido

Guardrails de salida

El prompt pide no inventar; revisarSalida() lo verifica. Compara la respuesta con las fuentes permitidas: el prompt (conocimiento, promociones, mensajes configurados), los resultados de las herramientas del turno y lo que dijo el cliente.

Regla Bloquea Ejemplo bloqueado
precio Política asesor: cualquier cifra de dinero. Política publicados: cifras que no estén en las fuentes “El m³ cuesta $85.000”
descuento Porcentajes que no estén en promociones/conocimiento “Te doy 10%”
promesa “gratis”, “garantizado”, “envío gratis”, “te regalo”… sin respaldo “El envío es gratis”
enlace URLs fuera de dominios_permitidos y de las fuentes https://otro-sitio.com
telefono Números de 7+ dígitos que no estén en las fuentes ni los dio el cliente “Llama al 310 555 1234”
fuga_interna Nombres de herramientas, “prompt del sistema”, etiquetas internas “Voy a usar traspasar_a_humano”
longitud Más de max_caracteres (900 por defecto) —
vacia Respuesta vacía —

Las cantidades no se confunden con dinero: “30 m3” o “12 mil metros” pasan.

  1. Reparación: se vuelve a generar una vez, con el motivo exacto (“cifra $85.000 no aparece en el catálogo…”).
  2. Si vuelve a fallar: no se envía nada dudoso. Se registra el traspaso con motivo control de calidad: precio… y el cliente recibe el mensaje de traspaso.

El resultado queda en ia_eventos (herramienta guardrails con intentos, violaciones y acción ok, reparada, bloqueada o atajo). Muchas reparada/bloqueada indican que falta conocimiento o que el modelo no sirve.

limpiarFormato() convierte markdown que WhatsApp no muestra bien: quita títulos, **negrita** → *negrita*, viñetas → •, enlaces markdown → texto: url.

"guardrails": {
"politica_precios": "asesor",
"max_caracteres": 900,
"dominios_permitidos": ["mitienda.com"]
}