Documentación para desarrolladores

Desarrolla con Jev

Empieza con una decisión real: prepara el contexto, define preguntas tipadas y entrega a tu código el resultado respaldado por probabilidades.

CONOCE JEV

Un modelo System One para software

Los LLM tradicionales generan principalmente texto para personas. Jev se centra en decisiones que el software puede consumir directamente: envía un contexto y preguntas tipadas para recibir resultados estructurados que tu código puede usar para ramificar, clasificar y enrutar.

Resultados tipados

Decisiones en paralelo

Probabilidad y confianza

INICIO RÁPIDO

Valida una decisión en la zona de pruebas

La zona de pruebas es la forma más rápida de entender las entradas y salidas de Jev. Cuando la pregunta esté lista, crea una clave API y conéctala a tu producto.

  1. 1

    Abre la zona de pruebas

    Inicia sesión, abre la zona de pruebas de Jev AI e introduce un caso real de tu negocio.

  2. 2

    Prepara el contexto

    Usa texto, un objeto JSON o un array de texto para proporcionar el contexto necesario.

  3. 3

    Añade preguntas

    Elige Choice, Score o Noul. Puedes combinar los tres tipos en una solicitud.

  4. 4

    Conecta tu código

    Crea una clave API en tu espacio de trabajo y llama al endpoint de producción con un SDK o REST.

ENTRADA

Proporciona el contexto necesario para decidir

El contexto es la información que leen todas las preguntas. Usa una cadena para un caso sencillo y un objeto JSON cuando debas combinar un ticket, un pedido y una política.

text

Lenguaje natural, un ticket o un mensaje

object

Registros estructurados y campos anidados

array

Contexto formado por varios elementos de texto

Jev acepta texto, objetos JSON y arrays de texto. Aún no admite entradas de imagen, audio ni vídeo.

TIPOS DE PREGUNTA

Compón decisiones con preguntas concretas

Cada pregunta debe plantear algo específico y bien delimitado. Varias preguntas se evalúan en paralelo sobre el mismo contexto, sin necesidad de encadenar llamadas.

TipoUsoDevuelve
Choice
Clasificar o enrutar entre opcioneschoice · probabilidades · confianza
Score
Puntuar el contexto con una escala ordenadascore · leyenda · probabilidades · confianza
Noul
Determinar si una afirmación es verdaderanoul (probabilidad de sí)

Campos y estructura comunes

Los tres tipos incluyen type e instructions; criteria depende del tipo. instructions puede ser una cadena, un objeto o un array. Para aportar más contexto, estructura la pregunta y los datos en campos y refiérete a ellos por nombre.

type

Obligatorio: noul, choice o score.

instructions

Obligatorio: cadena, objeto o array que describe la decisión.

criteria

Según el tipo: objeto opcional para Noul, mapa obligatorio para Choice y array obligatorio para Score.

{
  "type": "noul",
  "instructions": "Does this message convey urgency?",
  "criteria": {
    "true": "Explicitly needs immediate attention",
    "false": "No urgency expressed"
  }
}

Para preguntas largas o con datos adicionales, separa la pregunta y el contexto en campos y refiérete a ellos por nombre.

"instructions": {
  "potential_duplicate": {
    "name": "John Smith",
    "location": "Oakland, California",
    "last_employer": "Google"
  },
  "question": "Is the resume for the same person as `potential_duplicate`?"
}

Choice

Choice selecciona una respuesta entre opciones predefinidas. type debe ser choice, instructions describe la decisión y criteria relaciona las opciones con sus descripciones. Admite hasta 255 opciones; las descripciones pueden ser cadenas, objetos, arrays o null.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "typesafe/jev-1.14",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this?",
      "criteria": {
        "billing": "Payments, invoicing, refunds",
        "technical": "Bugs, outages, integrations",
        "sales": "Pricing, upgrades, new accounts"
      }
    }
  }
}

Score

