Jev: qué es y cómo trabajar con él

Guía práctica del primer modelo System One de TypeSafe · para @aizvestia · septiembre de 2026

🤖 Módulo para agentes de código
Install the TypeSafe skill. If you're in Claude Code, run `claude plugin marketplace add typesafe-ai/skills`, then `claude plugin install typesafe@typesafe-ai`. If you're in another agent, run `npx skills add typesafe-ai/skills --skill typesafe-ai` and select your agent. Use one installation method. You can read the skill directly at https://github.com/typesafe-ai/skills/blob/main/skills/typesafe-ai/SKILL.md (raw: https://raw.githubusercontent.com/typesafe-ai/skills/main/skills/typesafe-ai/SKILL.md). Then use the TypeSafe skill when working on this project.

Qué es

Jev es el primer modelo público System One de TypeSafe. No es un modelo de chat ni 'otra LLM con modo JSON': Jev no genera texto en absoluto. Envías un state (contexto: texto, JSON o array) y una lista de preguntas tipadas, y recibes decisiones para máquinas: la opción elegida, una puntuación en escala o la probabilidad de un 'sí' - más la distribución de probabilidades y el confidence de cada respuesta. Sus creadores lo resumen en una frase: 'smart if-statements' - if-else inteligentes para tu código. El ejemplo más claro es el email: Jev revisa cada mensaje y dictamina 'spam, 94% seguro', 'necesita respuesta', 'puede esperar'. No escribe nada: solo clasifica - 1.700 emails por 18 centavos.

El nombre System One viene de Kahneman ('Pensar rápido, pensar despacio'): el modelo está hecho para juicios intuitivos rápidos, no para razonamiento lento. Dato curioso: el cofundador de TypeSafe, Diogo Almeida, coinventó RLHF, el método con el que se entrenó ChatGPT. Ahora apuesta a que la automatización necesita otro método de entrenamiento.

Qué es

En qué se diferencia de 'lo anterior'

El post-entrenamiento de modelos de lenguaje ha pasado por tres enfoques:

   
RLHF
ChatGPT y todos los chatbots
modelos cuyas respuestas gustan a la genteadulación, alucinaciones seguras de sí mismas, mode dropping: la distribución de respuestas se estrecha
RLVR
modelos de razonamiento
fuertes en matemáticas, ajedrez, cadenas largaslentos y caros
RLCD
Reinforcement Learning for Calibrated Decisions - el método de TypeSafe
decisiones con probabilidades calibradasno escribe texto, flojo en System 2

La gracia de la calibración: cuando el modelo dice 0.8, en una serie larga ~80% de esas respuestas serán correctas. La probabilidad se convierte en un número sobre el que construir lógica.

Diferencia práctica con una LLM 'obligada' a escupir JSON:

Las tres primitivas

Las tres primitivas
    
Choice¿Cuál opción?choice + probabilities + confidenceenrutamiento de tickets: billing / technical / sales
Score¿Qué nivel en la escala?score (puede ser decimal) + probabilities + confidencefrustración del cliente: 0 = tranquilo, 2 = furioso
Noul¿Es verdad?noul: probabilidad de 'sí' de 0 a 1'¿el cliente pide reembolso?' - 0.95

Matices que ahorran horas:

Empezar en 5 minutos

0. Sin lista de espera: Jev ya está en el Vercel AI Gateway como typesafe-ai/jev ($0.042/1M tokens de entrada) - si estás en Vercel, llámalo ya con el paquete ai, sin waitlist de TypeSafe. También en OpenRouter: ~typesafe/jev-latest (API compatible con OpenAI).

1. Playground. Entra en console.typesafe.ai/playground, pega cualquier texto como state, añade preguntas y dale a Run. (La entrada te recibe con un quiz '¿Se puede chatear con Jev?' - la respuesta correcta es No.)

2. API directo. Coges la key en la consola y es un solo endpoint:

curl -X POST https://api.typesafe.ai/v1/systemone \
  -H "Authorization: Bearer $TYPESAFE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "state": "Trying to connect my Stripe for 3 days, keeps failing. Help ASAP.",
    "model": "jev-latest",
    "questions": {
      "department": {
        "type": "choice",
        "instructions": "Which team should handle this",
        "criteria": {
          "billing": "Payment or subscription issues",
          "technical": "Bugs or integration problems"
        }
      },
      "is_urgent": { "type": "noul", "instructions": "The message conveys urgency" }
    }
  }'

En la respuesta, cada pregunta trae el valor elegido, las probabilidades de todas las opciones y el confidence.

3. Python SDK (3.10+): el cliente lee TYPESAFE_API_KEY y llama a jev-latest por defecto:

pip install typesafe-sdk
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient

client = TypeSafeClient()
response = client.system_one(
    state=ticket,
    questions={
        "department": Choice(
            instructions="Which team should handle this",
            criteria={
                "billing": "Payment or subscription issues",
                "technical": "Bugs or integration problems",
            },
        ),
        "is_urgent": Noul(instructions="The message conveys urgency"),
    },
)
print(response.answers["department"].choice)   # "billing"
print(response.answers["is_urgent"].noul)      # 0.999

Para JS está @typesafe-ai/sdk, y para agentes (Claude Code, Codex, etc.) un skill listo: npx skills add typesafe-ai/skills --skill typesafe-ai. El skill enseña a los agentes a mandar preguntas en lote - los agentes adoran gastar una request por pregunta.

Cuatro patrones clave

  1. Speculative fan-out. Todas las preguntas que comparten un state van en una sola request, incluidas las 'especulativas' que no siempre necesitas. Una pregunta extra cuesta centavos y el tiempo de respuesta casi no cambia. Cookbook de TypeSafe: 13 preguntas en una llamada son ~12x más baratas y ~10x más rápidas que 13 llamadas, con las mismas respuestas.
  2. Confidence-gated routing. La respuesta dice 'qué'; el confidence dice 'si actuar'. Tres zonas: alta - actúa automáticamente; media - confirma o marca para revisión; baja - escala a un humano o a un modelo de razonamiento. Los umbrales dependen del riesgo: mostrar la pantalla equivocada aguanta un 0.6; ejecutar un pago, mejor 0.9+.
  3. Composite scoring. Parte un juicio complejo en Scores atómicos y combínalos con pesos en código. Prioridad del ticket = severity * 0.5 + frustration * 0.3 + actionability * 0.2. ¿Cambiaron las prioridades? Ajustas un coeficiente, no reescribes el prompt.
  4. Intent routing. Clasifica la petición entrante y enrútala: código determinista, modelo barato, modelo de razonamiento caro o humano.
Cuatro patrones clave

Precios y límites (jev-1.13.0)

Puntos débiles (honestamente, de sus propios docs)

jev-1.13 tiene una página pública de 'jaggedness' - una lista honesta de lo que el modelo no sabe hacer:

Dónde aplicarlo

RAG rerankLLM guardrailscitation checkjailbreak detectticket routingmoderationcomplianceML featurescatalog matchingresume scoringlead scoring

Ejemplo vivo: un terminal BUY/SELL/HOLD de Bitcoin sobre Jev - jev-terminal.vercel.app. La API devuelve probabilidades honestas y la decisión llega en una fracción de segundo.

Otro ejemplo - UI generativa instantánea: el experimento json-render + jev - Jev elige entre tus componentes, acciones y design system, y la interfaz se renderiza en milisegundos.

Enlaces

Prueba Jev aquí mismo

Edita el mensaje, marca tus preguntas y pulsa Run - responde un jev-latest real.

2 · Preguntas y espacio de respuestas
Which team should handle this support message
billingPayment or subscription issues
technicalBugs or integration problems
salesPricing or account questions
How frustrated the customer appears
0Calm, just stating facts
1Frustrated but civil
2Very angry, strong language
The message conveys urgency or time-sensitivity
yesprobability that the statement is true

Las llamadas van por un proxy serverless: state de hasta 2.000 caracteres, ~30 peticiones por minuto. La clave vive en una variable de entorno de Vercel y nunca llega al navegador.