convaiinnovations/laya-typed-decisions

Model

Laya Typed-Decisions

53

7 commits

2 linked in READMEs

updated Sep 19, 2026

See the code
agent-observability
calibrated-decisions
classification
commercial-use
customer-service
endpoints_compatible
invoice-processing
laya
rlcd
safetensors
security-incidents
system-one
text-classification
transformers
typed-decisions

README

Laya Typed-Decisions

Non-autoregressive System 1 decision model, fine-tuned on the typed-decisions workflows: agent-trace observability, customer service, invoice processing and security incidents.

Part of the Laya family.

checkpointencoderparamscontextuse it for
convaiinnovations/layaModernBERT-large421M512English, general
convaiinnovations/laya-multilingualmmBERT-base322M1024100+ languages
convaiinnovations/laya-typed-decisions (this repo)ModernBERT-large421M1024these four workflows

Benchmark

400 test cases, 2,000 decisions, measured on the official test split.

modelaccuracysoft accBrierECEscore MAE
this checkpoint0.7660.4710.0620.2130.242
TypeSafe Jev 1.13.0 (published)0.7270.5800.1480.1440.391
teacher self-agreement ceiling0.735
ModernBERT-base specialist (published)0.646
per-question majority class0.461
random guess0.318
laya (not fine-tuned)0.3620.3320.3160.1750.694
laya-multilingual (not fine-tuned)0.3420.3260.4390.2850.687

+3.9 points over Jev's published 0.727, above the 0.735 teacher ceiling, with 2.4x better Brier and 1.6x better score MAE.

Jev figures are third-party published, not measured here — there is no TypeSafe API access in this project, and sample sizes and prompts differ. Treat the comparison as indicative.

By workflow

workflowaccuracy
invoice processing0.804
security incidents0.766
customer service0.764
agent-trace observability0.730

By primitive

typeaccuracyECEn
noul0.8570.192600
choice0.7330.255600
score0.7230.199800

Quickstart

pip install laya
import laya

agent = laya.load("convaiinnovations/laya-typed-decisions")
result = agent.predict(state, questions)

Or route to it explicitly:

from laya import Router

router = Router()
router.predict(state, questions, model="typed-decisions")

Router will not select this checkpoint automatically unless you construct it with auto_task_detection=True — it is specialised to four synthetic workflows and should not be a silent default.

If this checkpoint is on a hot path, keep it resident rather than loading it per request:

router = Router()
router.preload(["typed-decisions"])          # or router.attach("typed-decisions", agent)

preload fetches and builds the checkpoints you name once; attach registers an Agent you already hold, so nothing is loaded twice.

If laya.load() hangs: transformers probes for TensorFlow at import, and when TF is installed its abseil runtime can deadlock model construction. Run with USE_TF=0.

Training

Fine-tuned from convaiinnovations/laya on the benchmark's 1,200-case training split (6,000 decisions) with RLCD: the policy reports a distribution, exploration adds zero-mean Gaussian noise to the logits, and the reward is a strictly proper scoring rule (log + spherical, plus ranked probability score for ordinal questions), so expected reward is maximised only by honest probabilities. Updates are REINFORCE with a group-mean baseline, alongside soft cross-entropy against the teacher's distributions.

Reproduce it: laya_finetune_typed_decisions_2xT4_kaggle.ipynb — about 4–5 hours on Kaggle's free 2xT4.

