Saltar para o conteúdo principal
Beta · sem calibração
StrikeStrike

Probabilities and confidence

How to read strike-1 probabilities, confidence, confidence_band, and meta.

Every strike-1 answer includes a probability on every option, read directly from the model (prob_source is "native"). Probabilities are uncalibrated in beta. The playground marks them Uncalibrated. Use them to compare options and route work, not as forecasts.

Reading the distribution

Python
import strikeflow as strike

result = strike.decide(
    "Which team?",
    ["billing", "tech", "sales"],
    context="Please refund the duplicate charge on my card.",
)

for option, prob in result.probabilities.items():
    print(option, round(prob, 4))

assert abs(sum(result.probabilities.values()) - 1.0) < 1e-5

Use probabilities to:

  • Route only when the margin is clear.
  • Send ambiguous cases to a human or a general LLM fallback.
  • Log decision quality in traces.

Confidence

confidence is the top answer probability: the largest value in probabilities (for yes/no, the larger of noul and 1 - noul). It ranges from 0 to 1 and is uncalibrated in beta. If the API omits it, the SDK sets confidence = probabilities[answer], which is the same value.

separation is optional and shows how far the top answer stands above an even split: (n × p_max - 1) / (n - 1), where n is the number of options. It ranges from 0 (all options equal) to 1 (one option has all the probability). It has no calibration meaning, so do not use it as a probability.

Python
if result.confidence < 0.7:
    # your fallback: ask a human, call a general LLM, or re-prompt
    ...

confidence_band

confidence_band is reserved and is currently always null. Bands will be enabled only after a measured reliability check. Until then, route on confidence.

The strikeflow SDK maps the HTTP response into DecisionResult; inspect result.raw if you need confidence_band or meta from the API.

meta

The top-level meta object on a systemone response includes latency, region, and related fields. Use it for observability, not as a user-facing accuracy score.

low_confidence flag

Pass min_confidence on decide or configure the engine once:

Python
import strikeflow as strike

strike.configure(min_confidence=0.7)
result = strike.decide("Escalate?", "yes_no", context="vague message: hmm")
if result.low_confidence:
    ...

The flag is computed client-side: (result.confidence or 0) < min_confidence.

abstain_below compares its threshold with the top answer probability (confidence), never with separation.

Tool results

strike_decision_tool().handle(...) returns a JSON dict (via DecisionResult.to_dict()) with rounded probabilities, confidence, low_confidence, and trace_id when tracing is active.

Probabilities and confidence: Strike docs