Laya or Jev? We Installed the Open-Source Typed Decision Model on Our Own Server and Tested It in Turkish

calendar_month September 21, 2026 schedule 14 min read

In two weeks typed decision models went from a category to a race. First came the closed-source Jev, then Laya arrived claiming to do the same job under an Apache 2.0 licence with open weights. Most of the comparisons circulating online are a single chart: a local model's milliseconds placed next to a cloud model's network round trip.

That comparison tells us nothing. Local being faster than the internet is the expected result. The three questions we actually had were different: does it work in Turkish? does it really run on our own server? and which one for which job?

We installed both and measured them against our own labelled data. We found something we did not expect: changing the format of the question moved the same model's accuracy on the same data from 8/20 to 20/20. That finding matters more than either model, because the same trap is waiting for anyone using typed decisions.

Two Models, the Difference in One Sentence

Both do the same thing: they produce no text, they return a typed, probabilistic answer to the question you ask. Three question types are shared — noul (yes/no probability), choice (option plus confidence), score (a score across labelled levels).

LayaJev
LicenceApache 2.0 (code + weights)Closed, via API
Size421M / 322M parametersNot disclosed
Runs onYour own hardwareThe provider's cloud
ArchitectureEncoder based, single passNot disclosed
LanguageMultilingual checkpoint covers 100+English first (its own docs warn)

Laya ships three separate checkpoints: a general English one, a multilingual one, and one trained specifically for typed decisions. That split brings the first trap with it — we will get there shortly.

Installation: 16 Cores, 1.2 GB, Zero Surprises

We assumed installing Laya on a shared web server would be impossible. We were wrong. The install needs no root privileges; the Python virtual environment goes into user space.

The real numbers from our own server:

ItemValue
Install size (including CPU build of PyTorch)1.2 GB
Model load time17 seconds (single checkpoint)
All three checkpoints (preload=True)5.3 GB of memory
Site response time during install0.49 s (unchanged)

Worth noting: the ~1 GB mentioned in the repository is for a single checkpoint. preload=True loads all three and holds 5.3 GB resident. If you run it as a service, load only the checkpoint you actually serve.

Latency measured on CPU (no GPU, 16 cores):

CheckpointTime per question
Multilingual (322M)52 ms
Typed decisions (421M)444 ms

The First Trap: The Router Looks at Language, Not Task

Laya's Router class is presented as sending "each request to the right checkpoint". We ran our first measurement with the defaults and the results were dreadful: on a 446-model classification task it gave 399 of them the same label.

The reason is simple and documented, but easy to miss: by default the router looks only at language, not at the task (auto_task_detection defaults to off). So when you send English text it goes to the general English checkpoint rather than the one trained for typed decisions.

The fix is to name the checkpoint explicitly:

from laya import Router

router = Router(default="multilingual", max_loaded=1)
router.load("multilingual")

# Name the checkpoint EXPLICITLY
result = router.predict(text, questions, model="multilingual")

This is where we caught our own mistake mid-measurement, and it taught the same lesson once more: when a model gives you a bad result, first check that you are using it correctly.

The Real Finding: Question Format Moved Accuracy from 8/20 to 20/20

We tested with our actual job: the question "is this customer asking for a human?" on support tickets. We built 20 Turkish support messages, five of which clearly requested a human and fifteen of which did not. We labelled them by hand.

Same model, same 20 messages, only the way the question is written differs:

Question formatCorrect
Turkish instruction + criteria defined8 / 20
Turkish instruction, no criteria14 / 20
English instruction, no criteria20 / 20

That is not a marginal improvement; it is the difference between an unusable result and a perfect one. And the 20/20 in the last row holds at every threshold between 0.5 and 0.9, because the probabilities separate cleanly: the five messages requesting a human land between 0.976 and 0.996, the other fifteen between 0.000 and 0.166.

Two practical rules follow:

  • Write the instruction in English even when your text is Turkish. The model is multilingual, but it is markedly more accurate when it reads the instruction in English.
  • Leave criteria out on binary questions. Counter-intuitive, but the measurement is clear: adding criteria reduced accuracy. If the instruction itself is clear enough the model uses it; extra criteria add noise.

The failure pattern was instructive too. In the wrong format the model gave "Thanks, the issue is resolved" a human-request probability of 0.88, and a pure technical bug report 0.97. In the right format both dropped below 0.04.

Laya and Jev Side by Side

The same 20 Turkish messages, each model asked in its own best format:

MeasurementLaya (multilingual)Jev
Binary decision (noul) accuracy20 / 2020 / 20
Category (choice) accuracy9 / 2013 / 20
Dissatisfaction (score) mean error0.91 / 30.21 / 3
Latency per question52 ms1,059 ms
Runs onOur own serverProvider cloud

