Un script de Python permite transformar los fotogramas de una cámara web en un flujo de juicios legibles por humanos sobre lo que contiene la escena, usando un truco inteligente de forzar a un LLM a escoger una única letra de una lista de opciones. El truco proviene de un proyecto llamado Jev y sus derivados, y funciona tanto para texto como para imágenes.
La técnica implica escribir una solicitud que pide a un LLM que elija la mejor respuesta de un conjunto fijo de opciones, luego añadir algunos parámetros de solicitud JSON a una llamada compatible de Chat Completions. La API del LLM devuelve la letra de la respuesta elegida junto con las probabilidades logarítmicas del modelo para otros tokens posibles. Repetir por cada pregunta, y se obtiene una forma rápida y repetible de calificar contenido visual sin construir una canalización de visión personalizada.
El Truco del Prompt
La idea fundamental es simple. Se escribe un prompt como este:
State: My order arrived broken and I want a refund. Question: Which team should handle this? [A] billing [B] shipping [C] returns Answer with the letter of the best option only.
Luego se añaden algunos parámetros de solicitud:
json
{
"max_completion_tokens": 1,
"logprobs": true,
"top_logprobs": 20
}
Forzar al modelo a generar solo un token evita una respuesta larga y es super rápido. Procesar la entrada aún cuesta tiempo, aunque. Un prefijo de estado compartido puede ser KV-cacheado si el backend lo soporta.
Modelos de Visión También
The trick extends to vision models. Jev’s documented request format currently describes only text/JSON state, but the author added an attachments field for images in their local experiments. The example captures webcam frames, sends base64 JPEGs, and prints a table showing whether a person is visible, whether the scene is indoors or outdoors, and how bright it is.
En un Gemma 4 12B ejecutándose en una RTX 3090, la configuración alcanza alrededor de 1 fotograma por segundo, con tres preguntas por fotograma. Contra OpenAI’s gpt-6-luna, la tasa cae a alrededor de 0.2 FPS. Esa velocidad más lenta probablemente se debe a que la configuración no hace ningún esfuerzo para evitar el costo de una conexión separada a través del sistema de OpenAI por pregunta por fotograma.
Los modelos de visión especializados seguramente son más eficientes, pero al autor le gusta la flexibilidad de cambiar una condición describiéndola en texto plano.
El Script Independiente
El script completo es un ejemplo de Python independiente. Utiliza OpenCV solo para acceder convenientemente a la cámara web, no para ninguna visión por computadora real. Las dependencias son simples: opencv-python, además de bibliotecas estándar como argparse, base64 y urllib.
The data structure is a JSON blob with a state, attachments, and questions section. The attachments field holds image file paths or base64 data URLs. The script loads them once for all questions, guessing MIME types and raising a ValueError on unsupported formats.
«Proporcione de 2 a 20 criterios por pregunta.»
The questions section maps each query to a type: choice, noul, or score. Choices are lettered options like [A] billing [B] shipping [C] returns. Booleans and ordinal levels are represented as lettered options too, with a range of 2 to 20 criteria allowed per question.
Envío de las solicitudes.
The script sends requests to two endpoints depending on the provider. For OpenAI, the endpoint is /responses and the content includes both text and image inputs. The request body sets top_p=1 to avoid pruning alternatives.
For llama.cpp, the endpoint is /chat/completions, and the content is text only. The body asks for a single completion token with temperature=0 and logprobs=true.
Cómo funciona.
The script handles image attachments by encoding them as base64 strings and attaching them to the request payload. The JSON structure includes the attachments field, which the author added to extend Jev’s documented request format. The MIME guessing happens in the script itself, where the author raises a ValueError on unsupported image file types.
La construcción del prompt es consistente tanto en preguntas de texto como de imagen. Cada pregunta se formula como una lista de opciones con letra, y se obliga al modelo a responder con una única letra que represente su elección. Las probabilidades logarítmicas devueltas con esa letra muestran la confianza del modelo en su selección.
Números de rendimiento.
El autor reporta alrededor de 1 fotograma por segundo en una Gemma 4 12B con una RTX 3090, con tres preguntas por fotograma. Contra OpenAI’s gpt-6-luna, la tasa desciende a alrededor de 0.2 FPS. La diferencia probablemente proviene de la conexión separada requerida para cada pregunta por fotograma a través del sistema de OpenAI.
Seguramente los modelos de visión por computador especializados son más eficientes, pero el enfoque del autor permanece en la flexibilidad: cambiar una condición describiéndola en texto plano.
Lo que muestra.
El script es una prueba de concepto, no una herramienta lista para producción. Funciona a través de proveedores, y el autor extendió el formato de solicitud de Jev con un campo personalizado, cargó imágenes desde rutas o URLs, y envolvió todo en un script que cualquiera puede ejecutar.
Los números de rendimiento importan. Un fotograma por segundo en una configuración potente es razonable para trabajos de previsualización, mientras que la tasa de OpenAI de 0.2 FPS muestra el costo de realizar un viaje de ida y vuelta a través de una API pública. La comparación con modelos especializados sugiere espacio para mejorar, pero el enfoque del autor en la flexibilidad sobre la eficiencia es claro.
El truco no es nuevo para todos. OpenAI’s logprobs cookbook documenta el enfoque, y proyectos similares que se pueden alojar de forma independiente como OpenJev y SemIf han estado construyendo sobre él. Pero el autor lo encontró nuevo.
La idea principal es sólida, y el código está abierto para cualquiera que quiera probarlo. El entusiasmo del autor es contagioso. Encontró un truco que no había visto antes, construyó un script a su alrededor y lo publicó para que otros lo usen. Esa es la esencia del hacker en acción.
Material fuente: “Una función Jev-like para envolver LLMs, incluyendo modelos de visión,” allanrbo.blogspot.com.
Recibe El Cuaderno.
Las mejores historias del día y cada veredicto nuevo, en español claro, en tu correo a las siete. Un correo al día, nada más.

