JevCode / Site directory / Ecosystem cases

JevCode docs · the model is clavue-jev

LLM router: choose the handler with a typed decision

Ways to route each request to a model or a person — one model for everything, keyword rules, an embedding router, a chat model that names a route, and a clavue-jev choice plus a confidence question — and what you can branch on.

llm-routermodel-routingroutingcomparison
One request splitting into three handler paths, with one path lit

The decision in front of the model

An LLM router does not answer the user. It picks the handler that does. The same inbox holds a typo fix, a design question, and a message that should go to a person. Sending all three through the largest model works. The typo fix pays the large model’s price.

People search this job as LLM router and model routing. The thing you are choosing is a closed set you already named: a small model, a large model, a lookup, a person. That choice is a value your program can branch on.

Five ways the route gets chosen

Approach How the route is chosen What can go wrong What you pay
One model for every request There is no router Small jobs pay the large model’s price That model, on every request
Keyword or regex rules A word list maps onto a handler A paraphrase misses the list Nothing at request time
Embedding router The nearest route description wins The descriptions drift away from the handlers An embedding call, plus the index
A chat model names the route You ask it to reply with a label The label can sit outside your set, or arrive wrapped in prose That model’s input and its output
Typed choice (clavue-jev) One choice over the handlers you listed, plus a confidence question It can only return a handler you listed Input tokens after a successful call. Output is free

Keyword rules are enough when the words do not move. An embedding router fits when you already keep route descriptions. A chat model fits when the route itself has to be a sentence. A typed choice fits when the route is one of a few handlers and the next line of code has to read it.

The request this site serves

POST https://api.jevcode.ai/v1/judge
Authorization: Bearer jev_...
Content-Type: application/json
{
  "state": "Rename this function and add a test. Do not change behavior.",
  "questions": {
    "route": {
      "type": "choice",
      "instructions": "Which handler should run this request?",
      "options": ["small_model", "large_model", "human"]
    },
    "sure": {
      "type": "confidence",
      "instructions": "How sure is that routing judgment?"
    }
  }
}

state is text, 8 to 4000 characters. questions holds at most six. Keys start with a lowercase letter. A choice may send options or a criteria map. This server folds options into criteria before the model sees them.

You are billed on input tokens after a successful call. Output is free. The numbers are on the pricing page.

A response names the model and returns each answer under the same key:

{
  "model": "clavue-jev",
  "answers": {
    "route": { "choice": "small_model" },
    "sure": { "noul": 0.78 }
  }
}

route.choice is one of the options you sent. sure.noul is a float from 0 to 1, and it comes from the confidence question. This API does not hide a confidence inside the choice. The 0.78 above shows the shape of that field. It is not a measured accuracy, and this site does not publish a cutoff.

Branch on the two fields. The cutoff is yours:

route = body["answers"]["route"]["choice"]
sure = body["answers"]["sure"]["noul"]
cutoff = 0.8  # replace this with a cutoff you measured on your own traffic

if sure < cutoff or route == "human":
    hand_to_human(state)
elif route == "small_model":
    call_small(state)
else:
    call_large(state)

A wrong route into a tool that spends money wants a higher cutoff than a wrong route into a log line. Read a batch of your own traffic on compare or try before you freeze the number. The reasoning is on the confidence page.

The same request can hold four more questions. A route, a confidence question, and a few yes/no checks still fit under the cap of six. Fan-out is that shape.

What the router does not do

It does not write the reply. The handler you picked writes it.

It does not invent a handler. If the right one is missing from options, the choice still returns one of the names you sent. Add the handler, or add a noul that asks whether any listed handler fits, and send the miss to a person.

Open-ended writing stays on a text model. The router decides which text model runs, or whether a person should see the request first. When the text comes back, a separate call can ask whether it is safe to act on. That second call is a guardrail, not part of the route.

Where this shape already shows up

The use-case map groups public projects that pick a model with a Jev choice: coding-task routers, a LiteLLM-based router, a per-request router for a coding agent, and a local proxy that picks a model and an effort level. The shared shape is one choice in front of the expensive call. This page does not add scores for those projects.

Intent routing is the same decision aimed at a customer-service queue instead of a model.

Getting started

  • API — POST /v1/judge, the request and the response
  • Try one — the anonymous path, no key
  • System One — state, questions, and the model name on the response
  • Confidence — the second question, and who sets the cutoff
  • Pricing — input tokens, output free

Keep going on this site

Try, docs, cases, and pricing link to each other. The next page is on this site.

Cases

Use clavue-jev

Docs

More on this site