El equipo de investigación aplicada de Nokia ha abierto AnyJev, una biblioteca de Python que convierte un LLM abierto en un modelo de decisión. No necesita entrenamiento. Su objetivo es un trabajo de producción común: elegir una respuesta de un conjunto fijo en lugar de escribir una oración.
¿Es desplegable? Sí, se instala desde PyPI, se envía bajo Apache-2.0 y tiene transformadores y backends vLLM con puntuación de prefijo compartido.
¿Qué es AnyJev?
AnyJev toma prestada su interfaz de Jev. Jev es el modelo de decisión System One que TypeSafe AI lanzó en septiembre de 2026 (nuestra cobertura). Le da a AnyJev una pregunta escrita y obtiene una decisión con una probabilidad que puede alcanzar. Esa probabilidad se lee de la distribución del siguiente token del modelo. No se genera, analiza ni entrena nada.
La biblioteca admite 3 tipos de preguntas:
Una pregunta de elección elige una de K opciones. Una pregunta noul es sí o no. Una pregunta de puntuación coloca la respuesta en uno de varios contenedores ordenados.
El problema de leer logits directamente
Muchos proyectos abiertos ya restringen el siguiente token a las etiquetas de opciones y leen las partituras. El equipo de investigación de Nokia señala dos fallos en ese atajo. Primero, la respuesta puede cambiar cuando se reordenan las opciones. En segundo lugar, las probabilidades no están calibradas.
El documento de niveles nombra 2 causas:
El primero es el sesgo previo: el modelo favorece algunas etiquetas, como “Sí” sobre “No”, cualquiera que sea la entrada. El segundo es el sesgo de posición: el modelo favorece ciertos espacios en la lista de opciones.
Cómo funciona AnyJev: L0 y L1
Cada decisión conlleva un campo nivelado.
L0 (etiquetas cero, activado de forma predeterminada) aplica 2 correcciones:
Turnos cíclicos. Para una pregunta con K opciones, la lista se muestra en K rotaciones, por lo que cada opción aparece en cada posición una vez. Los resultados se combinan en el espacio logarítmico como una media geométrica. Si el sesgo de posición es aditivo en el espacio logit, esto lo elimina exactamente. Corrección previa. De forma predeterminada, AnyJev utiliza la calibración por lotes. Mantiene una media móvil de las distribuciones previstas sobre entradas reales y la divide con una fuerza de 0,75. La corrección comienza después de 8 elementos.
L0 cuesta K precargas por decisión, agrupadas en un prefijo compartido. Eso es aproximadamente 0,25 s por decisión en el lote 32 en un H100, con K = 20.
L1 (100 a 500 etiquetas por pregunta) agrega escala de temperatura además de L0. Los valores ajustados se guardan como un pequeño artefacto JSON. L1 remodela la confianza pero no cambia la clasificación de las respuestas.
Resultados de referencia
En Qwen3-8B con BANKING77 (20 vías, 300 elementos de prueba), los números se ven así:
Algunos otros resultados del repositorio:
L0 redujo los cambios de orden en los 9 modelos y filas de tareas probadas. En un conjunto de decisiones escritas, Qwen3-32B con L1 alcanzó un ECE de 0,036, en comparación con el 0,144 publicado para Jev. En precisión, la afinada Laya sigue liderando. La tabla de ablación completa cubre los modelos Qwen, OLMo, Granite, Phi y Mistral. Wu dice que el equipo probó AnyJev en un problema de enrutamiento interno de Nokia y obtuvo resultados prometedores.
Cómo utilizar AnyJev
[“billing”, “technical”, “sales”, “other”]nombre=”ruta”) r = d.decide({“conversación”: […]}, [route]) r[“route”].distribución # probabilidades por opción
Para servir, inicia vLLM con almacenamiento en caché de prefijo y le apunta con un VLLMBackend.