Guía y comunidad independientes para desarrolladores
Información oficial sobre Jev: typesafe.ai

Probar Jev gratis

Haz una pregunta o tres preguntas distintas sobre un mismo caso. Elige un ejemplo, cambia los datos y examina cada respuesta estructurada.

Explorar proyectos en GitHub Casos de uso
01 / Elegir una decisión

Empieza con un caso concreto

typesafe/jev-1.13

Explora un tipo de respuesta cada vez. Cada ejecución consume un intento diario.

1. Choice
questions.decision
Vista previa de la solicitud API

La vista previa no incluye tu clave API ni el token de verificación. Cada ID de pregunta tiene una respuesta con el mismo nombre.

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "Me cobraron dos veces la suscripción. ¿Pueden ayudarme?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "¿Qué equipo debe atenderlo?",
      "criteria": {
        "billing": "Pagos y reembolsos",
        "technical": "Errores e integraciones",
        "general": "Otras consultas"
      }
    }
  }
}

Cada cuenta dispone de 6 intentos gratuitos al día (UTC), que se restablecen a las 00:00 UTC. La capacidad diaria del sitio es limitada. Tu entrada se envía a OpenRouter; aquí guardamos datos de uso, no el contenido que introduces.

02 / Leer la respuesta

Listo cuando tú quieras

Ejecuta un caso para ver una respuesta estructurada por pregunta: Choice elige una opción, Score la sitúa en una escala y Probability devuelve un valor entre 0 y 1.

Ejemplo con la API

Integra Jev en tu código.

El formulario envía tu texto como state.input junto con una o tres preguntas con nombre. Cada resultado aparece en answers.<question_id>.

Qué significa cada campo

En la solicitud defines las preguntas y el formato esperado. La respuesta contiene un resultado por pregunta. Estos son los campos JSON del ejemplo.

Solicitud

model
El identificador del modelo. El ejemplo fija Jev 1.13 para dejar clara la versión.
state
El texto o los datos estructurados que se evalúan, como un mensaje de soporte.
questions
Un objeto cuyas claves son los nombres de las preguntas. Esas mismas claves aparecen después en answers.
<question_id>
Un nombre como action o urgency; la respuesta usa ese mismo nombre.
type
Formato de respuesta: choice selecciona una opción, score puntúa en una escala ordenada y noul evalúa una pregunta de sí o no.
instructions
La decisión concreta que debe tomar el modelo.
criteria
Las opciones permitidas en Choice, los niveles ordenados de Score o el significado de false y true en Noul.

Respuesta

answers
Un resultado por pregunta, con el mismo nombre.
choice
La opción elegida, la de mayor probabilidad.
probabilities
La probabilidad de cada opción; los valores suman 1.
confidence
Un nivel de confianza calculado a partir de la distribución de probabilidades, distinto de la probabilidad de la opción elegida.
score
Una posición ponderada por probabilidades en una escala ordenada; puede quedar entre dos niveles.
legend
La correspondencia entre las posiciones numéricas de Score y las descripciones de los niveles que definiste.
noul
Un valor entre 0 (no) y 1 (sí) para una pregunta binaria.

Un mismo contexto y tres preguntas independientes: Choice, Score y Probability. Cada ejecución consume un intento diario. Una respuesta con formato válido también puede equivocarse. Prueba casos representativos y define tus propios umbrales de enrutamiento.

URL de la API

OpenRouter

Este Playground llama a una versión concreta de Jev a través de OpenRouter. Consulta la página del modelo para ver los precios y la disponibilidad actuales.

URL de la API
POST https://openrouter.ai/api/alpha/decisions
model
typesafe/jev-1.13
Clave de API
Envía la clave API desde el servidor como token Bearer.
OpenRouter ↗
API directa oficial

TypeSafe

TypeSafe tiene su propio endpoint y sus propias claves API. Su guía oficial usa jev-latest y muestra cómo enviar varias preguntas en una solicitud.

