Decision models

A decision model does not write text. You give it one input and a set of typed questions, and it returns a probability for every answer in a single call. That makes it a fit for classification, routing, moderation and scoring, where you want a number you can threshold rather than prose you have to parse.

When to use one

  • Routing and triage. Is this ticket urgent? Which team owns it?
  • Moderation and policy checks. Does this message break rule 4?
  • Scoring. How relevant is this document to the query, on a graded scale?
  • Many questions about one input. All of them are answered in one request.

If you need an explanation or generated content, use a chat model instead.

Make a request

Decision models have their own endpoints. Use whichever shape you prefer; every decision model works on both.

curl https://api.crossmodel.ai/v1/decisions \
  -H "Authorization: Bearer $CROSSMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "typesafe/jev",
    "input": "Help! My payouts have been failing for 3 days.",
    "questions": [
      { "type": "predicate", "name": "urgent", "instructions": "Does this message convey urgency?" }
    ]
  }'
{
  "model": "typesafe/jev",
  "answers": [{ "type": "predicate", "name": "urgent", "probability": 0.97 }],
  "usage": { "input_tokens": 41, "output_tokens": 0, "total_tokens": 41 }
}

The three question types

TypeYou provideYou get
Yes / no (predicate)InstructionsOne probability
Single choice (choice)Instructions and a list of optionsThe chosen option and a probability per option
Graded score (score)Instructions and ordered levelsA score (the expected level, starting at 0) and a probability per level

Use the probabilities

A probability is more useful than a yes or no. Pick thresholds that match the cost of each mistake:

p = answers[0]["probability"]
if p >= 0.9:
    escalate()
elif p >= 0.5:
    queue_for_review()

For a choice, confidence tells you how sure the model is of its pick. A low confidence is a good signal to fall back to a human or to a larger model.

Find decision models

GET /v1/models lists chat models by default, so existing chat clients are unaffected. Ask for decision models explicitly:

curl "https://api.crossmodel.ai/v1/models?kind=decision" \
  -H "Authorization: Bearer $CROSSMODEL_API_KEY"

Things to know

  • Billing is input-only. The input, the question text and the option descriptions all count. There is no output price.
  • No streaming. A decision is one complete response.
  • Images work on models whose input modalities include image.
  • Long inputs. Some models read long inputs less reliably than short ones. Each model's page says what we measured; keep the evidence a question depends on close to the question when you can.
  • Unknown fields are rejected with 400 unknown_parameter, on both endpoints.