Los agentes funcionan en un bucle: un LLM decide qué hacer, una herramienta se ejecuta, un modelo evalúa los resultados y luego continúa en ese bucle hasta que la tarea se completa.
Inicialmente, era difícil integrar agentes y LLMs en aplicaciones de software, las cuales dependen de datos estructurados e interfaces predecibles. Surgieron dos primitivas que facilitaron mucho este proceso:
- Tool calling permite a los modelos realizar solicitudes estructuradas y recibir resultados estructurados.
- Salidas estructuradas permiten a los modelos devolver resultados estructurados.
Pero incluso con esto en su lugar, el bucle del agente sigue siendo lento y costoso: cada decisión requiere otra llamada al modelo.
Entra Jev. Jev es un nuevo modelo lanzado por TypeSafe AI. La empresa reporta una inferencia hasta 200x más rápida y un costo 400x menor en comparación con LLMs equivalentes en tareas de clasificación.
https://x.com/CompleteSkeptic/status/2099925682726002904
Esta publicación cubre cómo funciona Jev, dónde encaja en el bucle del agente y cómo usarlo con LangChain.
Todo sobre Jev
Jev no es realmente un LLM tradicional, ya que no genera texto. Es lo que el equipo de TypeSafe AI llama un modelo System One:
📖 Los modelos System One son una clase de modelos de IA diseñados para tomar decisiones rápidas y estructuradas que el software puede usar directamente. Un modelo System One evalúa un
estado y devuelve respuestas tipadas y probabilidades.
Se entrena utilizando aprendizaje por refuerzo para decisiones calibradas (RLCD). Tu código usa esos resultados para guiar lo que hace el agente a continuación, sin necesidad de una llamada completa a un LLM de chat para cada decisión.
Para invocar un modelo Jev, le envías un estado (el contexto) y preguntas sobre ese estado. Aquí tienes una versión de una sola pregunta del ejemplo de ticket de soporte en su documentación:
1{2 "model": "jev-latest",3 "state": "Hola, he estado intentando conectar mi cuenta de Stripe durante 3 días y sigue fallando. Estoy perdiendo ventas. Por favor, ayuda urgente.",4 "questions": {5 "is_urgent": {6 "type": "noul",7 "instructions": "El mensaje transmite urgencia o sensibilidad al tiempo"8 }9 }10}
El ejemplo de la documentación da esta respuesta de urgencia, mostrada aquí sin el resto de la respuesta:
1{2 "is_urgent": {3 "type": "noul",4 "noul": 0.9995 }6}
Eso es una probabilidad del 99.9% de que el mensaje sea urgente, lo cual tu aplicación puede usar para priorizar el ticket.
Hay tres tipos de preguntas soportadas:

