Ollama 0.35: modelos que responden con probabilidades, no texto
La nueva versión agrega un endpoint que devuelve choices y scores en vez de texto libre, pensado para triage de tickets, ruteo de modelos y clasificación de contenido.
El problema que resuelven los decision models
Cuando usas un LLM normal para clasificar un ticket o decidir qué modelo usar en un pipeline, el modelo te devuelve texto, y después tienes que parsear ese texto para extraer una decisión. Eso introduce errores de formato, respuestas ambiguas y la necesidad de reglas extra para validar lo que el modelo contestó. Los decision models que trae Ollama 0.35 cambian el contrato: en vez de generar texto libre, devuelven directamente choices, probabilidades y scores. Esto sirve para tareas donde lo que necesitas no es una respuesta conversacional sino una decisión estructurada, como etiquetar tickets de soporte, elegir a qué modelo enrutar una consulta, o clasificar contenido. Esta funcionalidad llega a través de /v1/systemone, basado en el Jev API de TypeSafe.
Cómo se usa el endpoint /v1/systemone
Para usar un decision model primero lo descargas como cualquier otro modelo de Ollama, con ollama pull. Después le envías una petición al endpoint /v1/systemone con dos cosas: un state que describe el contexto (por ejemplo, la descripción de un ticket) y uno o más questions, cada una con un tipo, instrucciones y criterios. En el ejemplo de las notas, le pasas el contexto de un ticket de soporte y le preguntas qué label le corresponde, dándole tres opciones posibles: billing, bug o account. El modelo no te devuelve una frase explicando su razonamiento, sino una estructura con la opción elegida y la probabilidad de cada alternativa.
ollama pull nimblecurl http://localhost:11434/v1/systemone \ -H 'Content-Type: application/json' \ -d '{ "model": "nimble", "state": "Our checkout has returned 500 errors since 9am.", "questions": { "label": { "type": "choice", "instructions": "Which label fits this ticket?", "criteria": { "billing": "Payments and refunds", "bug": "Software errors", "account": "Login and account access" } } } }'Qué te devuelve la respuesta
La respuesta viene en JSON y, para cada pregunta que hiciste, incluye el tipo de pregunta, la opción elegida, un mapa de probabilidades para cada alternativa posible y un valor de confianza. En el ejemplo, el ticket sobre errores 500 en el checkout recibe la etiqueta bug con una probabilidad de 0.9781, muy por encima de billing (0.0125) y account (0.0093), con una confianza de 0.8906. También recibes un bloque usage con tokens de entrada y salida, igual que en las respuestas de texto normales, pero acá notarás que el output_tokens es mínimo porque no se está generando texto, solo una decisión.
{ "model": "nimble", "answers": { "label": { "type": "choice", "choice": "bug", "probabilities": { "billing": 0.0125, "bug": 0.9781, "account": 0.0093 }, "confidence": 0.8906 } }, "usage": { "input_tokens": 174, "output_tokens": 1 }}Los tres tipos de pregunta
El API de decision models soporta tres tipos de preguntas, cada una pensada para un caso distinto. choice sirve para elegir entre opciones discretas y te devuelve la probabilidad de cada una, como en el ejemplo del ticket. noul es para preguntas binarias: te devuelve la probabilidad de que una condición sea verdadera, útil para checks tipo sí/no con un grado de certeza. score te devuelve un puntaje sobre un conjunto ordenado de criterios, pensado para casos donde necesitas un ranking o una calificación en vez de una categoría exacta. Tener estos tres tipos definidos de antemano evita que tengas que diseñar tu propio esquema de parsing para cada caso de uso.
Qué modelos están disponibles
Por ahora hay dos modelos entrenados específicamente para esta tarea: Nimble, de Bespoke Labs, y Tev1, de Together AI. Son modelos distintos a los LLMs generativos que ya corrías en Ollama, optimizados para devolver decisiones estructuradas en vez de texto. Si ya tenías un pipeline que usaba un modelo de chat para clasificar texto y le pedías que respondiera en un formato JSON fijo, estos modelos apuntan directamente a reemplazar esa capa, sin depender de que el modelo generativo respete el formato que le pediste.
Correcciones y ajustes menores
Además de los decision models, esta versión trae cuatro arreglos puntuales. La pantalla de Settings ahora abre sin esperar a que termine el descubrimiento de modelos, lo que evita que la interfaz se sienta trabada al abrirla. En macOS se corrigió que el menú y el ícono de actualización no reflejaran una actualización disponible al iniciar la aplicación. También se arregló que las descargas de modelos MLX quedaran colgadas indefinidamente cuando se estancaban. Por último, si tus requests todavía incluyen el parámetro typical_p, que está deprecado, ahora Ollama registra una advertencia en el log en vez de fallar la petición, así que código viejo que todavía manda ese parámetro deja de romperse.
What you get
El endpoint /v1/systemone devuelve decisiones estructuradas (choice, probabilidad, score) en vez de texto, pensado para triage, ruteo y clasificación.
Nimble (Bespoke Labs) y Tev1 (Together AI) son los primeros modelos de este tipo disponibles en Ollama, se descargan con ollama pull como cualquier modelo.
Hay tres tipos de pregunta: choice para opciones discretas, noul para condiciones binarias con probabilidad, y score para rankear contra criterios ordenados.
Si tu código todavía manda typical_p, ya no falla la petición, solo genera un warning en el log.
Se corrigieron bugs de UI (Settings, menú de actualización en macOS) y de descargas MLX que quedaban colgadas.
Want a class on this?
If enough people ask for it, it goes on the schedule. No email, no name needed.