Python API
godml tiene una API Python para usar desde notebooks y scripts, además del CLI.
CLI vs API
Para pipelines en producción usa el CLI (godml run -f godml.yml). La API Python es ideal para notebooks, exploración e integración en código existente.
Notebook API
from godml import notebook_api as nb
nb.quick_train()
Entrena un modelo sin YAML:
nb.quick_train(
model_type="xgboost",
hyperparameters={"max_depth": 6, "eta": 0.1},
dataset_path="./data/churn.csv",
target="churned",
)
nb.train_model()
Entrena con datos ya preparados:
import pandas as pd
from sklearn.model_selection import train_test_split
from godml import notebook_api as nb
df = pd.read_csv("./data/churn.csv")
X = df.drop(columns=["churned"])
y = df["churned"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
result = nb.train_model(
model_type="xgboost",
X=X_train,
y=y_train,
hyperparams={"max_depth": 6, "n_estimators": 100},
)
nb.predict() y nb.evaluate()
predictions = nb.predict(result, X_test)
metrics = nb.evaluate(
y_true=y_test,
y_pred=predictions,
metrics=["accuracy", "f1", "auc"], # para binaria, la clave es 'auc' (no 'roc_auc')
)
# {'accuracy': 0.82, 'f1': 0.79, 'auc': 0.87}
nb.compare_models()
compare_models lee el resultado de result.metrics, que train_model() no rellena — evalúa cada modelo y asígnalo con setattr antes de comparar:
rf = nb.train_model("random_forest", X_train, y_train)
xgb = nb.train_model("xgboost", X_train, y_train)
for res in (rf, xgb):
preds = nb.predict(res, X_test)
setattr(res, "metrics", nb.evaluate(y_test, preds, ["accuracy", "auc"]))
nb.compare_models([rf, xgb], by="auc")
nb.dataprep_run_inline()
recipe = {
"inputs": [{"name": "raw", "connector": "csv", "uri": "./data/raw.csv"}],
"steps": [
{"op": "fillna", "params": {"columns": ["age"], "value": 30.0}},
{"op": "one_hot", "params": {"columns": ["region"], "drop_first": True}},
],
"outputs": [{"name": "clean", "connector": "csv", "uri": "./data/clean.csv"}],
}
df_clean = nb.dataprep_run_inline(recipe)
Pipeline desde código
from godml.config_service.loader import load_pipeline
from godml.providers.mlflow.executor import MLflowExecutor
pipeline = load_pipeline("godml.yml")
executor = MLflowExecutor(pipeline)
executor.validate()
executor.run()
Compliance desde código
from godml.compliance_service.pii_detector import PiiDetector
import pandas as pd
df = pd.read_csv("./data/train.csv")
detector = PiiDetector()
pii_cols = detector.detect_all(df) # {columna: tipo_pii_detectado}
from godml.notebook_api import apply_compliance
df_clean = apply_compliance(df, standard="pci-dss")
DataPrep desde código
from godml.dataprep_service.dataprep import DataPrepService
import pandas as pd
df = pd.read_csv("./data/raw.csv")
svc = DataPrepService()
df_clean = svc.run(df, steps=[
{"op": "fillna", "params": {"columns": ["age"], "value": 28.0}},
{"op": "one_hot", "params": {"columns": ["region"]}},
{"op": "drop_duplicates", "params": {}},
])
GodmlNotebook (OOP)
from godml.notebook_api import GodmlNotebook
g = GodmlNotebook()
g.create_pipeline(
name="churn-nb",
model_type="xgboost",
hyperparameters={"max_depth": 6, "eta": 0.1},
dataset_path="./data/churn.csv",
)
g.train()
Próximamente: referencia completa de clases con tipos y excepciones. hide_edit_link: true
Referencia completa de los endpoints de GODML Core. Todos los endpoints están disponibles en http://localhost:8000 (local) o tu dominio de producción.
La documentación interactiva Swagger está en /docs.
Auth
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /api/auth/register | Crear cuenta |
| POST | /api/auth/login | Login (JWT) |
| GET | /api/auth/me | Usuario actual |
Registro
curl -X POST http://localhost:8000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "secret123", "full_name": "Mi Nombre"}'