Saltar al contenido

Decisiones

POST /v1/decisions es para las llamadas a modelos cuyo propósito es tomar una decisión: enrutar un ticket, comprobar si un mensaje es urgente, puntuar un fragmento, clasificar un registro. En lugar de texto que tienes que parsear, obtienes respuestas tipadas con probabilidades sobre las que puedes fijar umbrales. Sigue la Decisions API de OpenAI.

Entre los modelos de decisión están gpt-6-luna-decisions y microsoft-decision-1.

Haz preguntas

curl https://api.inferray.com/v1/decisions \
  -H "Authorization: Bearer $INFERRAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-luna-decisions",
    "input": "Help! My payouts have been failing for 3 days.",
    "questions": [
      {
        "type": "choice",
        "name": "department",
        "instructions": "Which team should handle this?",
        "choices": [
          { "value": "billing", "description": "Payments, invoicing, refunds" },
          { "value": "technical", "description": "Bugs, outages, integrations" }
        ]
      },
      { "type": "predicate", "name": "is_urgent", "instructions": "Does this convey urgency?" },
      {
        "type": "score",
        "name": "impact",
        "instructions": "Rate the operational impact.",
        "levels": [{ "label": "None" }, { "label": "Limited" }, { "label": "Critical" }]
      }
    ]
  }'

Tipos de pregunta

TipoPreguntaRespuesta
predicateSi algo es verdaderoprobability de 0 a 1
choiceCuál de tus choices aplicachoice, una probabilidad por opción y confidence
scoreUna calificación en tu escala ordenada levels, de menor a mayorscore, probabilidades y confidence

La respuesta

{
  "model": "gpt-6-luna-decisions",
  "answers": [
    {
      "type": "choice",
      "name": "department",
      "choice": "billing",
      "probabilities": [
        { "value": "billing", "probability": 0.88 },
        { "value": "technical", "probability": 0.12 }
      ],
      "confidence": 0.81
    },
    { "type": "predicate", "name": "is_urgent", "probability": 0.93 },
    { "type": "score", "name": "impact", "score": 1.7, "confidence": 0.74 }
  ]
}

Las respuestas llegan en el orden en que preguntaste, cada una con el name de su pregunta. Un choice conserva el tipo del valor que diste: string o booleano. Una pregunta que el modelo se niega a responder vuelve como {"type": "refusal", "name": ...}, mientras que las demás sí se responden.

Cómo usar las respuestas

const byName = Object.fromEntries(result.answers.map((answer) => [answer.name, answer]));

if (byName.is_urgent.probability > 0.8) escalate(ticket);
route(ticket, byName.department.choice);

Fija los umbrales a partir de tus propios datos: etiqueta unos cientos de ejemplos, revisa las probabilidades y elige el punto de corte que equilibre los casos no detectados frente a las falsas alarmas.

Precios

Las decisiones se cobran por tokens de entrada; las respuestas en sí no tienen cargo de salida. Los precios están en la página de cada modelo.