docs
API

Jev — modelo de decisiones

Markdown

El modelo de decisiones Jev de TypeSafe responde a preguntas tipadas sobre texto o JSON: elección de una opción, puntuación en una escala o «sí/no» con probabilidades. No es un chat ni genera texto.

Guía completa
POSThttps://api.ailoot.ai/v1/systemone
Jev — modelo de decisiones
curl https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "¡Ayuda! Mis desembolsos llevan fallando 3 días.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "¿Expresa urgencia?"
      }
    }
  }' 
200 OK
{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

Jev es un modelo de decisiones de la clase System One de TypeSafe. No escribe texto ni mantiene conversaciones: le envías el estado (state), en texto o JSON, y un conjunto de preguntas y recibes valores tipados con probabilidades. El código puede usarlos directamente para ramificar, ordenar y enrutar, sin analizar texto libre.

Todas las preguntas de una solicitud se evalúan en paralelo e independientemente, sobre el mismo state. Según TypeSafe, añadir preguntas apenas cambia el tiempo de respuesta y las preguntas no interfieren entre sí.

AspectoResumen
Modelo jev-latest : alias de la última versión estable de Jev; ficha en el catálogo
MétodoPOST /v1/systemone. No es un chat: los formatos OpenAI, Anthropic y Gemini no sirven para Jev. La respuesta llega completa en un único JSON
Entradas admitidasSolo texto: una cadena, un objeto JSON o un array de textos. Convierte antes las imágenes, el audio y el vídeo en texto
Contexto64K tokens por solicitud, entre state y todas las preguntas; state junto con la pregunta más larga, hasta 32K
IdiomaSegún TypeSafe, el modelo es más preciso en inglés; admite otros idiomas, pero con menor precisión. Compruébalo con tus propios datos
PrecioEntrada a $0.084 por 1 millón de tokens; salida gratuita

Solicitud

Autenticación

  • Authorizationheaderobligatorio

    Clave de Ailoot en formato Bearer sk-….

Cuerpo de la solicitud

  • modelstringobligatorio

    jev-latest.

  • statestring | object | arrayobligatorio

    Qué evaluar: una cadena de texto o JSON, como una consulta de un cliente, un registro de base de datos, una conversación o el estado actual de tu aplicación. Un objeto con nombres de campo claros suele resultar más práctico que una sola cadena.

  • questionsobjectobligatorio

    Preguntas. Tú eliges las claves y las respuestas llegan con esas mismas claves; la clave no influye en la respuesta, ya que la pregunta se define en instructions.

  • questions.*.typestringobligatorio

    noul, choice o score : consulta los detalles más abajo.

  • questions.*.instructionsstring | object | arrayobligatorio

    La pregunta en sí. Una pregunta larga con datos se puede enviar como objeto: la pregunta en un campo y los datos en otros; haz referencia a los campos por su nombre entre acentos graves.

  • questions.*.criteriaobject | array

    Opciones de respuesta, distintas para cada tipo: descripciones de «sí» y «no» en noul (opcionales), un diccionario de opciones en choice y una lista ordenada de niveles en score.

Tipos de preguntas

TipoQué preguntaQué devuelve
noulSi una afirmación es verdadera: sí o nonoul : probabilidad de «sí», de 0 a 1
choiceQué opción de las indicadas encajachoice, probabilities, confidence
scoreEn qué punto de tu escala de niveles se sitúa statescore, legend, probabilities, confidence

Se pueden combinar distintos tipos en una misma solicitud.

noul — sí o no

El campo criteria es opcional: permite describir qué significa «sí» (true) y «no» (false). La respuesta noul es un número de 0 (no) a 1 (sí).

"is_urgent": {
  "type": "noul",
  "instructions": "¿Expresa urgencia?",
  "criteria": {
    "true": "Se indica expresamente que el tiempo es determinante",
    "false": "No se expresa urgencia"
  }
}

choice — elección de una opción

criteria es un diccionario de «opción → descripción»; si no necesitas una descripción, indica null. Hasta 255 opciones. En la respuesta, choice es la opción más probable, probabilities indica la probabilidad de cada opción (la suma es 1) y confidence indica la confianza, de 0 a 1.

"department": {
  "type": "choice",
  "instructions": "¿Qué equipo debería encargarse de esto?",
  "criteria": {
    "billing": "Pagos, facturación, reembolsos",
    "technical": "Errores, interrupciones del servicio, integraciones",
    "sales": "Precios, mejoras, nuevos clientes"
  }
}

score — puntuación en una escala

criteria son los niveles, de menor a mayor, hasta un máximo de 10 (TypeSafe recomienda al menos dos). En la respuesta, score es el valor ponderado por las probabilidades de los niveles (puede quedar entre dos niveles), legend indica el número de nivel y su descripción, probabilities y confidence. Según TypeSafe, score sirve para comparar con un umbral, pero no para obtener un número exacto entre niveles.

"frustration": {
  "type": "score",
  "instructions": "¿Cómo de frustrado está el cliente?",
  "criteria": ["Tranquilo", "Frustrado", "Muy enfadado"]
}

Respuesta

  • modelstring

    La versión del modelo que ha respondido. El alias jev-latest pasa a versiones nuevas con el tiempo: si has ajustado los umbrales de confidence para una versión concreta, vigila este campo.

  • answersobject

    Una respuesta por pregunta, con las mismas claves. Todas las respuestas incluyen type, y las de choice y score también incluyen confidence.

  • usageobject

    input_tokens y output_tokens. Solo se facturan los tokens de entrada.

Varias preguntas en una solicitud

Envía todas las preguntas sobre un mismo state en una sola solicitud: se evalúan en paralelo y state se envía una única vez. Según TypeSafe, en su ejemplo con 13 preguntas, una solicitud conjunta resultó 12,2 veces más barata y 10 veces más rápida que 13 solicitudes independientes enviadas una tras otra, con las mismas respuestas.

Es mejor dividir un juicio complejo en preguntas sencillas y combinar las respuestas en el código: por ejemplo, en vez de «evalúa la propuesta», puntúa por separado el mercado, la viabilidad y la diferenciación respecto a la competencia. Así puedes cambiar los pesos en el código, no en el texto de la pregunta.

{
  "model": "jev-latest",
  "state": "¡Ayuda! Mis desembolsos llevan fallando 3 días.",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "¿Qué equipo debería encargarse de esto?",
      "criteria": {
        "billing": "Pagos, facturación, reembolsos",
        "technical": "Errores, interrupciones del servicio, integraciones",
        "sales": "Precios, mejoras, nuevos clientes"
      }
    },
    "frustration": {
      "type": "score",
      "instructions": "¿Cómo de frustrado está el cliente?",
      "criteria": ["Tranquilo", "Frustrado", "Muy enfadado"]
    },
    "is_urgent": {
      "type": "noul",
      "instructions": "¿Expresa urgencia?"
    }
  }
}