Official published price
$0.042per 1M input tokens

Output tokens are free.

Eligible accounts may receive promotional credits. TypeSafe does not publish a fixed amount on its public pages; check the console for your balance and terms.

URL de la API
POST https://api.typesafe.ai/v1/systemone
model
jev-latest
Clave de API
Envía la clave API desde el servidor como token Bearer.
LangChain · Python

Integrar Jev en el harness de un agente de LangChain

El harness coordina las llamadas al modelo y a las herramientas. En cada punto de decisión, Jev lee un mensaje, una llamada a herramienta pendiente o el estado del agente y devuelve una respuesta tipada. Tu código decide cómo seguir; el modelo conversacional se ocupa de las tareas abiertas.

ModelRouterMiddlewarebefore_agent → wrap_model_call

Clasifica el último mensaje antes de iniciar la ejecución, elige un modelo y mantén esa elección durante el proceso. La opción, las probabilidades y la confianza quedan disponibles en el estado del agente.

AutoModeMiddlewarewrap_tool_call

Revisa una llamada a herramienta antes de ejecutarla. Si Jev detecta riesgo o falta de autorización, el middleware la bloquea y devuelve un ToolMessage de error. No solicita aprobación humana.

TypeSafeClassifierChoice · Score · Noul

Puedes añadir tus propios controles con middleware personalizado: pasa los mensajes o el estado del agente a TypeSafeClassifier y usa Choice, Score o Noul para decidir la siguiente acción o pedir revisión.

LangChain · Python · ModelRouterMiddleware
# pip install "langchain-typesafe[experimental]" langchain-openai
# Set TYPESAFE_API_KEY and OPENAI_API_KEY on your server.
from langchain.agents import create_agent
from langchain_typesafe.experimental.middleware import (
    ModelChoice, ModelRouterMiddleware,
)

router = ModelRouterMiddleware(
    choices={
        "fast": ModelChoice(
            model="openai:gpt-5.6-terra",
            criteria="Simple lookups and extraction.",
        ),
        "powerful": ModelChoice(
            model="openai:gpt-6-astra",
            criteria="Complex reasoning and high-stakes decisions.",
        ),
    },
    instructions="Choose the least costly model that can do the task safely.",
)
agent = create_agent("openai:gpt-5.6-terra", middleware=[router])
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize this log."}]})
print(result["model_route"].choice)

TypeScript del servidor

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
Leer la respuesta

Tres tipos de preguntas, tres formatos de respuesta

Elige el tipo de respuesta que necesita tu código. Si envías varias preguntas, cada ID recibe su propio resultado.

TypeSafe: Choice · Score · Noul ↗

Choice

choice · probabilities · confidence

La opción elegida, la de mayor probabilidad.

Score

score · legend · probabilities · confidence

Una posición ponderada por probabilidades en una escala ordenada; puede quedar entre dos niveles.

Noul

noul

Un valor entre 0 (no) y 1 (sí) para una pregunta binaria.

Antes de usarlo en producción

Prueba con solicitudes representativas, registra la versión del modelo y deriva a una persona los casos inciertos o de alto impacto. El valor 0,8 solo sirve de ejemplo.

Novedades de la comunidad

Sigue el ecosistema de Jev a tu manera.

Descubre nuevos proyectos, modelos System One de la comunidad y casos de uso prácticos mediante actualizaciones públicas frecuentes o un correo ocasional con contenido seleccionado.

Actualizaciones públicas frecuentes

Jev AI Radar

Una colección de código abierto que desarrolladores, scripts y agentes de IA pueden leer, reutilizar y seguir a lo largo del tiempo.

Marcar con una estrella en GitHub
Selección ocasional

Boletín

Recibe de vez en cuando una selección de la comunidad: proyectos de GitHub en tendencia, ejemplos de código útiles y casos prácticos con Jev.

Al suscribirte, aceptas recibir correos ocasionales de Jev AI Dev.