Confianza
Cada respuesta de Choice y de Score trae una confidence entre 0 y 1. Dice qué tan seguro está Sonoe, aparte de lo que eligió. Úsala para decidir si actúas sobre una respuesta o se la pasas a otra persona.
Qué mide
La confianza es 1 − la entropía normalizada de las probabilidades de la respuesta:
- 1 cuando toda la probabilidad está en una opción.
- 0 cuando está repartida por igual entre todas.
Como está normalizada, significa lo mismo con 2 opciones que con 200. Un Choice que pone 0.99 en una de tres opciones saca cerca de 0.95; uno que reparte 0.41 / 0.11 / 0.49 saca cerca de 0.13.
Una respuesta Noul no tiene confidence: su probabilidad ya dice qué tan seguro está. Un Noul cerca de 0.5 está indeciso; cerca de 0 o de 1, está seguro.
Probabilidad y confianza no son lo mismo
La probabilidad dice qué; la confianza dice si fiarte. Un Choice puede elegir ventas con probabilidad 0.53 y confianza 0.08: ventas es lo más probable, pero por poco. Decide con las dos:
equipo = answers["equipo"]
if equipo["confidence"] >= 0.6:
enrutar_a(equipo["choice"])
else:
mandar_a_una_persona()El umbral correcto depende de cuánto cuesta un error en tu app. Elígelo con tus propios datos etiquetados: mira la precisión de las respuestas por encima de cada umbral y quédate con el más bajo que sea suficientemente preciso.
Abstenerse (API nativa)
El endpoint nativo /v1/decide lo hace por ti. Cada respuesta trae abstain: true cuando la confianza está por debajo de un umbral, que quiere decir «no te fíes de esta».
El umbral, en orden de prioridad:
min_confidenceen la pregunta.min_confidenceen la solicitud (aplica a todas las preguntas).- El predeterminado del modelo para ese tipo, calibrado para que las preguntas respondidas lleguen a una precisión objetivo con datos que el modelo no vio:
| Tipo | Umbral predeterminado |
|---|---|
choice | 0.0207 |
scale | 0.4574 |
binary | 0.0742 |
{
"state": "lo de la otra vez",
"questions": {
"departamento": {
"type": "choice",
"ask": "¿Qué departamento?",
"options": { "facturacion": null, "envios": null, "ventas": null }
}
},
"min_confidence": 0.5
}{
"answers": {
"departamento": {
"type": "choice",
"answer": "ventas",
"probabilities": { "facturacion": 0.1978, "envios": 0.2728, "ventas": 0.5294 },
"confidence": 0.0792,
"abstain": true
}
}
}Abstenerse es una respuesta, no un error: Sonoe igual te dice su mejor opción y las probabilidades. Tu código decide qué hacer: hacerle otra pregunta a la persona, usar una regla o pasárselo a alguien.
La API compatible con Jev, /v1/systemone, no devuelve abstain (Jev no tiene ese campo). Compara confidence con tu propio umbral.