Sistemas de IA en la UE: Diseñar para el RGPD desde el Primer Día
Guía de arquitectura para construir sistemas de IA conformes con el RGPD. Fronteras de confianza, tokenización semántica, restauración basada en políticas y escenarios reales de producción.
El Muro de Cumplimiento del que Nadie te Advierte
La realidad es esta: la mayoría de arquitecturas de IA son técnicamente ilegales en la UE en el momento en que tocan datos de clientes.
No porque a los equipos no les importe. Les importa. El problema es más simple y más brutal: la arquitectura por defecto de cada tutorial de IA, cada quickstart de RAG, cada framework de agentes envía datos brutos de clientes directamente a un proveedor de modelos externo. Nombres, correos, IDs de cliente, referencias de pedidos, datos de facturación. Todo cruza hacia infraestructura que no controlas. En la UE, bajo los Artículos 44-49 del RGPD, eso es una violación de protección de datos antes de que llegues a las partes interesantes.
Nos chocamos con este muro nosotros mismos. Estábamos construyendo un sistema de comunicación con clientes potenciado por IA para un cliente enterprise en Alemania. La demo era brillante: personalizada, consciente del contexto, alemán formal con saludos de género correctos. Entonces el equipo legal revisó el diagrama de arquitectura e hizo una sola pregunta:
"¿En qué punto exacto el nombre del cliente sale de nuestra infraestructura?"
Todo se detuvo durante tres semanas. La respuesta de ingeniería ("la API de OpenAI, pero no entrenan con nuestros datos") no convenció a nadie. Ni al DPO, ni al equipo legal, ni al departamento de compras del cliente.
La industria te da una falsa elección: o usas IA de forma insegura con datos brutos, o limpias los datos hasta que la IA se vuelve inútil. Nosotros pasamos meses construyendo un tercer camino, y se convirtió en la base de OGuardAI, nuestro runtime open-source de protección semántica de datos. Este artículo es todo lo que aprendimos.
Por Qué Importa Más Allá de lo Legal
Antes de entrar en la arquitectura: esto no es solo un problema de cumplimiento normativo. Es un bloqueante de negocio, un riesgo de seguridad y un desafío de ingeniería, todo al mismo tiempo. Puedes ver cómo abordamos proyectos enterprise en nuestra página de metodología y nuestro resumen de servicios.
| Stakeholder | Lo que Pregunta | Lo que Realmente Necesita |
|---|---|---|
| CEO / Fundador | "¿Podemos usar IA de forma segura?" | Un SÍ claro con evidencia para el consejo e inversores |
| CTO / VP de Ingeniería | "¿Cuál es la arquitectura?" | Modelo de frontera de confianza que sobreviva una auditoría de seguridad |
| DPO / Legal | "¿A dónde van los datos personales?" | Prueba de que los datos brutos nunca salen de la infraestructura controlada |
| Product Owner | "¿Podemos seguir personalizando?" | Confirmación de que la calidad del output de IA no se degrada |
| Senior Engineer | "¿Cómo lo implemento?" | APIs, SDKs, pipeline de detección, modos de restauración |
| Arquitecto de Plataforma | "¿Escala?" | Diseño multi-tenant, multi-idioma, multi-política |
Si cualquiera de estas personas dice no, tu proyecto de IA está muerto. Por eso esta arquitectura debe satisfacer a todos al mismo tiempo.
El Modelo de Frontera de Confianza
El concepto más importante en la arquitectura de IA conforme al RGPD es la frontera de confianza. No es una librería. No es un flag de configuración. Es una decisión arquitectónica sobre qué datos cruzan hacia sistemas que no controlas completamente. Si quieres conocer cómo pensamos sobre arquitectura de sistemas en Oronts, esa guía proporciona contexto útil.
┌──────────────────────────────────────────────────────────────────┐
│ TRUSTED ZONE │
│ (Your Infrastructure) │
│ │
│ ┌────────────┐ ┌────────────┐ ┌──────────────────────┐ │
│ │ Raw PII │───▶│ Detect │───▶│ Session Mapping │ │
│ │ Input │ │ Engine │ │ (AES-256-GCM │ │
│ │ │ │ │ │ encrypted) │ │
│ └────────────┘ └─────┬──────┘ └──────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ Tokenized Text │ │
│ │ + entity_context│ │
│ └────────┬─────────┘ │
│ ════════════════════════╪════════════════════════════════════════ │
│ TRUST │ BOUNDARY │
│ ════════════════════════╪════════════════════════════════════════ │
│ ▼ │
│ ┌───────────────────────────────────────────┐ │
│ │ UNTRUSTED ZONE │ │
│ │ (LLM Provider / External API) │ │
│ │ │ │
│ │ Sees: {{person:p_001}}, {{email:e_001}} │ │
│ │ + metadata: gender=female, formality= │ │
│ │ formal, language=de │ │
│ │ Never sees: "Sara Mustermann", │ │
│ │ "sara.mustermann@beispiel.de" │ │
│ └──────────────────────┬─────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Token Repair │─▶│ Output Guard │─▶│ Rehydrate │ │
│ │ (3-stage) │ │ (catch new │ │ (policy-driven │ │
│ │ │ │ PII) │ │ restore) │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘
La regla es absoluta: los datos personales brutos se quedan dentro de la zona de confianza. Solo los tokens semánticos cruzan a la zona no confiable. El LLM nunca ve un nombre real, un correo real, un número de teléfono real, un IBAN real. Ve {{person:p_001}}, {{email:e_001}}, {{phone:ph_001}}.
| Zona | Contiene | Nunca Contiene |
|---|---|---|
| Zona de Confianza (tu runtime) | PII brutos, mapeos de tokens, claves de cifrado, reglas de políticas | — |
| Zona No Confiable (LLMs, herramientas, logs, vector stores) | Solo tokens {{type:id}} + metadatos seguros | Nombres reales, correos, IDs, cualquier PII |
| Cruce de Frontera | Texto tokenizado + metadatos entity_context | Cualquier valor sensible bruto |
Esto es lo que cierra contratos enterprise. No las funcionalidades. Fronteras de confianza demostrables.
Por Qué el Enmascaramiento Ingenuo Destruye el Output de la IA
Lo primero que intenta todo equipo es reemplazo de strings: reemplazar "Sara Mustermann" por [NAME], enviarlo al modelo, y reemplazar [NAME] de vuelta.
Esto falla catastróficamente en producción:
| Problema | Qué Pasa | Impacto en el Negocio |
|---|---|---|
| Colapso semántico | [NAME] no lleva contexto, el modelo no puede determinar género, formalidad, relación | Output genérico que parece spam |
| Tratamiento formal en alemán | "Sehr geehrte Frau Mustermann" se convierte en "Sehr geehrte [NAME]", gramaticalmente roto | Comunicación poco profesional |
| Confusión multi-entidad | Dos personas en un texto, ambas [NAME], el modelo las confunde | La persona equivocada recibe la confirmación del reembolso |
| Ambigüedad en la restauración | Tres [NAME] en el output, ¿cuál es cuál? | Fallo de integridad de datos |
| Honoríficos en árabe | El prefijo honorífico correcto depende del género, estatus y relación | Output culturalmente ofensivo |
El problema del tratamiento formal en alemán, por sí solo, mató nuestro primer enfoque. En comunicación empresarial alemana, necesitas:
- Género: "Herr" (Sr.) o "Frau" (Sra.). Equivocarse en el género es un fallo profesional grave
- Caso gramatical correcto: "Sehr geehrter Herr" vs "Sehr geehrte Frau" (terminación diferente según el género)
- Conciencia de títulos: Prefijo "Dr." o "Prof." cuando aplique
- Consistencia: La misma persona debe ser tratada de la misma forma a lo largo de un documento de 3 páginas
Si tu modelo solo ve [NAME], literalmente no puede producir una carta formal alemana correcta. El output es gramaticalmente incorrecto, culturalmente inapropiado, o tan genérico que parece una plantilla. Y los correos genéricos no convierten. Este es exactamente el tipo de modos de fallo de IA que mata la adopción enterprise.
Tokenización Semántica: La Arquitectura que Funciona
La tokenización semántica es fundamentalmente diferente del enmascaramiento. En lugar de eliminar información, reemplaza valores brutos con tokens que llevan suficientes metadatos para que el LLM produzca un output correcto, sin ver nunca los datos reales.
Formato de Token y Metadatos
{{type:id}}
- type: uno de 12+ tipos de entidad registrados (person, email, phone, company, customer_id, order, address, iban, ssn, ip, passport, health_id)
- id: identificador determinista con alcance de sesión (prefijo + contador:
p_001,e_001,ph_001)
Cada token lleva metadatos estructurados. Esto es lo que lo hace semántico, no solo un placeholder:
| Campo | Valores | Propósito | Ejemplo |
|---|---|---|---|
gender | male, female, unknown | Género gramatical para generación de tratamiento | "Frau" vs "Herr" |
formality | formal, informal | Control de registro | "Sehr geehrte" vs "Hallo" |
language | ISO 639-1 (de, en, ar, fr...) | Idioma de origen de la entidad | Determina las reglas de rehidratación |
role | recipient, sender, subject, reference | Rol semántico en la conversación | Quién recibe el tratamiento vs quién se menciona |
belongs_to | ID del token padre | Vínculo de pertenencia | Email e_001 pertenece a persona p_001 |
Estos metadatos se envían al LLM como entity_context. Es información segura a nivel de tipo que no contiene ningún valor bruto:
{
"entity_context": [
{
"token": "{{person:p_001}}",
"type": "person",
"gender": "female",
"formality": "formal",
"language": "de",
"role": "recipient"
},
{
"token": "{{email:e_001}}",
"type": "email",
"belongs_to": "p_001"
},
{
"token": "{{customer_id:cid_001}}",
"type": "customer_id"
}
]
}
El modelo sabe que está escribiendo a una destinataria formal de habla alemana. No sabe cómo se llama.
El Pipeline de Detección
La detección no es un simple regex. Es un sistema por capas que combina velocidad con precisión:
| Capa | Tecnología | Latencia | Qué Detecta | Confianza |
|---|---|---|---|---|
| Regex integrado | Patrones compilados (Rust) | ~1-5ms | Emails, teléfonos, IBANs, IPs, URLs, SSNs, IDs estructurados | 0.95-1.0 |
| Heurísticas de patrón | Reglas conscientes del contexto | ~2-8ms | IDs de cliente (formato específico), referencias de pedidos, fechas | 0.80-0.95 |
| Modelos NER | spaCy / transformers (sidecar Python) | ~15-50ms | Nombres de personas, empresas, direcciones, PII no estructurados | 0.70-0.95 |
| Detectores personalizados | Reglas definidas por el usuario | Variable | Entidades específicas del dominio (códigos de producto, refs internas) | Configurable |
En producción, ejecutas regex primero (rápido, alta precisión para datos estructurados), luego NER para entidades no estructuradas. El enfoque por capas significa que PII estructurados como emails e IBANs se capturan con latencia casi nula, mientras que nombres y direcciones reciben el tratamiento completo de NER. Para monitorizar cómo funciona esto a lo largo del tiempo, consulta nuestra guía sobre observabilidad de IA.
// Ejemplo de configuración de detección
const config = {
detectors: ["builtin_regex", "ner_spacy"],
entity_types: ["person", "email", "phone", "customer_id", "iban"],
threshold: 0.7, // confianza mínima para tokenizar
language: "de" // pista para el modelo NER
};
Escenario de Producción Completo: Soporte al Cliente en Alemán
Veamos un ciclo de producción completo. No un ejemplo simplificado, sino lo que realmente pasa en un sistema de comunicación con clientes real.
Input (ticket de soporte al cliente):
Hallo, ich bin Sara Mustermann. Meine Kundennummer ist 948221.
Ich warte seit 5 Tagen auf meine Rückzahlung.
Meine E-Mail ist sara.mustermann@beispiel.de, bitte schickt mir eine Bestätigung.
Paso 1: Detección
| Entidad | Tipo | Confianza | Detector | Metadatos |
|---|---|---|---|---|
| Sara Mustermann | person | 0.95 | ner_spacy | gender: female, formality: formal, language: de, role: recipient |
| 948221 | customer_id | 0.99 | builtin_regex | — |
| sara.mustermann@beispiel.de | 1.0 | builtin_regex | belongs_to: p_001 |
Paso 2: Texto seguro tokenizado (enviado al LLM)
Hallo, ich bin {{person:p_001}}. Meine Kundennummer ist {{customer_id:cid_001}}.
Ich warte seit 5 Tagen auf meine Rückzahlung.
Meine E-Mail ist {{email:e_001}}, bitte schickt mir eine Bestätigung.
Paso 3: El LLM genera la respuesta (output del modelo)
Sehr geehrte {{person:p_001}},
vielen Dank für Ihre Nachricht. Es tut uns leid, dass Sie bereits seit
5 Tagen auf Ihre Rückzahlung warten.
Wir haben Ihren Fall unter der Kundennummer {{customer_id:cid_001}}
überprüft und die Rückzahlung wurde heute angewiesen. Sie erhalten
eine Bestätigung an {{email:e_001}} innerhalb der nächsten 24 Stunden.
Mit freundlichen Grüßen,
Ihr Support-Team
Paso 4: Rehidratación (canal de salida: customer_email, restauración: formatted)
Sehr geehrte Frau Sara Mustermann,
vielen Dank für Ihre Nachricht. Es tut uns leid, dass Sie bereits seit
5 Tagen auf Ihre Rückzahlung warten.
Wir haben Ihren Fall unter der Kundennummer 948221 überprüft und die
Rückzahlung wurde heute angewiesen. Sie erhalten eine Bestätigung
an sara.mustermann@beispiel.de innerhalb der nächsten 24 Stunden.
Mit freundlichen Grüßen,
Ihr Support-Team
Qué pasó:
- El LLM escribió alemán formal correcto: "Sehr geehrte" (no "Sehr geehrter") porque sabía que la destinataria es mujer
- "Frau" se añadió automáticamente durante la restauración
formatted. El modelo nunca decidió esto - El ID de cliente se restauró porque la política lo permite para correos al cliente
- El email se restauró porque la clienta solicitó explícitamente la confirmación ahí
- El modelo nunca vio "Sara Mustermann", "948221", ni "sara.mustermann@beispiel.de"
Tres Niveles de Protección para Diferentes Datos
No todos los datos son igualmente sensibles. Un modelo de tres niveles maneja esta realidad. Este tipo de enfoque basado en políticas es central en cómo diseñamos sistemas de IA y diseño de flujos de trabajo de IA en Oronts.
Nivel 1: Enmascaramiento Duro (Nunca Reversible)
Aplica a: iban, ssn, passport, health_id
Estos llevan obligaciones regulatorias (RGPD Art. 9 categorías especiales, PCI-DSS, HIPAA). Sus valores brutos nunca se almacenan de forma reversible.
| Acción | Comportamiento | Cuándo Usarla |
|---|---|---|
block | Petición rechazada si se detecta la entidad | Prohibición absoluta (ej. datos de salud en IA de marketing) |
remove | Entidad eliminada del texto por completo | Minimización de datos, la entidad no es necesaria |
abstract | Reemplazada con etiqueta de categoría: [IBAN on file] | El LLM necesita saber que existe, no el valor |
hard_mask | Máscara de longitud fija: DE** **** **** **** ** | Preservar formato sin revelar el valor |
Nivel 2: Tokenización Reversible (Controlada por Políticas)
Aplica a: person, email, phone, company, customer_id, order, address, ip, url
Estos se tokenizan con metadatos semánticos y se restauran según la política del canal de salida. La misma tokenización produce diferentes outputs para diferentes audiencias:
| Modo de Restauración | Person | Phone | |
|---|---|---|---|
full | Sara Mustermann | sara.mustermann@beispiel.de | +49 30 12345678 |
partial | S. Mustermann | s***@beispiel.de | ***5678 |
masked | **** ****** | s***********************e | +** ** ******** |
formatted | Frau Sara Mustermann | sara.mustermann@beispiel.de (E-Mail) | +49 30 12345678 (Mobil) |
abstract | (weibliche Kundin) | (E-Mail hinterlegt) | (Telefon hinterlegt) |
none | [REDACTED] | [REDACTED] | [REDACTED] |
Los mismos datos tokenizados, diferentes políticas por canal:
| Canal de Salida | person | customer_id | iban | |
|---|---|---|---|---|
customer_email | formatted | full | full | none |
internal_summary | full | full | full | partial (last 4) |
export/analytics | abstract | none | abstract | none |
log_safe | none | none | none | none |
Esta es la clave: tokenizas una vez, restauras de forma diferente por canal. La clienta recibe "Frau Sara Mustermann" en su correo. El equipo interno ve "Sara Mustermann" con todos los detalles. La exportación de analítica ve "(female customer)". El log de auditoría no ve ningún PII.
Nivel 3: Abstracción Semántica (Solo Metadatos)
Aplica a: género, formalidad, estatus VIP, departamento
No se almacena ningún valor bruto. Solo metadatos semánticos fluyen por el sistema. El LLM sabe que la destinataria es mujer y formal, suficiente para producir gramática correcta sin que intervengan datos brutos.
Workflows Agénticos: Donde Se Vuelve Exponencialmente Más Difícil
Las llamadas individuales al LLM son el caso fácil. Los sistemas de IA agénticos, donde un agente de IA realiza múltiples pasos con herramientas, multiplican la superficie de fuga exponencialmente. Cubrimos la arquitectura de agentes en profundidad en nuestra guía de arquitectura multi-agente, pero aquí nos centramos específicamente en el desafío de protección de datos.
Considera un workflow de agente de soporte:
Step 1: Read ticket → PII in ticket text
Step 2: Look up customer → PII in CRM response
Step 3: Check billing → PII in billing data
Step 4: Draft response → PII in prompt + output
Step 5: Trigger refund → PII in API call
Cinco pasos = cinco puntos potenciales de fuga. Sin protección, los datos se filtran al contexto del modelo, los argumentos de las tool calls, las cadenas de razonamiento intermedias, la memoria del agente y los logs. Cada paso amplifica el riesgo.
La solución: envolver cada cruce de frontera de confianza, no solo la llamada final al LLM.
Step 1: Read ticket
→ Raw ticket with PII
→ TRANSFORM → Agent sees tokenized ticket
Step 2: Look up customer (tool call)
Agent requests: get_customer({{customer_id:cid_001}})
→ Runtime intercepts → real ID used for lookup (inside trust boundary)
→ Tool response TRANSFORMED before returning to agent
Step 3: Check billing (tool call)
Agent requests: check_billing({{customer_id:cid_001}})
→ Same pattern: real ID used internally, response tokenized
Step 4: Draft response
Agent has: tokenized ticket + tokenized customer info + tokenized billing
→ Generates response with tokens
→ REHYDRATE for customer_email channel
Step 5: Trigger refund (tool call)
Agent requests: issue_refund({{customer_id:cid_001}}, {{order:o_001}})
→ Runtime passes real values to refund API (inside trust boundary)
→ Confirmation tokenized before returning to agent
El agente nunca ve PII brutos en ningún paso. Los payloads de las herramientas se gobiernan paso a paso. Cada cruce de la frontera de confianza está protegido. El rastro de auditoría muestra exactamente qué entidades se detectaron, tokenizaron y restauraron en cada paso, sin contener ningún PII en sí mismo. Para las puertas de aprobación que hacen seguras las decisiones de agentes, consulta nuestra guía sobre sistemas de IA con humano en el bucle.
Protección del Pipeline RAG
La generación aumentada por recuperación (RAG) introduce un segundo vector de fuga: tu vector store. Si haces embedding de documentos con PII brutos, todo tu pipeline de recuperación se convierte en un sistema regulado por el RGPD. Para una visión más profunda de la arquitectura RAG en sí, consulta nuestra guía de sistemas RAG empresariales y nuestra guía de arquitectura de búsqueda vectorial.
Dos enfoques:
A. Tokenización en Tiempo de Ingesta
Los documentos se tokenizan antes del chunking y el embedding:
- Los chunks contienen
{{person:p_001}}en lugar de nombres reales - Los embeddings se construyen sobre texto tokenizado
- El vector store nunca contiene PII brutos
- Compromiso: calidad de recuperación ligeramente menor para consultas basadas en nombres
B. Tokenización en Tiempo de Consulta (Recomendado)
Los documentos se almacenan en bruto en un entorno controlado. En el momento de la consulta:
User: "What is the status of Sara Mustermann's refund?"
→ TRANSFORM query: "What is the status of {{person:p_001}}'s refund?"
→ RETRIEVE: chunks about refund policies (may contain PII)
→ TRANSFORM retrieved chunks: replace PII with tokens
→ LLM: generates answer using only tokens
→ REHYDRATE: restore per output channel policy
→ User sees: personalized answer with real names where allowed
El enfoque en tiempo de consulta preserva la calidad de recuperación (los embeddings coinciden con términos reales) mientras protege la frontera del LLM. El vector store está dentro de la zona de confianza; solo el LLM está fuera.
Arquitectura de Sesiones: Seguridad Stateless
Un sistema en producción no puede permitirse estado de sesión del lado del servidor para cada petición. Diseñamos sesiones selladas: blobs cifrados con AES-256-GCM que viajan con la petición.
Transform request → runtime creates token map
→ serializes + encrypts with AES-256-GCM
→ returns encrypted blob as session_state
→ client stores blob (opaque, tamper-proof)
Rehydrate request → client sends session_state blob back
→ runtime verifies GCM authentication tag
→ decrypts → resolves tokens → restores values
→ no server-side state required
Por qué esto importa a nivel arquitectónico:
| Propiedad | Sesiones Selladas | Sesiones del Lado del Servidor |
|---|---|---|
| Estado del servidor | Cero | Requiere Redis/DB |
| Escalado horizontal | Trivial, cualquier instancia puede manejar cualquier petición | Requiere almacén de sesiones compartido |
| Modo de fallo | Si se pierde el blob, la rehidratación falla de forma controlada | Si Redis cae, todo falla |
| Detección de manipulación | Tag de autenticación GCM, integridad a nivel de bit | Requiere capa HMAC adicional |
| Multi-turn | Pasar el blob adelante, nuevos blobs para nuevos turnos | Gestión de session ID + TTL |
El sobre de la sesión sellada contiene ID de sesión, ID de tenant, versión de política, timestamp de expiración y el mapa de tokens cifrado, todo verificado por el tag de autenticación GCM. Si un solo bit cambia, el blob completo se rechaza. Fallar cerrado, siempre.
Reparación de Tokens: Manejando las Imperfecciones del LLM
Los LLMs no son procesadores de texto perfectos. Cuando envías {{person:p_001}}, el modelo puede devolver:
| Mutación | Ejemplo | Frecuencia |
|---|---|---|
| Llaves externas faltantes | {person:p_001} | ~1-2% |
| Tipo con mayúscula | {{Person:p_001}} | ~0.5-1% |
| Espacios añadidos | {{ person:p_001 }} | ~0.5% |
| Truncado en frontera de token | {{person:p_001 | ~0.3% |
| Dividido entre líneas | {{person:\np_001}} | ~0.1% |
Un sistema en producción necesita un pipeline de reparación de tres etapas:
- Parseo estricto: regex canónico
{{type:id}}. Maneja ~97% de los casos. - Reparación determinista: patrones de mutación conocidos (llaves faltantes, normalización de mayúsculas, colapso de espacios en blanco). Captura ~2.5%.
- Resolución difusa: distancia de Levenshtein contra tokens conocidos en la sesión. Último recurso para el ~0.5% restante.
Sin reparación de tokens, tus correos al cliente contienen {{person:p_001}} en lugar de un nombre. Hemos visto esto ocurrir con una tasa del ~2-5% entre diferentes proveedores de modelos. Algunos modelos (GPT-4o, Claude) preservan bien los tokens; los modelos más pequeños o locales son peores.
Output Guard: Capturando PII Alucinados
Hay un riesgo que la mayoría de equipos pasan por alto: el LLM puede alucinar PII que no estaban en el input original. Cubrimos más modos de fallo de IA en una guía dedicada, pero este merece atención especial.
Si le pides al modelo que escriba una respuesta a {{person:p_001}}, puede inventar un número de teléfono, una dirección o el nombre de un colega a partir de sus datos de entrenamiento. Estos PII alucinados no están protegidos por tu tokenización porque nunca fueron tokenizados.
La solución: un output guard de segunda pasada que ejecuta el pipeline de detección sobre la respuesta del modelo. Si encuentra PII que no coinciden con ningún token conocido en la sesión, los marca o los elimina.
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ LLM Response │────▶│ Token Repair │────▶│ Output Guard │
│ (with tokens)│ │ (3-stage) │ │ (detect NEW │
│ │ │ │ │ PII in output)│
└───────────────┘ └───────────────┘ └────────┬───────┘
│
┌───────▼───────┐
│ Rehydrate │
│ (restore known│
│ tokens only) │
└───────────────┘
¿El modelo inventó un número de teléfono? Capturado. ¿Mencionó el nombre de una persona real de sus datos de entrenamiento? Capturado. ¿Hizo referencia a una empresa real que no estaba en el input? Marcado para revisión.
Rehidratación Consciente del Idioma
El alemán es solo el comienzo. Cada idioma tiene reglas gramaticales que interactúan con datos personales:
| Idioma | Desafío | Output Correcto | Output Roto (enmascaramiento ingenuo) |
|---|---|---|---|
| Alemán | Tratamiento formal con género | "Sehr geehrte Frau Mustermann" | "Sehr geehrte [NAME]" |
| Alemán | Caso gramatical | "Schreiben Sie Herrn Mustermann" (acusativo) | "Schreiben Sie [NAME]" |
| Árabe | Prefijo honorífico + RTL | "السيدة موسترمان المحترمة" | "[NAME]" |
| Francés | Artículos con género | "Chère Madame Mustermann" | "Cher/Chère [NAME]" |
| Inglés | Control de registro | "Dear Ms. Mustermann" vs "Hi Sara" | "Dear [NAME]" |
Los metadatos del token (gender, formality, language) permiten una rehidratación correcta en cualquier idioma. El modo de restauración formatted aplica reglas específicas del idioma:
- Alemán formal femenino: "Frau" + nombre completo → "Frau Sara Mustermann"
- Alemán formal masculino: "Herr" + nombre completo → "Herr Refaat K."
- Árabe formal femenino: prefijo honorífico en RTL → "السيدة موسترمان"
- Francés formal femenino: "Madame" + apellido → "Madame Mustermann"
El LLM produce la estructura gramatical correcta porque sabe que el token representa una destinataria formal femenina. No sabe su nombre, pero el output es gramaticalmente perfecto.
Rastros de Auditoría que No Crean Nuevas Responsabilidades
Tu infraestructura de logging se convierte en una responsabilidad bajo el RGPD en el momento en que registras prompts brutos. Tu Datadog, CloudWatch, Elasticsearch, todos se convierten en sistemas que procesan datos personales, cada uno requiriendo su propia documentación RGPD, políticas de retención y procedimientos de acceso del interesado.
La regla: registra tokens, nunca valores.
// Correcto: log estructurado seguro para auditoría
{
"event": "transform_complete",
"session_id": "ses_a8f3c2",
"entities_detected": 3,
"entity_types": ["person", "email", "customer_id"],
"token_ids": ["p_001", "e_001", "cid_001"],
"policy_applied": "german-support",
"protection_levels": [2, 2, 2],
"detection_time_ms": 8,
"transform_time_ms": 12
}
// Incorrecto: PII en logs. Ahora todo tu pipeline de logs está regulado por el RGPD
{
"event": "transform_complete",
"original_name": "Sara Mustermann", // ¡PII en logs!
"original_email": "sara.mustermann@beispiel.de", // ¡PII en logs!
"prompt": "Hallo, ich bin Sara Mustermann..." // ¡PII en logs!
}
Cada operación es completamente auditable: puedes rastrear que p_001 fue detectado por ner_spacy con confianza 0.95, tokenizado bajo la política german-support, y restaurado con modo formatted en el canal customer_email. Puedes reconstruir la cadena completa. Pero el rastro de auditoría en sí no contiene ningún PII.
Esto satisface:
- RGPD Art. 30: Registro de actividades de tratamiento. Puedes demostrar exactamente qué pasa con los datos personales
- RGPD Art. 35: Evaluación de Impacto en la Protección de Datos. Tu rastro de auditoría prueba que la arquitectura funciona sin ser en sí misma un riesgo de datos
- RGPD Art. 5(1)(c): Minimización de datos. Solo se procesan los datos necesarios, y solo en forma tokenizada fuera de la frontera de confianza
CRM Copilot: Mismos Datos, Diferentes Canales
Veamos un escenario de CRM donde el mismo input produce diferentes outputs por canal. Este es el tipo de arquitectura de software personalizado que construimos para clientes enterprise de forma habitual.
Input de registro CRM:
{
"contact_name": "Refaat K.",
"email": "r.k@oronts.com",
"company": "Oronts GmbH",
"deal_value": "€125,000",
"quote_id": "Q-2026-0847",
"last_interaction": "Discussed pricing, needs board approval"
}
Prompt tokenizado al LLM:
Draft a follow-up email to {{person:p_001}} at {{company:c_001}}.
Context: discussed pricing, needs board approval.
Deal reference: {{order:o_001}}.
Tone: professional, friendly, not pushy.
El LLM nunca ve "Refaat K.", "Oronts GmbH", "€125,000", ni el ID del presupuesto. Redacta un correo de seguimiento con tokens.
Decisiones de política por entidad y canal de salida:
| Entidad | Tipo | customer_email | internal_summary | analytics_export |
|---|---|---|---|---|
| Refaat K. | person | full | full | abstract |
| r.k@oronts.com | none (not in body) | full | none | |
| Oronts GmbH | company | full | full | abstract |
| €125,000 | order | none (never outbound) | full | abstract |
| Q-2026-0847 | order | full (needed as ref) | full | none |
La misma tokenización. Tres outputs completamente diferentes. El correo al cliente contiene el nombre y la referencia del presupuesto pero nunca el valor del acuerdo. El resumen interno contiene todo. La exportación de analítica contiene solo agregados anonimizados.
Hoja de Ruta de Implementación
Si sientes que esto es mucho para implementar por tu cuenta, nuestro equipo de consultoría ha guiado a múltiples clientes enterprise a través de este proceso exacto. También puedes solicitar presupuesto para una revisión de arquitectura de frontera de confianza.
Fase 1: Mapea tus Flujos de Datos
- Inventaría cada lugar donde PII entran en tu pipeline de IA (prompts, chunks RAG, tool calls, memoria del agente, mensajes de error, logs)
- Identifica qué datos realmente necesita el LLM vs qué recibe actualmente
- Dibuja la frontera de confianza: qué se queda dentro, qué cruza
Fase 2: Construye la Detección
- Empieza con regex para PII estructurados (emails, teléfonos, IBANs). Es rápido y de alta precisión.
- Añade NER para nombres y direcciones. Usa spaCy o transformers con modelos específicos del idioma.
- Establece umbrales de confianza: 0.95+ para regex, 0.70+ para NER
- Testea la tasa de falsos negativos. PII no detectados es peor que los falsos positivos.
Fase 3: Implementa la Tokenización
- Define tu formato de token (
{{type:id}}) y esquema de metadatos - Construye el mapeo de sesión con cifrado sellado (AES-256-GCM)
- Implementa niveles de protección por tipo de entidad
- Crea políticas por canal de salida
Fase 4: Pipeline de Rehidratación
- Reparación de tokens (estricto → determinista → difuso)
- Output guard (detectar PII alucinados en respuestas del modelo)
- Modos de restauración basados en políticas por canal
- Formateo consciente del idioma (tratamiento con género, honoríficos)
Fase 5: Integración de Cumplimiento
- Logging estructurado de auditoría (IDs de tokens, nunca valores)
- Registros de tratamiento según RGPD Art. 30
- EIPD según RGPD Art. 35 con evidencia de arquitectura
- Integra con el proceso de revisión de tu DPO
- Consulta nuestro resumen de confianza y cumplimiento para ver cómo documentamos estas garantías para clientes
Errores Comunes
- Registrar prompts brutos. Tu Datadog se convierte en un sistema regulado por el RGPD de la noche a la mañana. Registra IDs de tokens, nunca valores.
- Saltarse la reparación de tokens. El 2-5% de las respuestas del LLM tendrán tokens mal formados. Tu cliente ve
{{person:p_001}}en lugar de un nombre. - Sin output guard. El modelo alucina PII de sus datos de entrenamiento. Acabas de filtrar el número de teléfono real de otra persona.
- El mismo modo de restauración para todo. Los correos al cliente y los dashboards de analítica necesitan niveles de detalle fundamentalmente diferentes.
- Ignorar los workflows agénticos. Un agente de 5 pasos tiene 5+ puntos de fuga. Proteger solo la llamada final al LLM es como cerrar la puerta con llave dejando las ventanas abiertas.
- "Vamos a self-hostear nuestro propio LLM." Cuesta 10 veces más, tarda 6+ meses, y aun así necesitas gobernanza de datos. El problema es la arquitectura, no el hosting.
- Tratar el cumplimiento como algo secundario. Legal va a bloquear tu despliegue seis semanas antes del lanzamiento. Involúcralos desde el primer día.
- Sin sesiones selladas. El estado de sesión del lado del servidor significa que tu clúster de Redis se convierte en un punto único de fallo para cada petición de IA.
- Enmascaramiento sin conciencia del idioma.
[NAME]en correspondencia formal alemana es una pérdida inmediata de credibilidad profesional. - Hacer embedding de PII en vectores. Tu base de datos vectorial se convierte en el mayor almacén de PII sin auditar en tu infraestructura.
Conclusiones Clave
- La frontera de confianza es una decisión de arquitectura, no una librería. Dibújala, aplícala en cada cruce, audítala sin PII en los logs.
- La tokenización semántica preserva la calidad de la IA donde el enmascaramiento ingenuo la destruye. El modelo recibe metadatos de género, formalidad e idioma, suficiente para gramática correcta sin valores brutos.
- Tres niveles de protección se ajustan a la sensibilidad real de los datos: enmascaramiento duro para lo regulado, tokenización para lo útil, abstracción para los metadatos.
- La restauración basada en políticas significa que una sola tokenización sirve todos los canales: los correos al cliente reciben nombres formateados, la analítica recibe etiquetas abstractas, los logs no reciben nada.
- Los workflows agénticos multiplican el riesgo exponencialmente. Cada tool call, cada paso de razonamiento, cada escritura en memoria es un punto potencial de fuga. Protege cada cruce de frontera.
- Las sesiones selladas eliminan el estado del servidor. Blobs cifrados con AES-256-GCM viajan con la petición, escalan horizontalmente y fallan cerrados ante manipulación.
- La rehidratación consciente del idioma es la diferencia entre "Dear [NAME]" y "Sehr geehrte Frau Mustermann". Esa diferencia determina si tu cliente enterprise aprueba el sistema.
Construir sistemas de IA que sean potentes y conformes con el RGPD no es una contradicción. Es un problema de arquitectura. La solución consiste en dibujar las fronteras de confianza correctas, preservar los metadatos adecuados y controlar la restauración por canal de salida.
Construimos OGuardAI como un runtime open-source exactamente para este problema: detectar, transformar y rehidratar con tokenización semántica, sesiones selladas y restauración basada en políticas. Es la arquitectura descrita en este artículo, empaquetada como un sistema listo para producción.
Si estás evaluando arquitecturas de IA para tu negocio, nuestros servicios de IA cubren todo el stack, desde el diseño de fronteras de confianza hasta el despliegue en producción. También puedes explorar nuestro enfoque de confianza y cumplimiento, o leer más sobre cómo gestionamos la orquestación de IA y la gobernanza de IA en producción.
¿Listo para diseñar una arquitectura de IA conforme al RGPD? Habla con nuestro equipo o solicitar presupuesto. Hemos desplegado esto en sistemas de producción que procesan miles de interacciones con clientes diariamente en alemán, árabe, francés e inglés.
Temas cubiertos
Guías relacionadas
Los 9 Puntos Donde Tu Sistema de IA Filtra Datos (y Cómo Sellar Cada Uno)
Un mapa sistemático de cada lugar donde se filtran datos en sistemas de IA. Prompts, embeddings, logs, llamadas a herramientas, memoria de agentes, mensajes de error, caché, datos de fine-tuning y handoffs entre agentes.
Leer guíaGuía Empresarial de Sistemas de IA Agéntica
Guia tecnica de sistemas de IA agentica en entornos empresariales. Descubre la arquitectura, capacidades y aplicaciones de agentes IA autonomos.
Leer guíaComercio Agéntico: Cómo Dejar que los Agentes IA Compren de Forma Segura
Cómo diseñar comercio iniciado por agentes IA con gobernanza. Motores de políticas, puertas de aprobación HITL, recibos HMAC, idempotencia, aislamiento de tenants y el Agentic Checkout Protocol completo.
Leer guía¿Listo para construir sistemas de IA listos para producción?
Nuestro equipo se especializa en sistemas de IA listos para producción. Hablemos de cómo podemos ayudar.
Iniciar una conversación