Score evalúa niveles, como gravedad o satisfacción. type debe ser score; instructions explica la evaluación y criteria es un array ascendente de 2 a 10 niveles. Los elementos pueden ser cadenas, objetos o arrays. La puntuación ponderada por probabilidad puede quedar entre niveles.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "typesafe/jev-1.14",
  "questions": {
    "frustration": {
      "type": "score",
      "instructions": "How frustrated is the customer?",
      "criteria": [
        "Calm",
        "Frustrated",
        "Very angry"
      ]
    }
  }
}

Noul

Noul sirve para decisiones de sí o no. type debe ser noul e instructions contiene la pregunta. criteria es opcional y usa true y false para describir sí y no. Noul expresa la probabilidad de que la respuesta sea sí, no un campo de confianza adicional.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "typesafe/jev-1.14",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?",
      "criteria": {
        "true": "Explicitly time-sensitive",
        "false": "No urgency expressed"
      }
    }
  }
}

SALIDA

Qué aporta la respuesta a tu código

Las respuestas, el uso y elapsedMs se encuentran en data.result. data.creditsUsed indica los créditos cobrados en solicitudes con clave API. Las respuestas usan los mismos ID de las preguntas enviadas.

  • answers: Choice devuelve la opción, las probabilidades y la confianza; Score devuelve puntuación, leyenda, probabilidades por nivel y confianza; Noul devuelve noul.
  • usage: Incluye input_tokens y output_tokens.
  • elapsedMs: Tiempo desde el envío hasta la recepción del resultado, incluida la validación; no solo la inferencia del modelo.

La probabilidad y la confianza orientan la automatización, pero no garantizan la precisión del negocio. Para acciones arriesgadas, usa umbrales altos o revisión humana.

Campos de la respuesta

data.result.answersUna respuesta por pregunta, identificada con el mismo ID de la solicitud.
data.result.usageContiene input_tokens y output_tokens.
data.result.elapsedMsTiempo adicional devuelto por este proyecto, en milisegundos.
data.creditsUsedCréditos cobrados por una solicitud con clave API; se omite en las solicitudes gratuitas del Playground.

Ejemplo de respuesta

{
  "code": 0,
  "message": "ok",
  "data": {
    "result": {
      "answers": {
        "is_urgent": {
          "type": "noul",
          "noul": 0.95
        }
      },
      "usage": {
        "input_tokens": 296,
        "output_tokens": 20
      },
      "elapsedMs": 200
    },
    "creditsUsed": 1
  }
}

Tipos de respuesta

Cada respuesta coincide con el tipo de su pregunta. Choice y Score también incluyen confianza de 0 a 1, calculada a partir de la distribución de probabilidad.

Choice

Devuelve la opción más probable, las probabilidades de todas las opciones y la confianza derivada de la distribución.

type

Obligatorio; el valor es choice.

choice

Cadena obligatoria; la opción con mayor probabilidad.

probabilities

Mapa obligatorio de string a number; las probabilidades suman 1.

confidence

Número obligatorio; certeza derivada de la distribución de probabilidad.

{
  "code": 0,
  "message": "ok",
  "data": {
    "result": {
      "answers": {
        "department": {
          "type": "choice",
          "choice": "billing",
          "probabilities": {
            "billing": 0.88,
            "technical": 0.12,
            "sales": 0
          },
          "confidence": 0.81
        }
      },
      "usage": {
        "input_tokens": 318,
        "output_tokens": 34
      },
      "elapsedMs": 200
    },
    "creditsUsed": 1
  }
}

Score

Devuelve una puntuación ponderada por probabilidad, una leyenda por nivel, sus probabilidades y la confianza. La puntuación puede quedar entre niveles.

type

Obligatorio; el valor es score.

score

Número obligatorio; puntuación ponderada entre los niveles.

legend

Mapa obligatorio de string a string; relaciona cada nivel con su descripción.

probabilities

Mapa obligatorio de string a number; las probabilidades de los niveles suman 1.

