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": "jev-latest",
  "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": "jev-latest",
  "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": "jev-latest",
  "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

result.answers usa los mismos ID que enviaste. La salida tipada garantiza la estructura de los campos, pero ajusta los umbrales al riesgo y ofrece revisión humana cuando sea necesario.

  • 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; también puede incluir el coste en USD.
  • 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

modelModelo que realizó la evaluación; este proyecto incluye answers y usage dentro de result.
answersUna respuesta por pregunta, identificada con el mismo ID de la solicitud.
usageContiene input_tokens y output_tokens.
elapsedTiempo adicional devuelto por este proyecto, en milisegundos.

Ejemplo de respuesta

{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

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.

{
  "model": "jev-1.13.0",
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
      "confidence": 0.81
    }
  },
  "usage": { "input_tokens": 318, "output_tokens": 34 }
}

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.

{
  "model": "jev-1.13.0",
  "answers": {
    "frustration": {
      "type": "score",
      "score": 1.05,
      "legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
      "probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
      "confidence": 0.92
    }
  },
  "usage": { "input_tokens": 304, "output_tokens": 18 }
}

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í.

{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 307, "output_tokens": 20 }
}

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 el modelo insignia de TypeSafe, jev-latest.
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": "jev-latest",
    "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": "jev-latest",
  "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.

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
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.