← Blog

JEV on InferAll: typed decisions instead of parsing JSON out of a chat model

Call TypeSafe's JEV through InferAll with the same ifu_ key. Send a state and typed questions, get typed answers with calibrated confidence. $0.42 per million input tokens, output free, on POST /v1/systemone.

InferAll Team

3 min read
JEVTypeSafeSystem OneclassificationconfidenceAI gatewaydeveloper tools

Most of the time you do not want prose. You want a decision your code can act on: route this ticket, flag this for review, score this passage. The usual way to get one is to ask a chat model for JSON, then parse it, then handle the times it was not JSON.

JEV skips that. You send a piece of state and a map of typed questions. You get back typed answers with a calibrated confidence, and there is nothing to parse.

It is live on InferAll now, on its own endpoint, with the same ifu_ key as everything else.

One call, three kinds of question

curl https://api.inferall.ai/v1/systemone \
  -H "Authorization: Bearer ifu_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "state": "Ticket: charged twice, no reply in 4 days.",
    "model": "jev-latest",
    "questions": {
      "urgent":   { "type": "noul",   "instructions": "Needs a human today?",
                    "criteria": { "true": "money at stake", "false": "can wait" } },
      "route":    { "type": "choice", "instructions": "Route it",
                    "criteria": { "billing": "payments", "technical": "API", "other": "else" } },
      "severity": { "type": "score",  "instructions": "How severe?",
                    "criteria": ["none","minor","noticeable","serious","critical"] }
    }
  }'

That is a real request. Here is its real answer:

{
  "model": "jev-1.13.0",
  "answers": {
    "urgent": { "type": "noul", "noul": 0.86 },
    "route":  { "type": "choice", "choice": "billing", "confidence": 1.0,
                "probabilities": { "billing": 1.0, "technical": 0.0, "other": 0.0 } },
    "severity": { "type": "score", "score": 2.83, "confidence": 0.84,
                  "legend": { "0":"none","1":"minor","2":"noticeable","3":"serious","4":"critical" },
                  "probabilities": { "0":0.0,"1":0.01,"2":0.17,"3":0.81,"4":0.01 } }
  },
  "usage": { "input_tokens": 408, "output_tokens": 68 }
}

Note severity: 2.83. Not "serious", not a bucket you then have to interpret. A number between noticeable and serious, leaning serious, with the distribution that produced it.

The three types

noul returns a single number from 0 to 1: how true the statement is of the state.

choice picks one of up to 255 named options and returns the full probability distribution alongside a confidence.

score places the state on a scale of 2 to 10 ordered levels and returns a continuous value plus the legend it scored against.

Confidence is the point

Every choice and score answer carries a calibrated confidence. That is not a restatement of the top probability, and it is the reason to prefer this over asking a chat model for JSON.

It lets you write the rule most teams actually want:

ans = resp["answers"]["route"]
if ans["confidence"] > 0.9:
    auto_route(ticket, ans["choice"])
else:
    send_to_human(ticket)

Act automatically above a threshold. Send the rest to a person. You cannot write that honestly against a model that always sounds certain.

Pricing

$0.42 per million input tokens. Output tokens are free. The three-question example above used 408 input tokens, which is about $0.00017.

JEV is a paid model, so the no-card trial does not cover it. Add a card at inferall.ai/billing and it works with the key you already have.

Models

jev-1.13.0 is the current version. jev-latest and jev-preview are aliases that resolve to it, and the response always names the exact version that answered, so pin jev-1.13.0 if you need reproducibility. Context is 64k tokens per request, with 32k available for state plus the longest single question. Text only.

One thing worth knowing

JEV is deliberately absent from GET /v1/models. That list is what OpenAI-compatible clients walk to discover chat models, and it carries no modality field, so listing JEV there would hand every such client an id that fails on the only endpoint it knows how to call. Ask for it by name on /v1/systemone instead.

Full reference: inferall.ai/docs/systemone.

Try it with one key: create a free account and your first 25 calls on open models are free, no card needed.

Start building free