confidence

Número obligatorio; certeza derivada de la distribución.

{
  "code": 0,
  "message": "ok",
  "data": {
    "result": {
      "answers": {
        "frustration": {
          "type": "score",
          "score": 1.05,
          "legend": {
            "0": "Calm",
            "1": "Frustrated",
            "2": "Very angry"
          },
          "probabilities": {
            "0": 0,
            "1": 0.95,
            "2": 0.05
          },
          "confidence": 0.92
        }
      },
      "usage": {
        "input_tokens": 304,
        "output_tokens": 18
      },
      "elapsedMs": 200
    },
    "creditsUsed": 1
  }
}

Noul

Devuelve noul de 0 a 1, la probabilidad de que la respuesta sea sí.

type

Obligatorio; el valor es noul.

noul

Número obligatorio; 0 significa no y 1 significa sí.

{
  "code": 0,
  "message": "ok",
  "data": {
    "result": {
      "answers": {
        "is_urgent": {
          "type": "noul",
          "noul": 0.95
        }
      },
      "usage": {
        "input_tokens": 307,
        "output_tokens": 20
      },
      "elapsedMs": 200
    },
    "creditsUsed": 1
  }
}

Campos de uso

input_tokens

integer · Número de tokens de entrada usados.

output_tokens

integer · Número de tokens de salida generados.

REFERENCIA DE LA API

Evalúa el contexto y devuelve respuestas estructuradas

Referencia completa de la API HTTP: evalúa un contexto con preguntas tipadas y recibe una respuesta estructurada por pregunta.

Endpoint de evaluación

POST https://thejevai.com/v1/systemone

Incluye una clave API Bearer en Authorization y el tipo de contenido application/json en cada solicitud.

Authorization: Bearer <API_KEY>
Content-Type: application/json

Cuerpo de la solicitud

Cada solicitud requiere tres campos principales. questions es un mapa de claves elegidas por ti, reutilizadas en la respuesta.

statestring | object | array · obligatorio: texto o datos estructurados que se evaluarán.
modelstring · obligatorio: modelo que procesa la solicitud. Usa cualquier ID de modelo de decisiones listado abajo; el ejemplo predeterminado usa typesafe/jev-1.14.
questionsmap<string, Question> · obligatorio: preguntas que se evaluarán en paralelo.

Las claves de questions son tuyas y la Answer vuelve con el mismo ID. No se envían al modelo subyacente ni se usan durante la inferencia.

Ejemplo de solicitud

curl -X POST https://thejevai.com/v1/systemone \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "typesafe/jev-1.14",
    "state": "Help! My payouts have been failing for 3 days.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Does this convey urgency?"
      }
    }
  }'

Ejemplo del cuerpo de la solicitud

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "typesafe/jev-1.14",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?"
    }
  }
}

Guarda la clave API en una variable de entorno del servidor. Nunca la incluyas en el código del navegador ni la subas al repositorio. Aquí se describen campos, tipos de pregunta, respuestas, errores y reintentos.

Modelos disponibles

Usa cada modelo de decisiones con una sola interfaz

El Playground y la API admiten 23 ID de modelos de decisiones de OpenRouter, incluidas versiones fijas y alias latest. Comparten el mismo formato de solicitud; solo cambia el campo model.

Los alias latest requieren el ~ inicial y siguen automáticamente la última versión del proveedor. Usa un ID con versión si necesitas mantener una versión fija. Las solicitudes existentes con typesafe/jev-1.13 siguen siendo compatibles.

Plantilla de llamada genérica

Copia esta solicitud del servidor y sustituye <MODEL_ID> por el ID del modelo que quieras usar. Mantén igual state, questions y Authorization.

curl -X POST https://thejevai.com/v1/systemone \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<MODEL_ID>",
    "state": "Replace this with your business state.",
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "Choose the most appropriate result.",
        "criteria": {
          "option_a": "Option A",
          "option_b": "Option B"
        }
      }
    }
  }'

