Skip to content

Python API

STEB can be used programmatically for more control over evaluations.

Basic Usage

import steb

# Load a model (type is auto-detected)
model = steb.get_model("rrivera1849/LUAR-MUD")

# Get datasets that support a task
datasets = steb.get_supported_datasets(task_name="clustering")

# Run evaluation
steb.evaluate(
    model,
    datasets=datasets,
    task_name="clustering",
    episode_sizes=[1],
)

Loading Models

get_model auto-detects the model type from the HuggingFace config:

# Encoder model (BERT, RoBERTa, etc.)
model = steb.get_model("roberta-base")

# Causal model (GPT-2, Llama, etc.)
model = steb.get_model("gpt2")

# LUAR model
model = steb.get_model("rrivera1849/LUAR-MUD")

Querying Datasets

# All registered datasets
all_datasets = steb.get_all_datasets()

# Datasets supporting a specific task
clustering_datasets = steb.get_supported_datasets(task_name="clustering")

Running Evaluations

The evaluate function runs a model on one or more datasets:

steb.evaluate(
    model,
    datasets=["corpus-of-diverse-styles"],
    episode_sizes=[1, 5],
    task_name="clustering",         # None to run all tasks
    n_episodes_per_class=None,      # None uses per-task default; or pass an int / "auto"
    batch_size=32,
    force_reload=False,
    progress_bar=True,
    output_folder="./results",
    seed=42,
)

When episode_sizes or n_episodes_per_class is None, the per-task defaults defined in steb.core.TASK_DEFAULTS are used.

Results are saved as JSON to:

{output_folder}/{dataset}/{model_basename}/{episode_size}_{n_episodes_per_class}/{task}/metrics.json

A per-run log is also written to {output_folder}/logs/.