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.
POST /v1/decisions: the OpenAI decisions shape.POST /v1/systemone: the System One shape.
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
| Type | You provide | You get |
|---|---|---|
Yes / no (predicate) | Instructions | One probability |
Single choice (choice) | Instructions and a list of options | The chosen option and a probability per option |
Graded score (score) | Instructions and ordered levels | A 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.