Jev 1.14

typesafe/jev-1.14Abrir página del modelo

El modelo de decisiones actualizado de TypeSafe para elecciones tipadas, puntuaciones y juicios de sí o no. El Playground usa por defecto la versión fija typesafe/jev-1.14.

"model": "typesafe/jev-1.14"

Jev 1.13

typesafe/jev-1.13Abrir página del modelo

La versión anterior de Jev sigue disponible como typesafe/jev-1.13 para integraciones existentes y comparaciones entre versiones.

"model": "typesafe/jev-1.13"

Jev Latest

~typesafe/jev-latestAbrir página del modelo

Alias de Jev que OpenRouter actualiza automáticamente. Usa ~typesafe/jev-latest, incluido el ~ inicial. A 15 de octubre de 2026 apunta a Jev 1.14; el destino puede cambiar.

"model": "~typesafe/jev-latest"

Cloudflare Clef

El modelo de decisiones Clef de Cloudflare. Establece model en cloudflare/clef.

"model": "cloudflare/clef"

Cloudflare Clef Flash

cloudflare/clef-flashAbrir página del modelo

El modelo de decisiones Clef Flash de Cloudflare. Establece model en cloudflare/clef-flash.

"model": "cloudflare/clef-flash"

Perplexity Decider V1.1 27B

perplexity/pplx-decider-v1.1-27bAbrir página del modelo

La versión V1.1 de Perplexity para clasificación tipada, enrutamiento, moderación y evaluación mediante rúbricas.

"model": "perplexity/pplx-decider-v1.1-27b"

Perplexity Decider Latest

~perplexity/pplx-decider-latestAbrir página del modelo

Alias de Decider que OpenRouter actualiza automáticamente. Usa ~perplexity/pplx-decider-latest, incluido el ~ inicial. A 15 de octubre de 2026 apunta a V1.1 27B; el destino puede cambiar.

"model": "~perplexity/pplx-decider-latest"

LiquidAI D1

El modelo de decisiones de LiquidAI. Establece model en liquid/d1.

"model": "liquid/d1"

Together Tev1 4B Experimental

togethercomputer/tev1-4b-experimentalAbrir página del modelo

El modelo experimental de decisiones Tev1 de Together. Establece model en togethercomputer/tev1-4b-experimental.

"model": "togethercomputer/tev1-4b-experimental"

Inception Mercury Decide (gratis)

inception/mercury-decide:freeAbrir página del modelo

La variante gratuita Mercury Decide de Inception. Establece model en inception/mercury-decide:free.

"model": "inception/mercury-decide:free"

Upstage Solar Decide

upstage/solar-decideAbrir página del modelo

El modelo Solar Decide de Upstage. Establece model en upstage/solar-decide.

"model": "upstage/solar-decide"

Respan Span-01

El modelo de decisiones Span-01 de Respan. Establece model en respan/span-01.

"model": "respan/span-01"

Respan Span-01 Lite

respan/span-01-liteAbrir página del modelo

La variante Respan Span-01 Lite. Establece model en respan/span-01-lite.

"model": "respan/span-01-lite"

Respan Span-01 Lite (gratis)

respan/span-01-lite:freeAbrir página del modelo

La variante gratuita Respan Span-01 Lite. Establece model en respan/span-01-lite:free.

"model": "respan/span-01-lite:free"

Jared Palmer Kev 4B

jaredpalmer/kev-4bAbrir página del modelo

El modelo de decisiones Kev 4B de Jared Palmer. Establece model en jaredpalmer/kev-4b.

"model": "jaredpalmer/kev-4b"

ScaleDown Classify-1

scaledown/classify-1Abrir página del modelo

El modelo de decisiones de ScaleDown para clasificación, moderación, detección de intención y enrutamiento de documentos.

"model": "scaledown/classify-1"

Nace.AI Drex v2.0

nace-ai/drex-v2.0Abrir página del modelo

