Saltar al contenido
SONOEDocs
EnglishENConsola

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:

  1. min_confidence en la pregunta.
  2. min_confidence en la solicitud (aplica a todas las preguntas).
  3. 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:
TipoUmbral predeterminado
choice0.0207
scale0.4574
binary0.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.