POST /v1/decide
El endpoint nativo de Sonoe. Usa el mismo modelo que /v1/systemone, con los nombres de pregunta propios de Sonoe y dos extras: cada respuesta dice si abstenerse, y puedes fijar el umbral de confianza para eso.
POSThttps://api.sonoeai.com/v1/decide
Cuerpo de la solicitud
statestring | object | arrayrequerido- Aquello sobre lo que se decide. Mira Estado.
questionsmap<string, Question>requeridoDe 1 a 64 preguntas, bajo claves que tú eliges.
type"choice" | "scale" | "binary"requeridoaskstringrequerido- La pregunta, hasta 2,000 caracteres.
optionsmap<string, string | null>opcional- Solo
choice, requerido: de 2 a 256 opciones, cada una con una descripción onull. levelsarray<string>opcional- Solo
scale, requerido: de 2 a 10 niveles distintos, del más bajo al más alto. min_confidencenumberopcional- Abstenerse por debajo de esta confianza (0 a 1) en esta pregunta.
min_confidencenumber | nullopcional- Abstenerse por debajo de esta confianza en todas las preguntas que no fijen la suya. Si ninguna lo fija, aplica el predeterminado calibrado del modelo para cada tipo. Mira Confianza.
{
"state": { "canal": "chat", "mensaje": "Me cobraron dos veces y quiero mi dinero de vuelta" },
"questions": {
"equipo": {
"type": "choice",
"ask": "¿Qué equipo debe atender esto?",
"options": { "facturacion": "Pagos, cobros, reembolsos", "envios": "Entregas", "ventas": null }
},
"urgencia": { "type": "scale", "ask": "¿Qué tan urgente es?", "levels": ["baja", "media", "alta"] },
"reembolso": { "type": "binary", "ask": "¿Pide un reembolso?" }
}
}Respuesta
modelstringrequerido- El modelo que respondió.
answersmap<string, Answer>requeridotype"choice" | "scale" | "binary"requeridoanswerstring | booleanrequerido- La opción o el nivel elegido; en
binary,truecuando la probabilidad del sí es al menos 0.5. probabilitiesmap<string, number>opcionalchoiceyscale: cada opción o nivel y su probabilidad.probabilitynumberopcionalbinary: la probabilidad del sí.valuenumberopcionalscale: el nivel esperado (0 = el más bajo); puede quedar entre dos.confidencenumberrequerido- De 0 a 1.
abstainbooleanrequeridotruecuando la confianza está por debajo del umbral: no actúes sobre esta respuesta por sí sola.
msnumberrequerido- Lo que tardó el modelo, en milisegundos.
usageobjectrequeridotokensintegerrequerido- Tokens leídos (y cobrados) en esta solicitud.
tokens_este_mesintegerrequerido- Tokens usados este mes, incluida esta solicitud.
cuota_mensualintegerrequerido- Tu cuota mensual.
{
"model": "sonoe-1.1.0",
"answers": {
"equipo": {
"type": "choice",
"answer": "facturacion",
"probabilities": { "facturacion": 0.9934, "envios": 0.0039, "ventas": 0.0028 },
"confidence": 0.9595,
"abstain": false
},
"urgencia": {
"type": "scale",
"answer": "alta",
"value": 1.427,
"probabilities": { "baja": 0.1169, "media": 0.3393, "alta": 0.5438 },
"confidence": 0.1363,
"abstain": true
},
"reembolso": { "type": "binary", "answer": true, "probability": 0.9715, "confidence": 0.8132, "abstain": false }
},
"ms": 57.8,
"usage": { "tokens": 357, "tokens_este_mes": 5973, "cuota_mensual": 1000000 }
}Comparado con /v1/systemone
/v1/systemone | /v1/decide |
|---|---|
noul → noul | binary → answer, probability, confidence, abstain |
choice con criteria → choice | choice con options → answer |
score con criteria → score, legend | scale con levels → value, answer |
instructions (texto, objeto o lista, opcional) | ask (texto, requerido) |
| Sin abstención | abstain, min_confidence |
usage.input_tokens | usage.tokens, más el total del mes y tu cuota |
Los errores de validación usan la forma de FastAPI: 422 con detail como una lista de { loc, msg, type }. Los demás errores traen detail y error, como en Errores y límites.
Ejemplo
curl https://api.sonoeai.com/v1/decide \
-H "Authorization: Bearer $SONOE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"state":"lo de la otra vez","questions":{"departamento":{"type":"choice","ask":"¿Qué departamento?","options":{"facturacion":null,"envios":null,"ventas":null}}},"min_confidence":0.5}'