Limits

  • This is a specialist. It was fine-tuned on four specific synthetic workflows. Expect it to behave like the base laya checkpoint, or worse, on anything else.
  • Soft accuracy trails Jev (0.471 vs 0.580): its argmax is better, but its probability distributions match the teacher less well.
  • Still over-confident (ECE 0.213 vs Jev's 0.144). Its temperature_by_options was inherited from the base checkpoint and overrides the per-type temperatures fitted for this model — refit on your own held-out data before relying on the probabilities.
  • English only. Use laya-multilingual for other languages.
  • Keep choice questions under ~20 options. Options share a fixed 256-token head budget, so a large label space leaves few tokens per label and accuracy falls off sharply.

Apache 2.0 · Convai Innovations

Contributors

convaiinnovations/laya-typed-decisions

Model

Laya Typed-Decisions

53

7 commits

2 linked in READMEs

updated Sep 19, 2026

See the code
agent-observability
calibrated-decisions
classification
commercial-use
customer-service
endpoints_compatible
invoice-processing
laya
rlcd
safetensors
security-incidents
system-one
text-classification
transformers
typed-decisions

README

Laya Typed-Decisions

Non-autoregressive System 1 decision model, fine-tuned on the typed-decisions workflows: agent-trace observability, customer service, invoice processing and security incidents.

Part of the Laya family.

checkpointencoderparamscontextuse it for
convaiinnovations/layaModernBERT-large421M512English, general
convaiinnovations/laya-multilingualmmBERT-base322M1024100+ languages
convaiinnovations/laya-typed-decisions (this repo)ModernBERT-large421M1024these four workflows

Benchmark

400 test cases, 2,000 decisions, measured on the official test split.

modelaccuracysoft accBrierECEscore MAE
this checkpoint0.7660.4710.0620.2130.242
TypeSafe Jev 1.13.0 (published)0.7270.5800.1480.1440.391
teacher self-agreement ceiling0.735
ModernBERT-base specialist (published)0.646
per-question majority class0.461
random guess0.318
laya (not fine-tuned)0.3620.3320.3160.1750.694
laya-multilingual (not fine-tuned)0.3420.3260.4390.2850.687

+3.9 points over Jev's published 0.727, above the 0.735 teacher ceiling, with 2.4x better Brier and 1.6x better score MAE.

Jev figures are third-party published, not measured here — there is no TypeSafe API access in this project, and sample sizes and prompts differ. Treat the comparison as indicative.

By workflow

workflowaccuracy
invoice processing0.804
security incidents0.766
customer service0.764
agent-trace observability0.730

By primitive

typeaccuracyECEn
noul0.8570.192600
choice0.7330.255600
score0.7230.199800

Quickstart

pip install laya
import laya

agent = laya.load("convaiinnovations/laya-typed-decisions")
result = agent.predict(state, questions)

Or route to it explicitly:

from laya import Router

router = Router()
router.predict(state, questions, model="typed-decisions")

Router will not select this checkpoint automatically unless you construct it with auto_task_detection=True — it is specialised to four synthetic workflows and should not be a silent default.

If this checkpoint is on a hot path, keep it resident rather than loading it per request:

router = Router()
router.preload(["typed-decisions"])          # or router.attach("typed-decisions", agent)

preload fetches and builds the checkpoints you name once; attach registers an Agent you already hold, so nothing is loaded twice.

If laya.load() hangs: transformers probes for TensorFlow at import, and when TF is installed its abseil runtime can deadlock model construction. Run with USE_TF=0.

Training

Fine-tuned from convaiinnovations/laya on the benchmark's 1,200-case training split (6,000 decisions) with RLCD: the policy reports a distribution, exploration adds zero-mean Gaussian noise to the logits, and the reward is a strictly proper scoring rule (log + spherical, plus ranked probability score for ordinal questions), so expected reward is maximised only by honest probabilities. Updates are REINFORCE with a group-mean baseline, alongside soft cross-entropy against the teacher's distributions.

Reproduce it: laya_finetune_typed_decisions_2xT4_kaggle.ipynb — about 4–5 hours on Kaggle's free 2xT4.

Limits

  • This is a specialist. It was fine-tuned on four specific synthetic workflows. Expect it to behave like the base laya checkpoint, or worse, on anything else.
  • Soft accuracy trails Jev (0.471 vs 0.580): its argmax is better, but its probability distributions match the teacher less well.
  • Still over-confident (ECE 0.213 vs Jev's 0.144). Its temperature_by_options was inherited from the base checkpoint and overrides the per-type temperatures fitted for this model — refit on your own held-out data before relying on the probabilities.
  • English only. Use laya-multilingual for other languages.
  • Keep choice questions under ~20 options. Options share a fixed 256-token head budget, so a large label space leaves few tokens per label and accuracy falls off sharply.

Apache 2.0 · Convai Innovations

Contributors