Implementar un LLM (Claude, Gemini, GPT) conforme al RGPD para una empresa francesa: la lista de comprobación completa: seudonimización de datos, acuerdo de tratamiento (DPA), Zero Data Retention, alojamiento de logs y la cuestión de Mistral / soberanía.
El mínimo reglamentario
- Seudonimización de los datos personales antes de cualquier llamada a un LLM externo
- DPA del artículo 28 del RGPD firmado con cada encargado del tratamiento que procese los datos. Kunavo no ofrece ninguno: si tu tratamiento lo exige, contrata directamente con el proveedor del modelo
- Registro de actividades de tratamiento actualizado, incluida la finalidad de cada llamada al LLM
- Información de las personas: tu política de privacidad debe mencionar el uso de la IA
1) Seudonimización: código listo para usar
Antes de que la instrucción salga de tu backend, sustituimos los identificadores directos por tokens. La tabla de correspondencias permanece local:
# Pseudonymiser les données personnelles avant l'appel LLM
import re
from openai import OpenAI
PATTERNS = [
(re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+"), "<EMAIL>"),
(re.compile(r"\b(?:\+33|0)\s*[1-9](?:\s*\d{2}){4}\b"), "<PHONE_FR>"),
# Numéro de sécurité sociale français (15 chiffres)
(re.compile(r"\b[12]\d{2}(?:0[1-9]|1[012])(?:\d{2})(?:\d{3})(?:\d{3})(?:\d{2})\b"), "<NIR>"),
# IBAN FR
(re.compile(r"\bFR\d{2}\s?(?:\d{4}\s?){5}\d{3}\b"), "<IBAN_FR>"),
]
def pseudonymiser(texte: str) -> tuple[str, dict]:
masque = texte
mapping = {}
for i, (pat, tag) in enumerate(PATTERNS):
for m in pat.finditer(texte):
cle = f"{tag}_{i}_{m.start()}"
mapping[cle] = m.group(0)
masque = masque.replace(m.group(0), f"[{cle}]")
return masque, mappingEl LLM ve "[EMAIL_0_42] ha pedido [IBAN_FR_3_158]" en lugar de los identificadores reales. Si la respuesta debe volver a insertar los valores (por ejemplo, para un correo de confirmación), hacemos la sustitución inversa después, nunca dentro de la llamada a la API.
2) DPA: quién debe firmar qué
- Tú ↔ Kunavo: Kunavo no ofrece un DPA del artículo 28 del RGPD. Tus solicitudes se procesan en Estados Unidos y se transmiten a proveedores upstream, cuyas propias políticas de privacidad y conservación de datos se aplican al contenido
- Tú ↔ proveedor del modelo: si tu tratamiento exige un DPA, fírmalo directamente con Anthropic, OpenAI o Google, en el marco de sus condiciones empresariales
- Cláusulas contractuales tipo (CCT): para las transferencias a Estados Unidos (Anthropic, OpenAI), verifica que las CCT aprobadas por la Comisión Europea figuren en el DPA que firmes con el proveedor
3) Zero Data Retention (ZDR): directamente con el proveedor
De forma predeterminada, Anthropic y Google conservan los logs de las instrucciones durante 30 días (Anthropic) / 60 días (Google) para supervisar abusos. Para cargas de trabajo sensibles al RGPD:
- Kunavo: no ofrece ZDR. Las solicitudes pasan por nuestro gateway en Estados Unidos y después por proveedores upstream, cuyas propias políticas de conservación se aplican
- Anthropic ZDR: Anthropic lo ofrece a sus clientes empresariales mediante un contrato directo con Anthropic
- Google Vertex AI EU: mediante un contrato directo con Google Cloud, es posible enrutar a europe-west1 (Bélgica) o europe-west4 (Países Bajos); los datos no salen de la UE. Kunavo no ofrece ninguna región de la UE
- OpenAI: ZDR en el nivel Enterprise, mediante un contrato directo con OpenAI
La cuestión de Mistral y la soberanía
Muchos equipos franceses quieren reducir su dependencia de actores estadounidenses. Hay tres aspectos que considerar:
- Mistral a través de Kunavo: no. El catálogo no incluye ningún modelo de Mistral ni ningún otro proveedor europeo, y no existe un enrutamiento restringido a proveedores europeos
- Mistral directamente: para los casos realmente sensibles (sector público, sanidad), Mistral ofrece una implementación local. Kunavo no sustituye esa necesidad
- Combinar ambos: Mistral directamente para los casos sensibles y Claude mediante Kunavo para el razonamiento avanzado. Son dos proveedores y dos claves, y tu código elige dónde se envía cada llamada
Alojamiento de logs y residencia de datos
- Enrutamiento de Kunavo: dentro del gateway, en una única región (US-East, Ashburn). Solo el edge anycast situado delante termina el TLS cerca de ti
- Persistencia de la cuenta y facturación: una única base de datos principal en US-East, con instantáneas diarias cifradas del volumen. No hay enrutamiento exclusivo para la UE ni almacenamiento en una región de la UE, ni siquiera bajo solicitud
- Tus registros de aplicación: debes alojarlos tú en la UE (OVH, Scaleway, Hetzner). No seas el eslabón débil
Información de las personas: qué debes decir
Si haces que un LLM trate datos personales, la política de privacidad debe mencionarlo. Plantilla mínima:
Utilizamos modelos de inteligencia artificial (Anthropic Claude, Google Gemini, OpenAI GPT) como encargados del tratamiento a través de Kunavo (https://kunavo.com), para las siguientes finalidades: [clasificación, resumen, generación de respuestas, etc.]. Los datos personales se seudonimizan antes de su transmisión. Kunavo no utiliza estos datos para entrenar modelos; cada proveedor de modelos los procesa según sus propias políticas de privacidad y conservación. Tienes derecho de acceso, rectificación, oposición y supresión conforme a los artículos 15 a 21 del RGPD.
Qué debes comprobar antes de pasar a producción
- DPA firmado con cada encargado del tratamiento (directamente con el proveedor del modelo: Kunavo no ofrece ninguno)
- Registro de actividades de tratamiento actualizado
- Seudonimización probada con una muestra real (tasa de filtración < 0,1 %)
- Logs en una región de la UE
- Procedimiento para responder a las solicitudes del artículo 17 (derecho de supresión)
- Política de privacidad actualizada y accesible
- DPO consultado si el tratamiento es a gran escala o sensible
¿Listo para empezar? Regístrate gratis y después recarga desde 10 $.