AI-translated from English; not yet reviewed by a fluent editor.
# Una capa de visión al estilo de Jev convierte preguntas sobre imágenes en opciones tipadas
> Un ejemplo independiente en Python usa las probabilidades de tokens de un modelo de visión para devolver decisiones tipadas a partir de imágenes. Las tasas con cámara web son datos del autor; la precisión no se ha probado.
By BIG CHANGE Editorial
Published: 2026-09-26T10:09:47.074Z
Updated: 2026-09-26T10:09:47.074Z
Canonical: https://bigchange.ai/blog/jev-like-llm-vision-wrapper-logprobs

AI-generated conceptual illustration by BIG CHANGE.
Un ejemplo de [Python publicado el 25 de septiembre por el desarrollador Allan Riordan Boll](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) amplía una solicitud de decisión al estilo de Jev para incluir imágenes adjuntas. Envía cada fotograma de la cámara web a un modelo de visión junto con preguntas breves y luego convierte las probabilidades de los siguientes tokens del modelo en un valor de sí o no, una opción o una puntuación. El ejemplo es una capa independiente, no una función de visión de Jev ni una prueba del modelo de Jev.
Lo útil para los desarrolladores es entender los límites de la técnica. Un modelo de visión puede responder a una pregunta acotada sin redactar una descripción, pero las probabilidades de las opciones devueltas dependen del prompt, de las alternativas de tokens disponibles y del modelo. La publicación ofrece un patrón funcional que se puede examinar, no un estudio de precisión.
## El gran cambio
- **Qué cambió:** Un desarrollador aplicó a imágenes el formato de decisiones breves asociado con Jev, usando modelos de visión de propósito general. La imagen se adjunta a cada solicitud y una respuesta de una letra convierte una pregunta visual en un valor que el software puede procesar.
- **Por qué importa:** Los desarrolladores pueden cambiar por escrito el criterio visual y recibir un resultado tipado sin crear un clasificador de imágenes independiente para cada pregunta. Este ejemplo abarca la presencia visible de personas o plantas, el tipo de entorno y la luminosidad; no demuestra con qué fiabilidad se transfieren esos juicios a otras cámaras o escenas.
- **Qué conviene observar:** La decisión práctica consiste en comprobar si el modelo y el endpoint elegidos devuelven de forma suficientemente consistente las puntuaciones de los tokens alternativos necesarios para la tarea. Antes de que una decisión tomada con una cámara web desencadene una acción, hay que medir conjuntamente el rendimiento por fotograma y la calidad de las decisiones con imágenes representativas.
## Cómo funciona la decisión a partir de una imagen
[La guía de inicio rápido de Jev de TypeSafe AI](https://docs.typesafe.ai/introduction/quickstart) documenta un `state` y un conjunto de preguntas tipadas `questions`: `noul` para valores de sí o no, `choice` para alternativas con nombre y `score` para niveles ordenados. El script de Boll usa esos nombres y añade un arreglo llamado `attachments` con rutas de imágenes o URL de datos en base64. Ese campo es una ampliación suya del objeto de solicitud; la guía de inicio rápido citada describe el estado de texto y no lo documenta como entrada de la API de Jev.
Para cada pregunta, el script crea un prompt con opciones identificadas por letras, como `[A] true` y `[B] false`. Pide al modelo que responda con la mejor letra y lee los logprobs del primer token de salida `top_logprobs`. Eleva al exponente las probabilidades logarítmicas devueltas, normaliza los pesos entre las letras enumeradas y los asigna al tipo de pregunta correspondiente. Un `choice` devuelve la opción de mayor peso y su distribución. Un `noul` devuelve el peso de `true`. Un `score` devuelve un promedio ponderado de los niveles ordenados. El script rechaza una respuesta si los tokens de opciones omitidos aún podrían tener un peso significativo.
La imagen se incluye en cada pregunta. El ejemplo envía solicitudes separadas en vez de obtener todas las respuestas en una sola llamada al modelo. La ruta de OpenAI usa la Responses API con `input_image`, `top_logprobs` y `message.output_text.logprobs`; la ruta local de llama.cpp usa Chat Completions con un elemento de contenido `image_url` y logprobs. [La guía de OpenAI sobre imágenes](https://developers.openai.com/api/docs/guides/images-vision) documenta las URL de datos de imagen en base64, y la [referencia de Responses](https://developers.openai.com/api/reference/resources/responses/methods/create) documenta la salida de logprobs y un máximo de 20 alternativas devueltas por posición de token. La documentación del servidor de [llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) documenta las URL de imágenes en su interfaz de chat. Estas fuentes respaldan el patrón de solicitud; no hemos ejecutado el ejemplo contra ninguno de los dos endpoints.
## Qué mide el ejemplo con cámara web
El script captura un fotograma con OpenCV, lo codifica como JPEG y formula cuatro preguntas: si se ve a una persona o una planta, si el entorno es interior o exterior y cuál es su luminosidad. Un proceso en segundo plano evalúa un fotograma a la vez mientras la vista previa sigue activa. La configuración de la cámara usa Linux V4L2, así que el archivo publicado no ofrece una configuración de cámara web portátil sin modificaciones. El texto del artículo dice que se formulan tres preguntas por fotograma, pero el código publicado contiene cuatro; aquí usamos el código como referencia para el recuento.
Boll informa de aproximadamente **un fotograma evaluado por segundo** con un modelo Gemma 4 12B QAT servido localmente en una RTX 3090, y de aproximadamente **0,2 fotogramas por segundo** con GPT-6 Luna alojado. Sugiere que las conexiones repetidas podrían contribuir al resultado del servicio alojado. La publicación no ofrece una comparación controlada del hardware, la red, el tamaño de las imágenes, el almacenamiento en caché, la precisión ni los tiempos de las solicitudes. Esas cifras describen la configuración y el código de este autor, no una clasificación general de la velocidad de los modelos. [OpenAI indica que GPT-6 Luna admite entradas de imagen](https://developers.openai.com/api/docs/models/gpt-6-luna), y su [guía de modelos](https://developers.openai.com/api/docs/guides/latest-model) señala que Luna admite el ajuste de razonamiento `none` utilizado en el ejemplo.
Para adaptar el script, un desarrollador debe hacer primero comprobaciones concretas: confirmar que el modelo acepta imágenes y expone las alternativas requeridas para el primer token; comprobar si aparecen todas las letras de las opciones; y luego evaluar las decisiones devueltas con imágenes etiquetadas de la cámara o el conjunto de datos previstos. Los pesos normalizados son relativos a los tokens de letras enumerados. Por sí solos, no son probabilidades medidas de que un juicio visual sea correcto. El [recetario anterior de OpenAI sobre logprobs](https://developers.openai.com/cookbook/examples/using_logprobs) explica la idea de las probabilidades de tokens, pero está marcado como archivado y puede contener ejemplos de API desactualizados.
Esta capa también aclara qué aspectos de un resultado tipado quedan a cargo del código de la aplicación. El modelo evalúa la imagen proporcionada según el criterio escrito. La aplicación elige los fotogramas, gestiona la ausencia de puntuaciones y decide si algún resultado es lo bastante seguro como para actuar. El ejemplo de Boll imprime una tabla; no describe una acción automatizada ni un despliegue medido.
## Fuentes y lecturas adicionales
- [Allan Riordan Boll, «Una capa al estilo de Jev para los LLM, incluidos los modelos de visión», 25 de septiembre de 2026](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html): ejemplo original en Python, flujo de trabajo con cámara web y tasas de fotogramas comunicadas por el autor. El texto menciona tres preguntas por fotograma; el código define cuatro. Los tiempos no son una prueba comparativa independiente ni controlada.
- [TypeSafe AI, guía de inicio rápido de Jev](https://docs.typesafe.ai/introduction/quickstart): documenta el estado de texto y los tipos de preguntas `noul`, `choice` y `score`. No documenta el campo personalizado `attachments` del autor como función de la API de Jev.
- [OpenAI, Imágenes y visión](https://developers.openai.com/api/docs/guides/images-vision): documenta `input_image`, URL de imágenes y URL de datos en base64 para entradas de visión. [La referencia de la Responses API](https://developers.openai.com/api/reference/resources/responses/methods/create) describe `message.output_text.logprobs` y el límite de alternativas devueltas.
- [OpenAI, modelo GPT-6 Luna y guía de modelos](https://developers.openai.com/api/docs/models/gpt-6-luna): confirma la entrada de imágenes y el ajuste de razonamiento `none`; la [guía de modelos](https://developers.openai.com/api/docs/guides/latest-model) detalla la compatibilidad de parámetros. Estos documentos no verifican el rendimiento por fotograma descrito por el autor del blog.
- [Documentación del servidor de llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md): describe su endpoint de chat compatible con OpenAI y la entrada de URL de imágenes. Aún habría que comprobar la compatibilidad del backend y las listas de tokens devueltas con la versión y el modelo exactos que se utilicen.
- [Recetario de OpenAI, Uso de logprobs](https://developers.openai.com/cookbook/examples/using_logprobs): explicación general de las probabilidades de tokens. OpenAI marca esta receta como archivada y advierte que algunos modelos o ejemplos de API pueden estar desactualizados.
## Sources
- [Allan Riordan Boll: Una capa al estilo de Jev para los LLM, incluidos los modelos de visión](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) — Código original e independiente en Python y observaciones sobre la cámara web comunicadas por el autor. El código define cuatro preguntas, aunque el texto circundante dice tres; no hay una prueba comparativa controlada ni un estudio independiente de precisión.
- [TypeSafe AI: guía de inicio rápido de Jev](https://docs.typesafe.ai/introduction/quickstart) — Documenta el estado de texto, los tipos de preguntas y el cuerpo de una solicitud de ejemplo. El autor del blog añade archivos adjuntos a su propio objeto de solicitud al estilo de Jev; esta guía de inicio rápido no documenta ese campo.
- [OpenAI: Imágenes y visión](https://developers.openai.com/api/docs/guides/images-vision) — Documenta las entradas de imagen y las URL de datos en base64. Respalda el patrón de solicitud, no el rendimiento por fotograma observado por el autor.
- [OpenAI: Crear una respuesta de modelo](https://developers.openai.com/api/reference/resources/responses/methods/create) — Documenta las entradas de imagen, message.output_text.logprobs y hasta 20 logprobs superiores por posición de token, aunque a veces devuelve menos.
- [OpenAI: GPT-6 Luna y guía de modelos](https://developers.openai.com/api/docs/models/gpt-6-luna) — Indica que acepta entradas de imagen y que usa un esfuerzo de razonamiento none; la guía de modelos de OpenAI explica los límites de los parámetros logprobs según el nivel de esfuerzo.
- [README del servidor de llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) — Documenta el endpoint de chat compatible con OpenAI y la entrada image_url. Aquí no se probaron de forma independiente la versión exacta del backend ni el modelo.
- [Recetario de OpenAI: Uso de logprobs](https://developers.openai.com/cookbook/examples/using_logprobs) — Información de contexto sobre las probabilidades de tokens. OpenAI marca el ejemplo del recetario como archivado y posiblemente desactualizado para los modelos o las API actuales.
El boletín de BIG CHANGE
La visión global, a tu ritmo.
Historias recientes sobre IA y robótica, cambios que vale la pena observar e ideas prácticas para usar. Elige un informe diario, un resumen semanal o una perspectiva mensual.
Next scheduled send (UTC): . Your first edition arrives at the next scheduled send after you confirm.
Tu privacidad, tu elección.
El almacenamiento necesario ayuda a proteger el sitio y a recordar tus preferencias. Google Analytics opcional permanece desactivado hasta que lo autorices. Puedes leer todas las historias usando solo el almacenamiento necesario. Detalles de privacidad