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_train=X_train,
y_train=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,
metric_names=["accuracy", "f1", "roc_auc"],
)
# {'accuracy': 0.82, 'f1': 0.79, 'roc_auc': 0.87}
nb.compare_models()
rf = nb.train_model("random_forest", X_train, y_train)
xgb = nb.train_model("xgboost", X_train, y_train)
nb.compare_models([rf, xgb], by="roc_auc")
nb.dataprep_run_inline()
recipe = {
"inputs": [{"name": "raw", "connector": "csv", "uri": "./data/raw.csv"}],
"steps": [
{"op": "fillna", "params": {"columns": {"age": 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.scan_dataframe(df)
from godml.compliance_service.compliance import ComplianceService
svc = ComplianceService(policy="mask_sensitive")
df_clean = svc.apply(df)
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": 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"}'
Login
curl -X POST http://localhost:8000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "secret123"}'
Respuesta: {"access_token": "eyJ...", "token_type": "bearer"}
Projects
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/projects | Listar proyectos |
| POST | /api/projects | Crear proyecto |
| GET | /api/projects/{id} | Ver proyecto |
Training
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /api/train/upload | Entrenar con CSV + YAML |
| POST | /api/train/config | Entrenar con config inline |
Jobs
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/jobs | Listar jobs |
| GET | /api/jobs/{id} | Status de job |
| GET | /api/jobs/{id}/celery-status | Status en tiempo real |
Health
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /health | Health check |
| GET | /ping | Simple ping |