The table tells a clear story: on binary decisions both are perfect, but Laya does it 20x faster and on your own hardware. On the other two question types Jev is distinctly better.

The gap on the score question is especially sharp. Whatever the message, Laya squeezed the score between 1.06 and 1.96: "Thanks, the issue is resolved" got 1.29, "This is a disgrace!" got 1.81. A 0.5 gap is not enough to set a threshold on. Jev measured the same test with a 0.21 error; it genuinely discriminates.

What Laya Cannot Do: Know What the Text Does Not Say

We tried a second real task: reading the descriptions of 446 models in our catalogue and answering "should this model be listed in a corporate catalogue?". We had a hand-built label set of 15 models.

LayaJev
Caught of the 15 labelledno separation14 / 15
False alarms across 431 normal models0

On this task Laya could not separate the risky group (mean 1.77) from the normal one (mean 1.73). We do not count that against Laya, because the task is unfair: whether a model is positioned for adult content usually is not written in its description; it lives in the publisher's reputation. A 421-million-parameter encoder does not carry that world knowledge.

The right distinction: Laya classifies the text itself, Jev can also decide using knowledge beyond the text. Intent, sentiment, category and urgency belong to the first group; judgements requiring world knowledge belong to the second.

Cost: Free Is Not Always Cheap

Running Laya has no token cost — but it is not free either. The real cost lines are:

  • Memory. ~1.7 GB for a single checkpoint, 5.3 GB for all three. That memory stays allocated.
  • Cold start. 17 seconds to load. Which means you need a process that keeps the model resident, and you need to keep that process alive.
  • Operations. If the process dies the endpoint returns 503. We wrote a watchdog that checks every minute; when we killed the process on purpose it came back in 16.7 seconds.

So "open source equals free" holds only at small volumes. If you make a few hundred decisions a day the cloud model is cheaper. At tens of thousands a day the local model pulls clearly ahead.

Current catalogue prices:

ModelInput (1M tokens)OutputSupported types
convai/laya-multilingual$0.042Freenoul
typesafe/jev$0.063Freenoul, choice, score

Which One, When

The split we ended up using ourselves:

JobChoiceWhy
Yes/no gate, high volumeLaya20/20 accuracy, 52 ms, no token cost
A decision in a flow where a user is waitingLayaNo network round trip; even the slowest request stays under half a second
Multi-option classificationJev13/20 against 9/20 in our measurement
Measuring degree or severityJevLaya's score head does not separate
Judgement needing knowledge beyond the textJevA small encoder has no world knowledge
Data must not leave your serverLayaThe request never goes out

In practice the two are not mutually exclusive. The pattern we built: the cheap, fast binary gate runs first, and anything ambiguous or needing a degree goes to a second stage.

Using Them on Onysoft

Both models are in the catalogue and work through the same endpoint. You do not need a separate provider contract or a server of your own:

curl https://api.onysoft.com/v1/decisions \
  -H "Authorization: Bearer sk-ony-YOUR-KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "convai/laya-multilingual",
    "state": "I want to speak to a real person, not a bot.",
    "questions": {
      "wants_human": {
        "type": "noul",
        "instructions": "Does the user ask to talk to a human agent instead of the bot?"
      }
    }
  }'

The response is not text you have to parse, it is a number you can use directly:

{
  "success": true,
  "data": {
    "model": "convai/laya-multilingual",
    "answers": {
      "wants_human": { "type": "noul", "noul": 0.9626, "confidence": 0.9626 }
    },
    "usage": { "input_tokens": 65, "output_tokens": 0 },
    "latency_ms": 52
  }
}

You can ask up to 32 questions in one request; all are answered in a single pass. Only input tokens are billed. See the typed decisions API documentation for details.

Summary

Measuring both models against our own data, this is how it came out:

  • Both score 20/20 on binary decisions. The difference is not accuracy; Laya does it 20x faster and on your own hardware.
  • Jev is clearly ahead on choice and score questions. Laya's score head did not separate at all in our test.
  • The most important finding is not about either model: writing the instruction in English and leaving criteria out moved the same model from 8/20 to 20/20 on Turkish text.
  • Installation is lighter than assumed (1.2 GB, no root needed) but memory is heavier than assumed (5.3 GB for three checkpoints).
  • A small encoder cannot know what the text does not say. Judgements needing world knowledge still require a large model.

Other articles in this series: what typed decision models are and typed decision model or chat model.

Browse the catalogue on /models, or create a free account to try it.

Share this article

Share on X LinkedIn WhatsApp

Ready to build?

Access 754+ AI models through a single API. Pay as you go — no subscription.

Create Free Account Browse Models

← All posts

Want help finding the right model?