Docs · Référence
Calibration et abstention
Une décision n'est utile que si sa confiance est honnête. Jevis corrige les probabilités dans la gateway, mesure l'écart sur les outcomes et propose une correction.
Principe
Les backends renvoient des probabilités brutes. La calibration est appliquée dans la gateway, une seule fois, de la même façon pour tous les backends : les résultats restent comparables d'un backend à l'autre.
1,0 (identité) et le refit s'applique par-dessus. Ce choix est en cours de validation.À chaque appel
- Probabilités brutes reçues du backend.
- Temperature scaling par type de question, avec la température de la version de schéma (
temperature_by_type, 1,0 par défaut). Sur des probabilités :p′ᵢ ∝ pᵢ^(1/T), puis renormalisation. choice,scoreetconfidencesont recalculés après température. Seules lesprobabilities(etnoul) du backend font foi.- Si la confiance est sous
abstain_threshold:x_abstain: true.
Abstention
confidence=max(probabilities); pour unnoul, confiance implicitemax(noul, 1 − noul).- La réponse est conservée.
x_abstainsignale que l'application doit escalader (humain, autre règle, autre question). - Le seuil appartient à la version de schéma : le changer, c'est publier une nouvelle version.
Mesure
En V1, les métriques sont calculées à la demande par l'API admin (pas de worker planifié) : jointure des réponses et des outcomes sur une fenêtre (90 jours par défaut), par schéma et par type de question.
| Métrique | Définition |
|---|---|
| accuracy | Part des réponses égales à l'outcome. |
| Brier | Erreur quadratique moyenne entre probabilités et outcome. |
| ECE | Écart moyen pondéré entre confiance et exactitude, sur B = 10 bins équilargeurs de la probabilité max. |
| bins | La courbe de fiabilité : par bin, n, confiance moyenne, exactitude. |
| abstain_rate | Part des réponses marquées x_abstain. |
ready: false et les métriques valent null. Un ECE sur 30 points ne veut rien dire.Refit de température
- La température est réajustée sur les décisions d'indice pair.
- Elle est validée sur les décisions d'indice impair (même protocole que le dépôt kev).
- Le résultat est une proposition :
proposed_temperatureetproposed_ece. - Un
schema_editorl'applique en créant une nouvelle version de schéma, puis en la publiant. Pas de changement silencieux en production.
API
GET /admin/v1/calibration/{schema_id}?days=90&version=
{
"schema_id": "…", "version": 2, "window_days": 90,
"n_decisions": 1240, "n_with_outcome": 312, "min_required": 200, "ready": true,
"abstain_rate": 0.08,
"by_type": {
"choice": {
"n": 312, "accuracy": 0.86, "brier": 0.11, "ece": 0.043,
"bins": [ { "lo": 0.0, "hi": 0.1, "n": 0, "confidence": null, "accuracy": null } ],
"current_temperature": 1.0, "proposed_temperature": 1.18, "proposed_ece": 0.021
}
}
}Raccourci : POST /admin/v1/calibration/{schema_id}/propose-version crée le brouillon de version avec les températures proposées.