Privacidad, logs y datos sensibles
La privacidad se rompe por sitios muy normales: prompts guardados, logs demasiado completos, capturas, vectores con datos personales, emails reenviados o herramientas con permisos amplios.
Objetivos de aprendizaje
- Reducir datos antes de enviarlos al modelo.
- Separar logs útiles de logs peligrosos.
- Diseñar retención, anonimización y revisión para apps educativas o de pyme.
En cristiano: minimización. Enviar solo los datos necesarios para la tarea. Si el modelo no necesita DNI, teléfono o contrato completo, no se lo des.
Qué no debe ir a logs sin pensar
- Prompts completos con datos personales.
- Respuestas con contratos, facturas o historiales.
- Tokens, claves API, cookies o cabeceras.
- Documentos recuperados completos.
- Audio original de usuarios si no hay necesidad clara.
Idea clave. Un log bueno ayuda a depurar sin convertirse en una copia secreta de todos los datos privados.
Log seguro mínimo
Terminal
{
"request_id": "req_20260703_001",
"user_role": "soporte",
"tenant_id_hash": "6f2a...",
"route": "/api/chat",
"model": "qwen3:8b",
"risk_flags": ["pii_detected", "rag_used"],
"retrieved_document_ids": ["doc_123", "doc_456"],
"answer_length": 842,
"refused": false,
"latency_ms": 1840
} Cuidado. Hash no siempre significa anonimización real. Si puedes volver a identificar a alguien combinando datos, sigue siendo información sensible.
Filtro antes del modelo
Terminal
def redact(text):
text = text.replace("API_KEY=", "API_KEY=[REDACTED]")
# En producción usa detectores más serios para emails, teléfonos, DNI y secretos.
return text
safe_prompt = redact(user_prompt)
response = model.generate(safe_prompt) Comprueba que funciona. Busca en tus logs locales tres tipos de dato: email, token y contrato. Si aparecen sin necesidad, tienes una tarea de privacidad.
Guardar y reabrir el proyecto.
Privacidad en IA significa diseñar qué no entra, qué no se guarda y quién puede ver cada traza.