A small, calibrated, non-generative decision model: it reads a state and a set of options described in text and returns a calibrated probability for each — in one forward pass, no text generation. Default model for certo.
| eval | KL(r‖p) ↓ | TV ↓ | acc | ECE ↓ |
|---|---|---|---|---|
| unseen options (new prototypes + names + wording) | 0.008 | 0.016 | 0.844 | 0.004 |
| more options (8–10 presented; trained on 3–6) | 0.015 | 0.026 | 0.760 | 0.003 |
| option-order invariance | 0.00 (exact) |
It generalizes to options, names, wording, and counts it never trained on, with tight calibration.
from huggingface_hub import snapshot_download
from infer import DecisionModel # from the certo repo
m = DecisionModel.load(snapshot_download("altslate/certo-decision-model"))
r = m.decide(
state="We measured salinity as ember, tempo as gale, density as gale.",
options=[{"id": "A", "description": "typically salinity ember, tempo gale, density gale"},
{"id": "B", "description": "typically salinity dawn, tempo frost, density brine"}],
abstain_below=0.6)
r["probs"] # calibrated probability per option
Code + technical report: https://github.com/AltSlate-Labs/certo · https://altslate-labs.github.io/certo/report.html
Inspired by Jev / System-1 decision models. Independent, not affiliated with TypeSafe. MIT.
3 commits
A small, calibrated, non-generative decision model: it reads a state and a set of options described in text and returns a calibrated probability for each — in one forward pass, no text generation. Default model for certo.
| eval | KL(r‖p) ↓ | TV ↓ | acc | ECE ↓ |
|---|---|---|---|---|
| unseen options (new prototypes + names + wording) | 0.008 | 0.016 | 0.844 | 0.004 |
| more options (8–10 presented; trained on 3–6) | 0.015 | 0.026 | 0.760 | 0.003 |
| option-order invariance | 0.00 (exact) |
It generalizes to options, names, wording, and counts it never trained on, with tight calibration.
from huggingface_hub import snapshot_download
from infer import DecisionModel # from the certo repo
m = DecisionModel.load(snapshot_download("altslate/certo-decision-model"))
r = m.decide(
state="We measured salinity as ember, tempo as gale, density as gale.",
options=[{"id": "A", "description": "typically salinity ember, tempo gale, density gale"},
{"id": "B", "description": "typically salinity dawn, tempo frost, density brine"}],
abstain_below=0.6)
r["probs"] # calibrated probability per option
Code + technical report: https://github.com/AltSlate-Labs/certo · https://altslate-labs.github.io/certo/report.html
Inspired by Jev / System-1 decision models. Independent, not affiliated with TypeSafe. MIT.
3 commits