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.6.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"loan"Nombre del escenario predefinido. Solo "loan" (auditoría de equidad sobre UCI German Credit) viene incluido con el SDK; cualquier otro valor lanza ValueError. Escenarios adicionales se publican en el repositorio venturalitica-sdk-samples.
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,
phase=None,
**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. El sobre canónico en v0.6.0 es el assessment_plan.oscal.yaml unificado que emite vl pull.
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.
phasestr o NoneNoneFiltro opcional de lifecycle_phase. Solo se evalúan los controles etiquetados con esa fase (o sin etiqueta). Valores típicos: "training" (datos crudos, Art. 10), "validation" (predicciones del modelo, Art. 15). Los controles etiquetados como monitoring o incident siempre los omite el SDK; van dirigidos al proxy en tiempo de ejecución y al manejador de incidentes respectivamente.
**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="assessment_plan.oscal.yaml",
phase="training", # solo se ejecutan los controles del Art. 10 (datos)
)

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="assessment_plan.oscal.yaml",
phase="validation", # solo se ejecutan los controles del Art. 15 (modelo)
)

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. La v0.6.0 emite un único assessment_plan.oscal.yaml que ya cubre todas las AssuranceMeasure de extremo a extremo, así que el modo lista resulta más útil cuando quieres combinar una política emitida por la SaaS con un archivo OSCAL escrito por el cliente:

results = vl.enforce(
data=df,
target="class",
policy=["assessment_plan.oscal.yaml", "extra_controls.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="assessment_plan.oscal.yaml")
wrapped.fit(X_train, y_train)
preds = wrapped.predict(X_test) # La auditoría se ejecuta automáticamente

Acceso programático a la carga y manipulación de políticas OSCAL. Lo utiliza el editor de políticas en Streamlit y cualquier herramienta que necesite leer o escribir una política serializada en YAML dentro de un directorio de trabajo.

from venturalitica import PolicyManager
mgr = PolicyManager(target_dir=".venturalitica")
policy = mgr.load()
errors = mgr.validate(policy)
if not errors:
mgr.save(policy)
MiembroFirmaDescripción
__init__PolicyManager(target_dir: str)Resuelve la ruta de la política en <target_dir>/model_policy.oscal.yaml. (Para los flujos nuevos de v0.6.0 prefiere el assessment_plan.oscal.yaml unificado que escribe vl pull; PolicyManager está pensado para el esquema simplificado del editor.)
load()() -> Dict[str, Any]Lee el YAML de la política y lo devuelve como diccionario. Devuelve un esqueleto {"title": "New Policy", "controls": []} si el archivo no existe. Los archivos legacy en formato lista quedan envueltos bajo la clave controls.
save(data)(Dict[str, Any]) -> boolValida la forma básica (title es obligatorio) y vuelve a escribir el diccionario como YAML. Lanza ValueError si falta title.
validate(data)(Dict[str, Any]) -> List[str]Devuelve una lista de mensajes de error legibles (vacía si la política es válida). Verifica title, la lista controls y los campos requeridos en cada control (id, metric_key, operator, threshold).
get_schema()staticmethod -> Dict[str, Any]Devuelve el JSON Schema (Draft-07) que describe la forma simplificada de la política.

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'}")