Saltar al contenido

Guía de Redacción de Políticas

Esta guía explica cómo escribir archivos de política OSCAL para Venturalitica. Las políticas definen los controles de equidad, rendimiento, privacidad y calidad de datos que tu sistema de IA debe superar.


Venturalitica utiliza el formato OSCAL assessment-plan como formato canónico de políticas. Aunque el cargador del SDK soporta múltiples tipos de documentos OSCAL (catalog, system-security-plan, component-definition, profile), las nuevas políticas deben escribirse en formato assessment-plan.


La política válida más simple tiene un único control:

assessment-plan:
metadata:
title: "My First Policy"
control-implementations:
- description: "Fairness Controls"
implemented-requirements:
- control-id: bias-check
description: "Disparate impact must satisfy the Four-Fifths Rule"
props:
- name: metric_key
value: disparate_impact
- name: threshold
value: "0.8"
- name: operator
value: ">"
- name: "input:dimension"
value: gender

Para aplicarla:

import venturalitica as vl
results = vl.enforce(
data=df,
target="class",
gender="Attribute9",
policy="my_policy.oscal.yaml"
)

Cada control (un implemented-requirement) tiene las siguientes propiedades:

PropiedadObligatoriaDescripción
control-idIdentificador único del control
descriptionNoDescripción legible por humanos
propsLista de propiedades clave-valor (ver más abajo)
Nombre del PropObligatorioDescripciónEjemplo
metric_keyClave de registro de la métrica a calculardisparate_impact
thresholdValor numérico del umbral (como cadena de texto)"0.8"
operatorOperador de comparación">", "<", ">=", "<=", "==", "gt", "lt"
input:dimensionDependeAtributo protegido para métricas de equidadgender, age
input:targetNoSobreescribir la columna objetivo para este controlclass
input:predictionNoSobreescribir la columna de prediccióny_pred

El cumplimiento profesional separa las auditorías de datos y de modelo en dos políticas:

Verifica los datos de entrenamiento antes del entrenamiento del modelo:

assessment-plan:
metadata:
title: "Article 10: Data Assurance"
control-implementations:
- description: "Data Quality & Fairness"
implemented-requirements:
- control-id: data-imbalance
description: "Minority class must be > 20%"
props:
- name: metric_key
value: class_imbalance
- name: threshold
value: "0.2"
- name: operator
value: ">"
- control-id: data-gender-bias
description: "Gender disparate impact > 0.8 (Four-Fifths Rule)"
props:
- name: metric_key
value: disparate_impact
- name: "input:dimension"
value: gender
- name: threshold
value: "0.8"
- name: operator
value: ">"
- control-id: data-age-bias
description: "Age disparity > 0.5"
props:
- name: metric_key
value: disparate_impact
- name: "input:dimension"
value: age
- name: threshold
value: "0.5"
- name: operator
value: ">"

Verifica las predicciones del modelo después del entrenamiento:

assessment-plan:
metadata:
title: "Article 15: Model Assurance"
control-implementations:
- description: "Model Performance & Fairness"
implemented-requirements:
- control-id: model-accuracy
description: "Model accuracy >= 80%"
props:
- name: metric_key
value: accuracy_score
- name: threshold
value: "0.80"
- name: operator
value: ">="
- control-id: model-fairness
description: "Demographic parity difference < 0.10"
props:
- name: metric_key
value: demographic_parity_diff
- name: "input:dimension"
value: gender
- name: threshold
value: "0.10"
- name: operator
value: "<"
# Pre-entrenamiento: auditar los datos
vl.enforce(data=train_df, target="class", gender="Attribute9",
policy="data_policy.oscal.yaml")
# Post-entrenamiento: auditar el modelo
vl.enforce(data=test_df, target="class", prediction="y_pred",
gender="Attribute9", policy="model_policy.oscal.yaml")

O en una sola llamada:

vl.enforce(
data=df,
target="class",
gender="Attribute9",
policy=["data_policy.oscal.yaml", "model_policy.oscal.yaml"]
)

Cualquier métrica registrada en METRIC_REGISTRY puede usarse como metric_key. Consulta la Referencia de Métricas para la lista completa. Las más comunes:

CategoríaClave de métricaOperador típicoUmbral típico
Calidad de datosdisparate_impact>0.8
Calidad de datosclass_imbalance>0.2
Rendimientoaccuracy_score>=0.80
Rendimientof1_score>=0.75
Equidaddemographic_parity_diff<0.10
Equidadequalized_odds_ratio<0.20
Privacidadk_anonymity>=5

El prop input:dimension indica al SDK qué atributo protegido analizar. El valor es un nombre abstracto que se resuelve mediante Vinculación de Columnas:

# En tu politica:
- name: "input:dimension"
value: gender # Nombre abstracto
# En tu codigo Python:
vl.enforce(data=df, gender="Attribute9") # Mapea 'gender' -> 'Attribute9'

Puedes agrupar controles de forma lógica:

assessment-plan:
metadata:
title: "Comprehensive AI Assurance Policy"
control-implementations:
- description: "Data Quality Controls (Article 10)"
implemented-requirements:
- control-id: dq-001
# ...
- control-id: dq-002
# ...
- description: "Fairness Controls (Article 9)"
implemented-requirements:
- control-id: fair-001
# ...
- description: "Privacy Controls (GDPR)"
implemented-requirements:
- control-id: priv-001
# ...

El Dashboard Policy Editor ofrece una interfaz visual para crear políticas:

  1. Ejecuta venturalitica ui
  2. Navega a Phase 2: Risk Policy
  3. Usa el formulario para agregar controles, seleccionar métricas y establecer umbrales
  4. El editor genera OSCAL YAML en formato assessment-plan y lo guarda en tu proyecto

Consulta la Guía del Dashboard para más detalles.


ArchivoPropósito
data_policy.oscal.yamlControles de auditoría de datos previos al entrenamiento
model_policy.oscal.yamlControles de auditoría del modelo posteriores al entrenamiento
risks.oscal.yamlPolítica combinada de inicio rápido (usada por vl.quickstart())

La extensión .oscal.yaml es una convención, no un requisito. El SDK carga cualquier archivo .yaml.


Aunque assessment-plan es el formato canónico, el cargador también acepta:

FormatoNivel de soporteNotas
assessment-planPrimarioFormato canónico, generado por el Dashboard
catalogSoportadoUtilizado en algunas muestras avanzadas
system-security-planSoportadoUtilizado por el comando pull del SaaS
component-definitionSoportadoFormato estándar de componentes OSCAL
profileSoportadoFormato de perfil OSCAL
Lista YAML planaAlternativaFormato de emergencia para listas simples