Cuándo utilizarlo

  • Enrutamiento. Enviar una consulta al departamento adecuado y una solicitud al procesador correspondiente: código sencillo, un modelo grande o una persona.
  • Orden y prioridad. Urgencia, tono y riesgo en una escala, con umbrales en el código.
  • Moderación y comprobaciones. Comprobar si un mensaje infringe las reglas, si una fuente respalda una cita o si un documento contiene la respuesta a una pregunta, antes de que el texto siga adelante.
  • Puntuación y clasificación. Evaluar documentos, candidatos o fragmentos encontrados con tus propios criterios y decidir en el código cuáles pasan a la siguiente fase.
  • Una alternativa al frágil «devuelve JSON». Una llamada que devuelve valores tipados por diseño, en lugar de texto que haya que analizar.

Cuándo no utilizarlo

  • Chats, respuestas al usuario y generación de texto o código. Jev no escribe texto; para eso están los modelos de texto.
  • Modelo para Claude Code, Cursor y otros agentes. No puedes sustituir el modelo de un agente por jev-latest: el agente necesita un modelo que escriba texto y llame a herramientas. Puedes llamar a Jev desde el código que el agente escriba para ti.
  • Aritmética, recuentos y comparación de fechas. Según TypeSafe, estas operaciones son más fiables en el código; pregunta al modelo solo por la parte semántica, como extraer componentes de una fecha mediante choice.
  • Imágenes, audio y vídeo. El modelo solo admite texto: convierte esos datos en texto previamente.

Precio

Solo se facturan los tokens de entrada, indicados en el campo usage.input_tokens de la respuesta: $0.084 por 1 millón. Los tokens de salida son gratuitos.

La solicitud del ejemplo de esta página (296 tokens de entrada) cuesta menos de $0.0001.

Antes de la solicitud, Ailoot reserva una cantidad del saldo y, tras la respuesta, cobra una sola vez según el consumo real. Consulta cómo funciona.

Límites

AspectoLímite
Solicitud completa: state y todas las preguntas64K tokens
state junto con la pregunta más larga32K tokens
Opciones en un choicehasta 255
Niveles en un scorede 2 a 10
Entradasolo texto: una cadena, un objeto JSON o un array de textos

Límites del modelo según TypeSafe. Las restricciones de tu clave y saldo se aplican igual que en cualquier modelo de Ailoot: Errores y límites.

Errores

Los errores llegan en el formato común de Ailoot API: código, mensaje claro y Request ID. Los más habituales en este método son:

CódigoCuándo ocurreQué hacer
400 invalid_requestEl cuerpo no ha superado la validación: falta state, model o questions, type es desconocido, choice tiene más de 255 opciones o score tiene más de 10 nivelesCorrige la solicitud según el mensaje de error; sin cambios, volverá a fallar
400 context_length_exceededstate y las preguntas juntos superan el límite del modeloFiltra state en el código y conserva los datos necesarios para las preguntas
401 invalid_api_keyLa clave falta o no es válidaEnvía la clave en la cabecera Authorization
402 insufficient_balanceNo hay suficiente saldo disponible para la reservaRecarga el saldo
404 model_not_found, unsupported_endpointEl ID contiene un error o se ha llamado al modelo mediante un método incorrecto, por ejemplo, /v1/chat/completionsLlama a jev-latest únicamente mediante POST /v1/systemone
429 rate_limit_exceededDemasiadas solicitudesEspera los segundos indicados en la cabecera Retry-After y vuelve a intentarlo
503 model_overloaded, model_unavailableEl modelo está temporalmente sobrecargado o no disponibleSi X-Should-Retry: true, vuelve a intentarlo tras los segundos indicados en Retry-After; si es false, consulta primero el Request ID en el historial
504 model_timeoutEl modelo no ha respondido a tiempoNo vuelvas a enviar la solicitud hasta consultar el Request ID en el historial

La lista completa de códigos está en la página Errores y límites.

¿Tienes alguna pregunta? Envíanos el Request ID y una descripción; te ayudaremos a resolverla.Contactar con soporte