Skip to content

DocsQuestions and answers

3 min read · updated

Rate on a scale

Rate text against an ordered rubric. Understand the fractional score and read the distribution across levels before choosing an application action.

Use a score question to rate impact, urgency or quality against levels you define. With a decisio server running, paste this request into a terminal:

curl --fail-with-body -sS --max-time 60 http://127.0.0.1:8000/v1/systemone \
-H 'Content-Type: application/json' \
-d '{
"state": "My card keeps getting declined when I renew.",
"questions": {
"impact": {
"type": "score",
"instructions": "Rate the business impact using only the reported facts.",
"criteria": [
"No function impaired",
"One user impaired, with a workaround",
"One user blocked from a core function",
"Many users blocked from a core function"
]
}
}
}'

Run against the CPU stand-in at v0.46.0 on 2026-11-13: the answer is the stand-in's, not a model-quality measurement.

Download the request as JSON to reuse it in your own client. This example uses the decisio endpoint; Ollama’s guide gives its port and required model name.

Unlike a choice’s named options, a score’s criteria is a list, ordered from lowest to highest. The first level has index 0.

LevelDescription in this example
0No function impaired
1One user impaired, with a workaround
2One user blocked from a core function
3Many users blocked from a core function

Describe observable differences between neighboring levels. Here the question asks for reported facts, so a ticket should not imply a whole-team outage without evidence.

Read answers.impact.score and answers.impact.probabilities from the JSON response. These illustrative fields use chosen probabilities, rather than a measured model result:

{
"type": "score",
"score": 1.7,
"legend": {
"0": "No function impaired",
"1": "One user impaired, with a workaround",
"2": "One user blocked from a core function",
"3": "Many users blocked from a core function"
},
"probabilities": {"0": 0.1, "1": 0.2, "2": 0.6, "3": 0.1}
}

A shape to fill in, not a command to run.

score is the probability-weighted mean of the level indices: 0 × 0.1 + 1 × 0.2 + 2 × 0.6 + 3 × 0.1 = 1.7. It can be fractional, even though your rubric contains whole-number levels. The probability keys are strings such as "2", and legend maps each index back to its description.

Figure · An ordered score

The mean moves between rubric levels as the distribution changes.

Mean level 1.70. The likeliest level is 2, with probability 0.60.

0. No function impaired
0.10
1. One user impaired, with a workaround
0.20
2. One user blocked from a core function
0.60
3. Many users blocked from a core function
0.10

0 × 0.10 + 1 × 0.20 + 2 × 0.60 + 3 × 0.10 = 1.70

Illustration: chosen probabilities, using the tutorial request. Your model returns its own values.

Explore the request and answer fields

Figure · Illustrative field map

Find the field your code sends or reads.

Request

{
  "state": "My card keeps getting declined when I renew.",
  "questions": {
    "impact": {
      "type": "score",
      "instructions": "Rate the business impact using only the reported facts.",
      "criteria": [
        "No function impaired",
        "One user impaired, with a workaround",
        "One user blocked from a core function",
        "Many users blocked from a core function"
      ]
    }
  }
}

Answer fields

{
  "answers": {
    "impact": {
      "type": "score",
      "score": 1.7,
      "legend": {
        "0": "No function impaired",
        "1": "One user impaired, with a workaround",
        "2": "One user blocked from a core function",
        "3": "Many users blocked from a core function"
      },
      "probabilities": {
        "0": 0.1,
        "1": 0.2,
        "2": 0.6,
        "3": 0.1
      }
    }
  }
}

The text, question, options and typed answer are separate parts of one decision.

Read all field explanations
Text
state is the text to ask about. Keep it separate from the question.
Question
questions names each judgment. Its type and instructions tell the server what to answer.
Options
criteria gives named options for choice or ordered levels for score. A noul question already has yes and no, and can optionally describe true and false.
Answer
answers uses your question names. Read the typed value and its probabilities before your application acts.

Illustration: chosen probabilities, using the tutorial request. Your model returns its own values.

If your code needs the likeliest level, select the key with the largest value in probabilities; here that is level 2. If it needs an average rating for sorting, use score. Read the distribution before triggering an action: different mixtures of low and high levels can have the same mean.

Check the HTTP status before reading the answer, and keep a review or service-failure path in the application. For a category without an order, use a choice question.

  • Keep the rubric stable when comparing scores over time; adding a level changes what the indices mean.
  • Scores are not certified. Use choice or yes/no tasks when you need certified answers.
  • The mean level is not a probability; use probabilities to inspect uncertainty over the levels.