Ofuscar RUT en Python antes de OpenAI: Spike Técnico y Por Qué las Regex No Bastan
El Impulso Inicial: “¿Por Qué No Usar Simplemente un Regex para el RUT?”
Cuando un equipo de ingeniería en Chile se enfrenta al requerimiento de cumplir con la Ley 21.719 antes de consumir APIs de OpenAI o Anthropic, la primera solución intuitiva suele ser la misma:
# La solución ingenua de 5 minutos
import re
def ofuscar_rut_naive(prompt: str) -> str:
rut_pattern = r"\b\d{1,2}\.?\d{3}\.?\d{3}-[\dkK]\b"
return re.sub(rut_pattern, "[RUT_PROTEGIDO]", prompt)
En pruebas unitarias simples, este código parece funcionar. Sin embargo, en entornos de producción con agentes de IA y flujos conversacionales, las expresiones regulares estáticas colapsan rápidamente.
Por Qué las Regex Fallan en la Vida Real
1. Variaciones de Entrada del Usuario
Los usuarios en chatbots y formularios escriben el RUT en formatos impredecibles:
12345678-k12.345.678k12 345 678 - KRUT: 123456789(sin dígito verificador separado)
Ajustar la expresión regular para capturar todos estos casos flexibiliza tanto el patrón que termina capturando números de serie, fechas, números de teléfono o montos financieros como si fueran identificadores personales.
2. Ausencia de Validación Módulo 11
Una Regex no sabe si el número es matemáticamente un RUT real. Si un cliente escribe un código de producto 76.543.210-9 que no cumple el algoritmo Módulo 11, la Regex lo ofuscará ciegamente, dañando el contexto analítico del LLM.
3. Falta de Contexto Semántico (NLP)
Una Regex no entiende semántica:
"El RUT del paciente es 14.234.567-8"(Dato de salud de categoría especial, riesgo crítico)."El RUT de la empresa proveedora es 76.123.456-0"(Persona jurídica, no sujeta a las mismas restricciones de datos personales de personas naturales).
La Solución Moderna: Microsoft Presidio + Reconocedores Específicos para Chile
Para lograr un sistema de grado empresarial, es necesario combinar Modelos de Lenguaje NLP (spaCy en español) con reconocedores algorítmicos dedicados que verifiquen el Módulo 11 en tiempo real.
# Implementación con reconocedor especializado
from presidio_analyzer import Pattern, PatternRecognizer, AnalyzerEngine
class ChileRutRecognizer(PatternRecognizer):
def __init__(self):
patterns = [
Pattern(
name="cl_rut_pattern",
regex=r"(?i)\b(\d{1,2}(?:\.?\d{3}){2}-?[\dkK])\b",
score=0.85,
)
]
super().__init__(
supported_entity="CL_RUT",
patterns=patterns,
name="ChileRutRecognizer",
supported_language="es",
)
def validate_result(self, pattern_text: str) -> bool:
# Validación algorítmica Módulo 11
clean = pattern_text.replace(".", "").replace("-", "").upper()
if len(clean) < 2:
return False
cuerpo, dv = clean[:-1], clean[-1]
try:
total = sum(int(digit) * factor for digit, factor in zip(reversed(cuerpo), [2, 3, 4, 5, 6, 7] * 2))
resto = 11 - (total % 11)
expected_dv = {11: "0", 10: "K"}.get(resto, str(resto))
return dv == expected_dv
except ValueError:
return False
Integración con Gen.IA.L CAPA en 2 Líneas de Código
Implementar y mantener estos clasificadores NLP, más el chunking de textos extensos y las políticas de Open Policy Agent (OPA), añade cientos de horas de ingeniería a tu roadmap.
Con Gen.IA.L CAPA, toda esta inteligencia corre como un middleware de menos de 5 milisegundos:
from genial_capa import CapaClient
capa = CapaClient(api_key="tu_api_key_tenant")
# El cliente intercepta, detecta el RUT, valida Módulo 11 y ofusca antes del LLM
resultado = capa.enforce({
"prompt": "Genera un resumen clínico para el paciente RUT 15.987.654-K diagnosticado con diabetes."
})
print(resultado.sanitized_prompt)
# Salida: "Genera un resumen clínico para el paciente RUT [PERSONAL_ID_1] diagnosticado con [SENSITIVE_HEALTH_1]."
Principales Ventajas
- Reversibilidad Segura: Los tokens anonimizados pueden reconstruirse en la respuesta de vuelta hacia tu aplicación autorizada, mientras OpenAI solo vio etiquetas opacas.
- Audit Trail Automático: Cada ofuscación queda registrada en el Registro de Actividades de Tratamiento (RAT).
- Protección contra Multas: Garantiza cumplimiento directo con los Artículos 14, 15 y 26 de la Ley 21.719 en Chile.
¿Quieres auditar el código de tu aplicación o evaluar cómo se comporta tu pipeline actual? Prueba el autodiagnóstico de cumplimiento Ley 21.719 o revisa el paquete en PyPI (pip install genial-capa).
¿Tu empresa procesa datos con Inteligencia Artificial?
Obtén tu informe oficial de exposición a multas de la Ley 21.719 en PDF de forma 100% gratuita.
Realizar Autodiagnóstico Gratis →