Implementación técnica · Zoentia

Audit trail
inmutable

Cómo capturamos y blindamos cada interacción con la IA — desde el prompt hasta la fuente recuperada — de forma que ningún regulador pueda cuestionarla.

Art. 12 AI Act Art. 19 AI Act cl. 9 Anexo 11 §11.10(e) Part 11
01 · Por qué

El problema que resuelve

En un entorno GxP, si la IA genera una recomendación que influye en una decisión clínica o de manufactura, debes poder demostrar qué datos tenía, qué prompt recibió, qué contexto recuperó y quién aprobó la salida — y hacerlo 10 años después si un regulador lo pide. Sin un log inmutable, cualquier auditoría puede paralizar el producto.
02 · Stack técnico

Componentes que usamos

Azure Monitor + Log Analytics

Captura de cada invocación al modelo: timestamp, usuario, prompt completo, contexto RAG devuelto y respuesta. Retención configurable hasta 10 años.

Azure Blob Storage inmutable

Política WORM (Write-Once Read-Many) sobre cada log de sesión. Una vez escrito, ningún operador — ni siquiera el administrador de la cuenta — puede modificarlo ni borrarlo.

Claude API + system prompt hash

Cada llamada incluye el hash SHA-256 del system prompt activo. Si el prompt cambia, el hash cambia y el sistema lo detecta como un evento de cambio validable.

Microsoft Fabric (OneLake)

Centralización de logs de auditoría en un data lake federado. Permite queries forenses sobre millones de eventos en segundos, con lineage completo.

LangChain callbacks

Middleware de observabilidad que intercepta cada step del pipeline RAG: retrieval, reranking, prompt construction y generation — todo trazado automáticamente.

Azure OpenAI (model metadata)

Cada respuesta incluye el ID del deployment y la versión exacta del modelo usada. Si Microsoft actualiza el modelo, el log lo captura y activa re-validación.

03 · Cómo funciona

Flujo de captura end-to-end

El usuario envía un prompt

El gateway de la plataforma genera un session_id único y registra: usuario autenticado (Azure AD), timestamp UTC, prompt completo y hash del system prompt vigente.

Recuperación RAG (Azure AI Search)

Se registran los chunk_ids de los documentos recuperados, el score de relevancia de cada uno y la versión del índice de embeddings. El contexto inyectado en el prompt queda completo en el log.

Generación (Azure OpenAI / Claude)

La respuesta se captura junto al model_id, deployment_version, tokens de entrada/salida y finish reason. El log es inmutable desde este momento (WORM blob).

Revisión humana (HITL)

Si la salida requiere aprobación, el revisor la firma con su identidad Azure AD. La aprobación, el rechazo o la corrección manual se añaden al mismo registro de sesión como evento adicional.

Archivado y retención

El log completo se vuelca a OneLake (Fabric) y se sellado con política WORM. El periodo de retención se configura según el predicate rule aplicable: 5 años para GMP, 10 para ensayos clínicos.

04 · Cobertura regulatoria

Qué artículo cubre cada elemento

Elemento del logEU AI ActAnexo 1121 CFR Part 11
Identidad del usuarioArt. 12cl. 9, cl. 12§11.10(e), §11.300
Timestamp UTC inmutableArt. 12cl. 9§11.10(e)
Prompt + system prompt hashArt. 12, Art. 19cl. 10§11.10(e)
Contexto RAG (chunk IDs)Art. 13 (trazabilidad)cl. 5, cl. 9§11.10(b)
Versión del modeloArt. 15, Art. 72cl. 10, cl. 11Validated state
Revisión humana firmadaArt. 14cl. 14§11.50, §11.70
¿Por qué WORM y no solo backup? Un backup puede sobrescribirse. Una política WORM en Azure Blob Storage es enforced a nivel de plataforma: ni el propietario de la cuenta puede borrarlo durante el periodo de retención. Esto es lo que pide §11.10(e) cuando habla de «computer-generated, computer-stamped audit trails».
← Volver a Trazabilidad CSV/CSA del pipeline → 21 CFR Part 11 →