- Choice: Elige entre un conjunto de opciones. Devuelve una probabilidad para cada opción y una puntuación de confianza general.
- Score: Califica una entrada contra niveles ordenados, como bajo, medio y alto. Devuelve una puntuación continua, la distribución subyacente y un valor de confianza.
- Noul: Responde una pregunta de sí o no. Devuelve la probabilidad de que una afirmación sea verdadera.
Una característica clave aquí es que puedes hacer múltiples preguntas sobre el mismo estado en una sola solicitud.
💡 Los modelos System One evalúan cada pregunta en una solicitud en paralelo. Agregar preguntas apenas cambia el tiempo de respuesta y solo cuesta los tokens de las preguntas adicionales, que son baratos.
Para ver un ejemplo de cómo hacer múltiples preguntas sobre un ticket de soporte, consulta la Guía de inicio rápido de TypeSafe.
En resumen, a diferencia de los LLMs tradicionales, ¡Jev no está limitado ni por la generación de texto ni por la toma de decisiones secuencial!
Cómo usar Jev con LangChain
El modelo agnóstico de proveedor de LangChain es ideal para soportar Jev junto con miles de otras integraciones y proveedores de modelos.
La integración de LangChain expone Jev a través de TypeSafeClassifier. Pasas tu estado y preguntas a .invoke(), y obtienes resultados de clasificación en lugar de una respuesta de chat.
Instala langchain-typesafe y configura tu TYPESAFE_API_KEY, luego haz una llamada:
1from langchain_typesafe import Noul, TypeSafeClassifier23classifier = TypeSafeClassifier()45response = classifier.invoke(6 state=(7 "The deploy failed twice and customers are seeing 500s. "8 "Can someone look now?"9 ),10 questions={11 "urgent": Noul(12 instructions="Does this need attention right now?"13 ),14 },15)1617urgency = response.nouls["urgent"].noul
El estado puede ser texto, datos estructurados o mensajes de LangChain. Esto hace que sea sencillo llamar a Jev desde un nodo o hook de middleware usando el contexto que tu agente ya tiene.
¡Puedes integrar esto en middleware o herramientas personalizadas!
Casos de uso
Jev no es un reemplazo directo para un LLM. No genera texto, pero puede manejar tareas de clasificación que hoy usamos comúnmente con LLMs, sin la misma latencia y costo. Esto lo convierte en un complemento prometedor para el modelo que impulsa tu agente: usa un LLM para razonamiento abierto y generación, y Jev para decisiones rápidas y estructuradas en el camino.
Enrutamiento de modelos
Una búsqueda simple no necesita el mismo modelo que una tarea de depuración difícil. El middleware de enrutamiento de modelos permite que Jev evalúe la solicitud y elija un modelo basado en criterios que tú definas, siendo rápido y económico para tareas sencillas, y más capaz para las complejas.
1from langchain.agents import create_agent2from langchain_typesafe.experimental.middleware import (3 ModelChoice,4 ModelRouterMiddleware,5)67router = ModelRouterMiddleware(8 choices={9 "fast": ModelChoice(10 model="openai:luna",11 criteria="Direct lookups, extraction, and localized changes.",12 ),13 "powerful": ModelChoice(14 model="openai:sol",15 criteria="Architecture and high-stakes decisions.",16 ),17 },18 instructions="Choose the least costly model that can complete the task.",19)2021agent = create_agent("openai:gpt-5.6-luna", middleware=[router])
El router selecciona un modelo del último mensaje del usuario y lo usa durante toda la ejecución. Las probabilidades y la confianza también permanecen disponibles en el estado del agente.
Modo automático
Los agentes siguen siendo inherentemente poco confiables. Un agente puede recibir instrucciones malas (ya sea naturalmente o de un atacante suficientemente motivado) que pueden persuadirlo para tomar acciones que no queríamos que tomara.
Entornos de codificación como claude, codex y cursor han implementado alguna forma de clasificar acciones peligrosas antes de que se tomen, lo que ha ayudado lentamente a construir confianza en los agentes. Hasta ahora, este paso de clasificación estaba bloqueado en las partes de código cerrado del entorno.
Ahora que existe un modelo clasificador barato y de alto rendimiento, podemos adoptar el mismo patrón para todos los agentes.
1from langchain.agents import create_agent2from langchain_typesafe.experimental.middleware import (3 AutoModeMiddleware,4)56guardrail = AutoModeMiddleware(tools=["bash"])78agent = create_agent("openai:gpt-5.6-luna", middleware=[guardrail])
AutoModeMiddleware usa Jev para verificar llamadas a herramientas en busca de decisiones riesgosas que podrían tomar, y bloquear llamadas antes de que la herramienta se ejecute.
¡Comienza!
Estamos muy emocionados con Jev y las posibilidades que trae consigo. Algunos proyectos geniales que ya hemos visto: Kyle Jeong de Browserbase está impulsando agentes de uso de navegador por fracciones de centavo, Jarrod Watts construyó un agente de trading en vivo, y Ryan Vogel está haciendo triaje de correos electrónicos a escala.
A estas alturas, salen nuevos modelos cada semana, pero este tuvo una respuesta bastante desproporcionada. Estamos emocionados de ver qué construyes con LangChain y Jev.
Háganos saber qué piensan en el foro, etiquétennos en X y compartan lo que están construyendo, o interactúen con los problemas de LangChain!
Agradecimientos
Gracias a @huntlovell, @hwchase, @ccurme, @veryboldbagel y Nathan Drenzer por su revisión cuidadosa y contribuciones.





