Saltar al contenido

Referencia de API

Venturalitica expone cinco símbolos públicos. Esta página documenta sus firmas exactas y comportamiento a partir de la v0.5.0.


Ejecuta una demostración preconfigurada de auditoría de sesgo sobre un conjunto de datos estándar. Es la forma más rápida de ver el SDK en acción.

import venturalitica as vl
results = vl.quickstart("loan")
ParámetroTipoPor defectoDescripción
scenariostr(requerido)Nombre del escenario predefinido: "loan", "hiring", "health".
verboseboolTrueImprime la tabla estructurada de cumplimiento en la consola.

Retorna: List[ComplianceResult]


El punto de entrada principal para auditar conjuntos de datos y modelos contra políticas OSCAL.

def enforce(
data=None,
metrics=None,
policy="risks.oscal.yaml",
target="target",
prediction="prediction",
strict=False,
**attributes,
) -> List[ComplianceResult]
ParámetroTipoPor defectoDescripción
dataDataFrame o NoneNoneDataFrame de Pandas que contiene características, objetivos y, opcionalmente, predicciones.
metricsDict[str, float] o NoneNoneDiccionario de métricas precalculadas. Úsalo cuando ya hayas calculado tus métricas de forma externa.
policystr, Path o List"risks.oscal.yaml"Ruta a uno o más archivos de política OSCAL. Pasa una lista para aplicar múltiples políticas en una sola llamada.
targetstr"target"Nombre de la columna que contiene las etiquetas de verdad fundamental.
predictionstr"prediction"Nombre de la columna que contiene las predicciones del modelo.
strictboolFalseSi es True, las métricas faltantes, variables no vinculadas y errores de cálculo generan excepciones en lugar de omitirse. Se activa automáticamente cuando CI=true o VENTURALITICA_STRICT=true.
**attributeskeyword argsMapeos para variables protegidas y dimensiones. Por ejemplo: gender="Attribute9", age="Attribute13".

Retorna: List[ComplianceResult]

Modo 1: Basado en DataFrame (el más común). Pasa un DataFrame y deja que el SDK calcule las métricas automáticamente:

results = vl.enforce(
data=df,
target="class",
prediction="prediction",
gender="Attribute9", # mapea 'gender' abstracto -> columna 'Attribute9'
age="Attribute13", # mapea 'age' abstracto -> columna 'Attribute13'
policy="data_policy.oscal.yaml",
)

Modo 2: Métricas precalculadas. Pasa un diccionario de valores ya calculados:

results = vl.enforce(
metrics={"accuracy_score": 0.92, "demographic_parity_diff": 0.07},
policy="model_policy.oscal.yaml",
)

Al usar el modo DataFrame, el SDK resuelve los nombres de columna mediante un sistema de sinónimos (ver Vinculación de Columnas):

  • target y prediction se resuelven primero a través de los parámetros explícitos, y luego mediante descubrimiento de sinónimos.
  • **attributes (p.ej., gender="Attribute9") se pasan directamente a las funciones de métricas como el parámetro dimension.
  • Si no se encuentra una columna, el SDK recurre a coincidencia en minúsculas.

enforce() almacena automáticamente los resultados en cache en .venturalitica/results.json y, si se ejecuta dentro de una sesión monitor(), en el directorio de evidencia específico de la sesión. Ejecuta venturalitica ui para visualizar los resultados almacenados.

Pasa una lista para aplicar varias políticas en una sola llamada:

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

monitor(name, label=None, inputs=None, outputs=None)

Sección titulada «monitor(name, label=None, inputs=None, outputs=None)»

Un gestor de contexto que registra telemetría multimodal durante el entrenamiento o la evaluación. Captura automáticamente evidencia de hardware, carbono, seguridad y auditoría.

@contextmanager
def monitor(
name="Training Task",
label=None,
inputs=None,
outputs=None,
)
ParámetroTipoPor defectoDescripción
namestr"Training Task"Nombre legible para esta sesión de monitoreo. Se usa en los nombres de archivos de traza.
labelstr o NoneNoneEtiqueta opcional para categorización (p.ej., "pre-training", "validation").
inputsList[str] o NoneNoneRutas a artefactos de entrada (conjuntos de datos, configuraciones) para el rastreo de linaje de datos.
outputsList[str] o NoneNoneRutas a artefactos de salida (modelos, gráficos) para el rastreo de linaje.
with vl.monitor("credit_model_v1"):
model.fit(X_train, y_train)
vl.enforce(data=df, policy="policy.oscal.yaml", target="class")

monitor() inicializa 7 sondas automáticamente. Consulta la Referencia de Sondas para más detalles.

SondaQué CapturaArtículo de la Ley de IA de la UE
IntegrityProbeHuella digital SHA-256 del entorno, detección de derivaArt. 15
HardwareProbePico de RAM, número de CPUsArt. 15
CarbonProbeEmisiones de CO2 via CodeCarbonArt. 15
BOMProbeLista de Materiales de Software (SBOM)Art. 13
ArtifactProbeLinaje de datos de entrada/salidaArt. 10
HandshakeProbeSi enforce() fue llamado dentro de la sesiónArt. 9
TraceProbeAnálisis AST del código, marcas de tiempo, contexto de llamadaArt. 11

La evidencia se guarda en .venturalitica/ o en un directorio específico de la sesión.


Audita transparentemente tu modelo durante flujos de trabajo estándar de Scikit-Learn, interceptando .fit() y .predict().

ParámetroTipoDescripción
modelobjectCualquier clasificador o regresor compatible con Scikit-learn.
policystrRuta a la política OSCAL para evaluación.

Retorna: AssuranceWrapper (preserva la API original del modelo: .fit(), .predict(), etc.)

wrapped = vl.wrap(LogisticRegression(), policy="model_policy.oscal.yaml")
wrapped.fit(X_train, y_train)
preds = wrapped.predict(X_test) # La auditoria se ejecuta automaticamente

Acceso programático a la carga y manipulación de políticas OSCAL.

from venturalitica import PolicyManager

Cada llamada a enforce() retorna una lista de instancias del dataclass ComplianceResult:

CampoTipoDescripción
control_idstrEl identificador del control en la política (p.ej., "credit-data-bias").
descriptionstrDescripción legible del control.
metric_keystrLa función de métrica utilizada (p.ej., "disparate_impact").
actualfloatEl valor calculado de la métrica.
thresholdfloatEl umbral definido en la política.
operatorstrOperador de comparación (">", "<", ">=", "<=", "==", "gt", "lt").
passedboolSi el control fue aprobado.
for r in results:
print(f"{r.control_id}: {r.actual:.3f} {'PASS' if r.passed else 'FAIL'}")