Un modelo de decisiones de mezcla de expertos con 35B parámetros totales y 3B activos para enrutamiento, clasificación y comprobación de políticas.

"model": "nace-ai/drex-v2.0"

Microsoft Decision 1

microsoft/microsoft-decision-1Abrir página del modelo

El modelo de decisiones de Microsoft para clasificación, priorización, verificación y protección de agentes con probabilidades calibradas.

"model": "microsoft/microsoft-decision-1"

Nace.AI Drex v1.5

nace-ai/drex-v1.5Abrir página del modelo

Un modelo de decisiones de 9B de Nace.AI para decisiones tipadas sobre texto o JSON.

"model": "nace-ai/drex-v1.5"

Cloudflare Clef Omni

cloudflare/clef-omniAbrir página del modelo

La variante multimodal de la familia Clef de Cloudflare. Prueba aquí decisiones sobre texto o JSON mediante la API común.

"model": "cloudflare/clef-omni"

Solar Decide Flash

upstage/solar-decide-flashAbrir página del modelo

La variante más rápida de Solar Decide de Upstage para enrutamiento, clasificación y comprobación de políticas de baja latencia.

"model": "upstage/solar-decide-flash"

GPT-6 Luna Decisions

openai/gpt-6-luna-decisionsAbrir página del modelo

GPT-6 Luna como modelo de decisiones para clasificación, enrutamiento, moderación y evaluación mediante rúbricas.

"model": "openai/gpt-6-luna-decisions"

Mercury Decide

inception/mercury-decideAbrir página del modelo

La variante estándar de Mercury Decide usa inception/mercury-decide; la variante :free sigue disponible por separado.

"model": "inception/mercury-decide"

Estos 23 modelos usan POST /v1/systemone y la misma regla de créditos de Jev. Cada solicitud admite hasta 8 preguntas y 32 KiB de JSON, aunque el proveedor permita entradas mayores. La zona de pruebas edita texto o JSON; las modalidades y los tipos de pregunta dependen del proveedor. :free identifica la variante del proveedor y no exime de créditos en la API de Jev. Laya tiene documentación independiente.

USO CON AGENTES

Usa Jev dentro de un agente de programación

Jev Agent Skill enseña a Codex, Claude Code, Cursor y otros agentes a usar esta API para decisiones acotadas, mientras la ejecución y los permisos siguen en tu aplicación.

Instala y configura

Instala la Skill, crea una clave API de Jev AI y elige el idioma de la guía y los ejemplos.

Configura una vez

Usa variables de entorno para mantener la clave fuera del código, los registros y las conversaciones del agente.

Haz una pregunta acotada

Indica al agente qué decisión necesita; debería elegir Choice, Score o Noul y enviar el contexto mínimo necesario.

Instala y configura

npx skills add jev-ai/jev-agent-skill

export JEV_API_KEY="sk_your_key_here"
export JEV_LANGUAGE="en-US"

Crea una clave en https://thejevai.com/settings/apikeys. El inglés (en-US) es el idioma predeterminado; configura JEV_LANGUAGE=zh-CN para la guía en chino simplificado. Nunca pegues una clave real en el código ni en un prompt público.

Cinco ejemplos para empezar

Copia uno de estos prompts después de instalar la Skill. Muestran cómo usar Jev para decidir sin darle permiso para ejecutar la acción final.

1

Enrutar un ticket de soporte

Usa Choice para seleccionar un equipo autorizado y deja que el código enrute el ticket. Envía los casos dudosos a revisión.

Usa Jev Agent Skill. Clasifica este ticket de soporte en exactamente un equipo: billing, technical, account o sales. Devuelve el equipo seleccionado, las probabilidades y la confianza. No contactes con el cliente ni modifiques todavía el ticket.

Ticket: Me han cobrado dos veces el plan anual y necesito un reembolso.
2

Proteger una llamada a una herramienta

