O MUNDO NÃO ESTÁ PARADO.RSS
BIG CHANGE.

Edição Markdown

AI-translated from English; not yet reviewed by a fluent editor.

# Um wrapper de visão ao estilo Jev transforma perguntas sobre imagens em escolhas tipadas

> Um exemplo independente em Python usa probabilidades de tokens de um modelo de visão para devolver decisões tipadas a partir de imagens. As taxas da webcam são relatadas pelo autor e a precisão não foi testada.

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

![Conceptual charcoal illustration of a webcam clipped to a monitor and facing a leafy plant on a shelf.](https://bigchange.ai/api/media/file/jev-vision-webcam-plant-hero-v1.png)
AI-generated conceptual illustration by BIG CHANGE.

Um [Exemplo em Python publicado a 25 de setembro pelo programador Allan Riordan Boll](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) alarga um pedido de decisão ao estilo Jev com anexos de imagem. Envia cada fotograma da webcam para um modelo de visão juntamente com perguntas curtas e converte as probabilidades do token seguinte do modelo num valor sim/não, numa escolha ou numa pontuação. O exemplo é um wrapper independente, não uma funcionalidade de visão do Jev nem um teste ao modelo do Jev.

O aspeto útil para os programadores é o limite da técnica. Um modelo de visão pode responder a uma pergunta condicionada sem escrever uma descrição, mas as probabilidades das opções devolvidas dependem do prompt, das alternativas de tokens disponíveis e do modelo. A publicação apresenta um padrão funcional para analisar, não um estudo de precisão.

## A grande mudança

- **O que mudou:**Um programador aplicou a imagens, com modelos gerais de visão, o formato de pequenas decisões associado ao Jev. A imagem é anexada a cada pedido e uma resposta de uma letra transforma uma pergunta visual num valor que o software pode processar.
- **Porque é importante:**Os programadores podem alterar em texto o critério visual e receber um resultado tipado sem criar um classificador de imagens separado para cada pergunta. Este exemplo abrange a presença visível de pessoas e plantas, o contexto interior ou exterior e a luminosidade; não demonstra com que fiabilidade esses juízos se aplicam a outras câmaras ou cenas.
- **O que acompanhar:**A decisão prática é saber se o modelo e o endpoint escolhidos devolvem as pontuações dos tokens alternativos necessários com consistência suficiente para a tarefa. O débito de fotogramas e a qualidade das decisões têm de ser medidos em conjunto com imagens representativas antes de um resultado da webcam desencadear uma ação.

## Como funciona a decisão baseada na imagem

[O guia de início rápido do Jev da TypeSafe AI](https://docs.typesafe.ai/introduction/quickstart) documenta um `state` e um conjunto de `questions`: `noul` para um valor sim/não, `choice` para alternativas com nome e `score` para níveis ordenados. O script de Boll usa esses nomes e acrescenta um array de caminhos de imagens ou URLs de dados base64, o `attachments`. Esse campo é uma extensão que o autor fez ao objeto do pedido; o guia de início rápido do Jev citado descreve estado textual e não documenta esse campo como entrada da API Jev.

Para cada pergunta, o script cria um prompt com opções identificadas por letras, como `[A] true` e `[B] false`. Pede ao modelo que responda com a melhor letra e lê os primeiros `top_logprobs` do token de saída. Eleva as probabilidades logarítmicas devolvidas, normaliza os pesos entre as letras listadas e associa-os ao tipo de pergunta. Um `choice` devolve a opção com maior peso e a respetiva distribuição. Um `noul` devolve o peso de `true`. Um `score` devolve uma média ponderada dos níveis ordenados. O script rejeita uma resposta quando os tokens de opções omitidos ainda podem ter um peso significativo.

A imagem é fornecida com cada pergunta. O exemplo envia pedidos separados em vez de obter todas as respostas numa única chamada ao modelo. O percurso OpenAI usa a Responses API com `input_image`, `top_logprobs` e `message.output_text.logprobs`; o percurso local do llama.cpp usa Chat Completions com um elemento de conteúdo `image_url` e probabilidades logarítmicas. [O guia de imagens da OpenAI](https://developers.openai.com/api/docs/guides/images-vision) documenta URLs de dados de imagem base64, e a sua [referência da Responses API](https://developers.openai.com/api/reference/resources/responses/methods/create) documenta a saída de probabilidades logarítmicas e um máximo de 20 alternativas devolvidas por posição de token. [A documentação do servidor llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) documenta URLs de imagens na interface de chat. Estas fontes sustentam o padrão do pedido; não executámos o exemplo em nenhum dos endpoints.

## O que mede o exemplo da webcam

O script captura um fotograma com OpenCV, codifica-o como JPEG e faz quatro perguntas: se é visível uma pessoa ou uma planta, se o cenário é interior ou exterior e qual é o nível de luminosidade. Um processo em segundo plano avalia um fotograma de cada vez enquanto a pré-visualização continua. A configuração da câmara usa Linux V4L2, pelo que o ficheiro publicado não constitui uma configuração de webcam portátil sem alterações. O texto do artigo refere três perguntas por fotograma, mas o código publicado contém quatro; a contagem aqui baseia-se no código.

Boll relata cerca de **um fotograma avaliado por segundo** com um modelo Gemma 4 12B QAT servido localmente numa RTX 3090 e cerca de **0,2 fotogramas por segundo** com o GPT-6 Luna alojado. Sugere que as ligações repetidas podem contribuir para o resultado alojado. A publicação não apresenta uma comparação controlada de hardware, rede, tamanho da imagem, cache, precisão ou tempo dos pedidos. Estes números descrevem a configuração e o código deste autor, não uma classificação geral da velocidade dos modelos. [A OpenAI indica que o GPT-6 Luna aceita entradas de imagem](https://developers.openai.com/api/docs/models/gpt-6-luna), e o seu [guia do modelo](https://developers.openai.com/api/docs/guides/latest-model) diz que o Luna suporta a definição de `none` usada pelo exemplo.

Para um programador que adapte o script, as primeiras verificações são concretas: confirmar que o modelo aceita imagens e expõe as alternativas necessárias do primeiro token; verificar se aparecem todas as letras das opções; e avaliar as decisões devolvidas com imagens etiquetadas da câmara ou do conjunto de dados pretendido. Os pesos normalizados são relativos aos tokens de letras listados. Por si só, não são probabilidades medidas de que um juízo visual esteja correto. O [cookbook antigo de logprobs ](https://developers.openai.com/cookbook/examples/using_logprobs)explica a ideia das probabilidades dos tokens, mas está assinalado como arquivado e pode conter exemplos de API desatualizados.

Este wrapper também esclarece o que cabe ao código da aplicação depois de obter um resultado tipado. O modelo avalia a imagem fornecida segundo o critério escrito. A aplicação escolhe os fotogramas, trata as pontuações em falta e decide se algum resultado é suficientemente seguro para desencadear uma ação. O exemplo de Boll imprime uma tabela; não relata uma ação automatizada nem uma implementação medida.

## Fontes e leituras adicionais

- [Allan Riordan Boll, “A Jev-like wrapper for LLMs, including vision models”, 25 de setembro de 2026](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html): exemplo original em Python, fluxo de trabalho da webcam e taxas de fotogramas relatadas pelo autor. O texto refere três perguntas por fotograma; o código define quatro. Os tempos não constituem um benchmark independente ou controlado.
- [TypeSafe AI, guia de início rápido do Jev](https://docs.typesafe.ai/introduction/quickstart): documenta o estado textual e os tipos de perguntas `noul`, `choice` e `score`. Não documenta o campo personalizado `attachments` do autor como funcionalidade da API Jev.
- [OpenAI, Images and vision](https://developers.openai.com/api/docs/guides/images-vision): documenta `input_image`, URLs de imagens e URLs de dados base64 para entradas de visão. [A referência da Responses API](https://developers.openai.com/api/reference/resources/responses/methods/create) descreve `message.output_text.logprobs` e o limite de alternativas devolvidas.
- [OpenAI, modelo GPT-6 Luna e guia do modelo](https://developers.openai.com/api/docs/models/gpt-6-luna): confirma a entrada de imagens e a definição de `none` raciocínio do modelo; o [guia do modelo](https://developers.openai.com/api/docs/guides/latest-model) detalha a compatibilidade dos parâmetros. Estes documentos não verificam o débito relatado pelo autor do blogue.
- [Documentação do servidor llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md): descreve o endpoint de chat compatível com OpenAI e a entrada de URLs de imagens. É necessário confirmar o suporte do backend e as listas de tokens com a versão e o modelo exatos.
- [OpenAI Cookbook, Using logprobs](https://developers.openai.com/cookbook/examples/using_logprobs): explicação contextual das probabilidades de tokens. A OpenAI assinala esta receita como arquivada e avisa que alguns modelos ou APIs podem estar desatualizados.

## Sources

- [Allan Riordan Boll: A Jev-like wrapper for LLMs, including vision models](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) — Código Python original independente e observações de webcam relatadas pelo autor. O código define quatro perguntas, embora o texto à volta diga três; não há benchmark controlado nem estudo independente de precisão.
- [TypeSafe AI: Jev quick start](https://docs.typesafe.ai/introduction/quickstart) — Documenta o estado textual, os tipos de perguntas e um exemplo do corpo do pedido. O autor do blogue acrescenta anexos ao seu próprio objeto de pedido ao estilo Jev; este guia de início rápido não documenta esse campo.
- [OpenAI: Images and vision](https://developers.openai.com/api/docs/guides/images-vision) — Documenta entradas de imagem e URLs de dados base64. Sustenta o padrão do pedido, não o débito observado pelo autor.
- [OpenAI: Create a model response](https://developers.openai.com/api/reference/resources/responses/methods/create) — Documenta entradas de imagem, message.output_text.logprobs e até 20 probabilidades logarítmicas principais por posição de token, por vezes menos.
- [OpenAI: GPT-6 Luna e guia do modelo](https://developers.openai.com/api/docs/models/gpt-6-luna) — Indica a entrada de imagem e o esforço de raciocínio none; o guia de modelos da OpenAI explica os limites dos parâmetros logprob conforme o esforço.
- [README do servidor llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) — Documenta um endpoint de chat compatível com OpenAI e entrada image_url. A versão exata do backend/modelo não foi testada de forma independente neste trabalho.
- [OpenAI Cookbook: Using logprobs](https://developers.openai.com/cookbook/examples/using_logprobs) — Contextualiza as probabilidades de tokens. A OpenAI assinala este exemplo do Cookbook como arquivado e possivelmente desatualizado para os modelos ou APIs atuais.