Jev alternatives

cbjev

Laya’s faster, better-calibrated successor — with a GPL catch

Quick answer

cbjev is the upgrade path from Laya: same architecture family, one state encoding per call instead of one per question, 3.0 ms for a single question, and an option-reordering flip rate of 0.2% against Laya’s 7.8%. Two things to check first — it is GPL-3.0-or-later, and its English checkpoint is English, so non-English input needs the multilingual model via the built-in Router.

cbjev is fine-tuned from Laya and fixes its two structural weaknesses: it encodes the state once per call instead of once per question, and it cuts the rate at which reordering options changes the answer from Laya’s 7.8% to 0.2%. It also carries the most thorough honest-limits section in the ecosystem — and GPL-3.0, which rules it out for some products.

Train a decision model

A small non-autoregressive encoder with decision heads. No text generation at all — the classic classifier shape, rebuilt for natural-language options.

Search aliases

cbjevCBJevtomek7667/cbjev0010101010-1/cbjev

Key specs

Licence
GPL-3.0-or-later (checkpoints fine-tuned from Apache-2.0 Laya)
Author
tomek7667
Backbone
ModernBERT / mmBERT, fine-tuned from Laya
Size
~800 MB per checkpoint
Latency
3.0 ms for one question · 11.4 ms for ten questions over a 500-token document · 31.4 ms for thirty
Wire format
cbjev-serve exposes POST /v1/systemone
Install
pip install -e ".[serve]"

cbjev against Laya and Jev, on byte-identical cases

cbjev and Laya were measured side by side on one RTX 4090 over 15 English suites. The Jev column is third-party published figures — the project had no TypeSafe API access, and it says so.

cbjev against Laya and Jev, on byte-identical casescbjevJev
Mean accuracy, 15 English suites0.741 (Laya’s best checkpoint: 0.710)Not published for this suite set
typed-decisions0.783 (Laya: 0.768)0.727 (published)
Mean calibration error (ECE), lower is better0.117 (Laya: 0.125)0.246
Answer flips when options are reordered0.2% (Laya: 7.8%)13%
77 options in one question0.6200.870
Latency, ten questions over a 500-token document11.4 ms (Laya: 75.8 ms)236–276 ms over the network

When cbjev is the right choice

Choose cbjev when you have already decided Laya is the right shape but want it faster and more stable — one state encoding per call is the structural change that does it, and the 0.2% reordering flip rate matters a great deal in production, because it means a refactor that shuffles your option list will not silently change your decisions. Its latency advantage is largest exactly where it hurts most: thirty questions over a long document in 31.4 ms against Laya’s 172.4 ms.

When to walk away

Check the licence before anything else: GPL-3.0-or-later is a real constraint for closed products, and the checkpoints are fine-tuned from Apache-2.0 Laya, so downstream obligations deserve a lawyer’s read. Beyond that, cbjev trails Laya on four of the fifteen suites it measured, scores 0.620 with all 77 Banking77 intents in one question, and its English checkpoint genuinely is English — German prompt-injection samples were its worst misses, which is why the built-in Router sends non-Latin and non-English text to the multilingual model.

Adopting cbjev in three steps

01Resolve the licence question first — GPL-3.0-or-later in a closed product is a decision, not a detail.
02Load the English or multilingual checkpoint and route by language with the built-in Router so German, Japanese or Chinese input does not silently lose accuracy.
03Keep option lists at or below roughly thirty entries and turn on order voting if a stable answer matters more than the extra latency.
python / one encoding, many questions
import cbjev

agent = cbjev.load()   # English checkpoint; GPU if available

questions = {
    "department": {
        "type": "choice",
        "instructions": "Which team should handle this?",
        "criteria": {
            "billing": "invoices, payments, refunds",
            "technical": "bugs, outages",
            "sales": "pricing, contracts",
            "other": "everything else",
        },
    },
    "churn": {
        "type": "noul",
        "instructions": "Does the customer threaten to cancel?",
    },
}

state = {"subject": "Duplicate charge on invoice #4411",
         "body": "We were billed twice for March."}

res = agent.predict(state, questions)
print(res["answers"]["department"]["choice"])
print(res["answers"]["churn"]["noul"])   # P(true)

# Non-English input: route explicitly
from cbjev import Router
router = Router()
router.predict({"body": "Mir wurde zweimal abgebucht"}, questions)["routing"]
The state is encoded once per call, so adding questions costs far less than it does on Laya. Prefer thirty or fewer options per question.

cbjev questions people actually ask

Is cbjev a fork of Laya or a separate model?

It is fine-tuned from the Apache-2.0 Laya checkpoints, and it can still run Laya’s original weights in their own layout. The licence differs though: cbjev ships under GPL-3.0-or-later, inherited obligations included, which is a meaningful difference for commercial products.

How much faster is it, really?

On byte-identical cases over one RTX 4090 it was faster in all ten measured latency scenarios, from 1.5x on a single question over a long document to 6.9x on ten questions over a document. The single-question short-ticket case is 3.0 ms against Laya’s 5.4 ms; ten questions over 500 tokens is 11.4 ms against 75.8 ms.

Why does the 0.2% order-flip number matter?

Because option order is not a stable part of your code. Lists get sorted, merged or regenerated, and if reordering options changes the decision, a routine refactor silently changes production behaviour. cbjev drops that from Laya’s 7.8% to 0.2%, and offers optional order voting if you want it lower still.

What does cbjev admit it is bad at?

Plenty, and it publishes all of it: it trails Laya on four of fifteen suites, scores 0.620 with all 77 Banking77 intents in one question, is weak on German prompt-injection text, can let one question in a call influence another, and six of its fifteen suites had their train split in the training mix. It also notes the training mix was iterated with the benchmark suites in view.

Sources

Every comparison number on this page is a third-party published figure or a read of a public repository — not a benchmark we ran. We have not tested TypeSafe Jev itself, and its customer agreement forbids using its outputs to build similar products.