Usa Noul para decidir si una acción requiere aprobación; los permisos deterministas y las políticas siguen teniendo la última palabra.

Usa Jev Agent Skill antes de ejecutar esta llamada propuesta a una herramienta. Decide si es segura sin aprobación humana. Ten en cuenta los efectos secundarios, la reversibilidad, el alcance y las políticas. Si es arriesgada o hay dudas, no la ejecutes.

Herramienta: delete_customer_records
Argumentos: {where: last_login < 2023-01-01}
Política: las operaciones destructivas en la base de datos requieren una copia de seguridad y aprobación humana.
3

Enrutar a un modelo aprobado

Usa Choice con los candidatos permitidos y una pregunta Noul aparte si ninguno encaja.

Usa Jev Agent Skill para elegir un modelo aprobado para esta tarea. Prioriza la calidad y después la capacidad de contexto y el coste. Devuelve el modelo seleccionado, las probabilidades y si hay que escalar el caso. Todavía no llames a ningún modelo.

Tarea: revisar una disputa de un cliente de 100k tokens.
Candidatos: fast-model (32k, coste bajo), reasoning-model (200k, coste alto), fallback-model (128k, coste medio).
4

Verificar pruebas de investigación

Usa Noul para comprobar si las pruebas bastan antes de que un agente publique o cite una afirmación.

Usa Jev Agent Skill para comprobar si hay pruebas suficientes para publicar esta afirmación. Valora la calidad y actualidad de las fuentes, si la respaldan directamente y si existen contradicciones. Devuelve la probabilidad de que pueda publicarse y las verificaciones pendientes. No la publiques todavía.

Afirmación: Nuestra API redujo un 40 % el tiempo mediano de procesamiento.
Pruebas: una prueba comparativa interna del mes pasado con 120 casos; sin datos del tráfico de producción; un informe anterior que mostraba una mejora del 12 %.
5

Revisar si la tarea ha terminado

Usa Choice o Score para decidir si el trabajo está completo, necesita verificación o sigue incompleto antes de informar del éxito.

Usa Jev Agent Skill para comprobar si esta tarea está terminada. Devuelve complete, verify_more o incomplete. Ten en cuenta el objetivo, los archivos modificados, las pruebas ejecutadas, las lagunas conocidas y la verificación en el entorno de destino.

Objetivo: añadir autenticación con clave API al endpoint de producción.
Hecho: se ha añadido la comprobación de Authorization y la búsqueda de la clave API.
Verificación: las pruebas unitarias pasan; no se han probado las solicitudes de producción ni el comportamiento del límite de solicitudes.
La Skill indica cuándo y cómo pedir una valoración a Jev. No crea herramientas, concede permisos, intercepta comandos de shell ni sustituye permisos, reglas deterministas o aprobación humana.

GESTIÓN DE ERRORES

Errores y reintentos

El endpoint usa códigos de estado HTTP estándar y devuelve una respuesta JSON con el error.

EstadoSignificado
400Solicitud incorrecta: JSON no válido, campos ausentes, una pregunta mal formada o un ID de modelo no admitido. Copia el ID exacto de la lista, incluido ~ en los alias latest.
401No autorizado: falta la clave API o no es válida. Comprueba el encabezado Authorization.
422Entidad no procesable: el cuerpo no supera la validación por un campo ausente o una pregunta mal formada. La respuesta señala el campo afectado.
429Demasiadas solicitudes: has superado el límite. Espera y vuelve a intentarlo.
529Sobrecarga: el servicio está temporalmente saturado. Espera y vuelve a intentarlo.

Ante un 429 o 529, reintenta con retroceso exponencial en vez de reenviar la solicitud de inmediato. Los SDK con una política predeterminada pueden hacerlo automáticamente.

Qué hacer ahora

Empieza con una decisión de bajo riesgo y bien delimitada. Después, cuando sepas dónde resulta útil la señal, intégrala con el enrutamiento, las colas, las protecciones o el flujo de un agente.