AI-translated from English; not yet reviewed by a fluent editor.
# Um wrapper de visão inspirado no Jev transforma perguntas sobre imagens em escolhas tipadas
> Um exemplo independente em Python usa probabilidades de tokens de um modelo de visão para retornar decisões tipadas a partir de imagens. As taxas com 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

AI-generated conceptual illustration by BIG CHANGE.
Um [exemplo em Python publicado em 25 de setembro pelo desenvolvedor Allan Riordan Boll](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) amplia uma solicitação de decisão no estilo Jev com anexos de imagem. Ele envia cada quadro da webcam a um modelo de visão, junto com perguntas curtas, e converte as probabilidades dos próximos tokens do modelo em uma resposta sim ou não, uma escolha ou uma pontuação. O exemplo é um wrapper independente, não um recurso de visão do Jev nem um teste do modelo do Jev.
O aspecto útil para desenvolvedores está no limite da técnica. Um modelo de visão pode responder a uma pergunta restrita sem escrever uma descrição, mas as probabilidades das opções retornadas dependem do prompt, das alternativas de tokens disponíveis e do modelo. A publicação oferece um padrão funcional para inspeção, não um estudo de precisão.
## A grande mudança
- **O que mudou:** Um desenvolvedor aplicou a imagens o formato de decisões pequenas associado ao Jev, usando modelos gerais de visão. A imagem é anexada a cada solicitação, enquanto uma resposta de uma letra transforma uma pergunta visual em um valor que o software consegue processar.
- **Por que isso importa:** Desenvolvedores podem alterar por texto o critério visual e receber um resultado tipado sem criar um classificador de imagens separado para cada pergunta. O exemplo abrange pessoas e plantas visíveis, ambiente interno ou externo e luminosidade; não demonstra com que confiabilidade essas avaliações se aplicam a outras câmeras ou cenas.
- **O que acompanhar:** A decisão prática é saber se o modelo e o endpoint escolhidos retornam as pontuações das alternativas de primeiro token exigidas com consistência suficiente para a tarefa. Antes de usar um resultado da webcam para acionar algo, é preciso medir conjuntamente a taxa de quadros e a qualidade das decisões em imagens representativas.
## Como funciona a decisão sobre a 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 ou não, `choice` para alternativas nomeadas e `score` para níveis ordenados. O script de Boll usa esses nomes e acrescenta o campo `attachments` com uma lista de caminhos de imagens ou URLs de dados em base64. Esse campo é uma extensão dele ao objeto de solicitação; o guia de início rápido citado descreve o estado em texto e não o documenta como entrada da API do Jev.
Para cada pergunta, o script monta um prompt com opções identificadas por letras, como `[A] true` e `[B] false`. Ele pede ao modelo que responda com a melhor letra e lê o primeiro token da saída, com seu `top_logprobs`. Em seguida, eleva as probabilidades logarítmicas retornadas à exponencial, normaliza os pesos entre as letras listadas e os mapeia de volta para o tipo da pergunta. Um `choice` retorna a opção com maior peso e sua distribuição. Um `noul` retorna o peso de `true`. Um `score` retorna uma média ponderada dos níveis ordenados. O script rejeita uma resposta se tokens de opção omitidos ainda puderem ter peso relevante.
A imagem é fornecida com cada pergunta. O exemplo envia solicitações separadas em vez de obter todas as respostas em uma única chamada ao modelo. A implementação para OpenAI usa a Responses API com `input_image`, `top_logprobs` e `message.output_text.logprobs`; a implementação local com llama.cpp usa Chat Completions com um item 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 em base64, e a [referência da Responses API](https://developers.openai.com/api/reference/resources/responses/methods/create) documenta a saída de probabilidades logarítmicas e o máximo de 20 alternativas retornadas por posição de token. A [documentação do servidor do llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) documenta URLs de imagem na interface de chat. Essas fontes sustentam o padrão de solicitação; não executamos o exemplo em nenhum dos dois endpoints.
## O que o exemplo com webcam mede
O script captura um quadro com OpenCV, codifica-o como JPEG e faz quatro perguntas: se há uma pessoa ou planta visível, se o ambiente é interno ou externo e qual é a luminosidade. Um processo em segundo plano avalia um quadro por vez enquanto a prévia continua. A configuração de câmera usa Linux V4L2; portanto, o arquivo publicado não fornece uma configuração de webcam portátil sem adaptações. O texto do artigo diz que são três perguntas por quadro, mas o código publicado contém quatro; a contagem aqui se baseia no código.
Boll relata cerca de **um quadro avaliado por segundo** com um modelo Gemma 4 12B QAT servido localmente em uma RTX 3090, e cerca de **0,2 quadro por segundo** usando o GPT-6 Luna hospedado. Ele sugere que conexões repetidas podem contribuir para o resultado do serviço hospedado. A publicação não apresenta uma comparação controlada de hardware, rede, tamanho da imagem, cache, precisão ou tempo de solicitação. Esses números descrevem a configuração e o código do autor, não uma classificação geral de velocidade dos modelos. [A OpenAI lista o GPT-6 Luna como compatível com entrada de imagem](https://developers.openai.com/api/docs/models/gpt-6-luna), e as [orientações para modelos](https://developers.openai.com/api/docs/guides/latest-model) dizem que o Luna é compatível com a configuração de esforço de raciocínio `none` usada pelo exemplo.
Para quem adaptar o script, as primeiras verificações são concretas: confirmar se o modelo aceita imagens e expõe as alternativas exigidas para o primeiro token; verificar se todas as letras de opção aparecem; e avaliar as decisões retornadas em imagens rotuladas da câmera ou do conjunto de dados pretendido. Os pesos normalizados são relativos aos tokens de letras listados. Sozinhos, não são probabilidades medidas de que uma avaliação visual esteja correta. O [cookbook antigo de logprobs](https://developers.openai.com/cookbook/examples/using_logprobs) da OpenAI explica a ideia de probabilidades de tokens, mas está marcado como arquivado e pode conter exemplos de API desatualizados.
Este wrapper também esclarece o que um resultado tipado deixa a cargo do código da aplicação. O modelo avalia a imagem fornecida segundo o critério escrito. A aplicação escolhe os quadros, lida com pontuações ausentes e decide se algum resultado é seguro o bastante para gerar uma ação. O exemplo de Boll exibe uma tabela; não relata uma ação automatizada nem uma implantação medida.
## Fontes e leituras complementares
- [Allan Riordan Boll, “Um wrapper inspirado no Jev para LLMs, incluindo modelos de visão”, 25 de setembro de 2026](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html): exemplo original em Python, fluxo com webcam e taxas de quadros relatadas pelo autor. O texto diz que são três perguntas por quadro; o código define quatro. Os tempos não são um benchmark controlado nem independente.
- [TypeSafe AI, guia de início rápido do Jev](https://docs.typesafe.ai/introduction/quickstart): documenta estado em texto e os tipos de pergunta `noul`, `choice` e `score`. Não documenta o campo personalizado `attachments` do autor como recurso da API do Jev.
- [OpenAI, Imagens e visão](https://developers.openai.com/api/docs/guides/images-vision): documenta `input_image`, URLs de imagem e URLs de dados em base64 para entrada de visão. [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 retornadas.
- [OpenAI, GPT-6 Luna e orientações para modelos](https://developers.openai.com/api/docs/models/gpt-6-luna): confirma a entrada de imagem e o esforço de raciocínio `none` do modelo; as [orientações para modelos](https://developers.openai.com/api/docs/guides/latest-model) detalham a compatibilidade dos parâmetros. Esses documentos não verificam a taxa de quadros informada pelo autor do blog.
- [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 imagem. Ainda é preciso verificar o suporte do backend e a lista de tokens retornada na versão e no modelo exatos em uso.
- [Cookbook da OpenAI, Uso de logprobs](https://developers.openai.com/cookbook/examples/using_logprobs): contextualiza probabilidades de tokens. A OpenAI marca esse exemplo do cookbook como arquivado e alerta que alguns modelos ou APIs podem estar desatualizados.
## Sources
- [Allan Riordan Boll: Um wrapper inspirado no Jev para LLMs, incluindo modelos de visão](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) — Código Python independente e observações de webcam relatadas pelo autor. O código define quatro perguntas, embora o texto ao redor diga três; não há benchmark controlado nem estudo independente de precisão.
- [TypeSafe AI: guia de início rápido do Jev](https://docs.typesafe.ai/introduction/quickstart) — Documenta estado em texto, tipos de pergunta e um corpo de solicitação de exemplo. O autor do blog acrescenta anexos ao seu próprio objeto de solicitação inspirado no Jev; o guia não documenta esse campo.
- [OpenAI: Imagens e visão](https://developers.openai.com/api/docs/guides/images-vision) — Documenta entrada de imagens e URLs de dados em base64. Sustenta o padrão de solicitação, não a taxa de quadros observada pelo autor.
- [OpenAI: Criar uma resposta do modelo](https://developers.openai.com/api/reference/resources/responses/methods/create) — Documenta entradas de imagem, message.output_text.logprobs e até 20 principais probabilidades logarítmicas por posição de token, às vezes menos.
- [OpenAI: GPT-6 Luna e orientações para modelos](https://developers.openai.com/api/docs/models/gpt-6-luna) — Lista entrada de imagem e esforço de raciocínio none; as orientações da OpenAI explicam limites de parâmetros logprobs conforme o esforço.
- [README do servidor llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) — Documenta o endpoint de chat compatível com OpenAI e a entrada image_url. A versão exata do backend e do modelo não foi testada de forma independente aqui.
- [Cookbook da OpenAI: Uso de logprobs](https://developers.openai.com/cookbook/examples/using_logprobs) — Contexto sobre probabilidades de tokens. A OpenAI marca o exemplo como arquivado e possivelmente desatualizado para os modelos ou APIs atuais.
Newsletter da BIG CHANGE
A visão ampla, no seu ritmo.
Matérias recentes sobre IA e robótica, mudanças que merecem atenção e ideias práticas para usar. Escolha um briefing diário, um resumo semanal ou uma perspectiva mensal.
Next scheduled send (UTC): . Your first edition arrives at the next scheduled send after you confirm.
Sua privacidade, sua escolha.
O armazenamento necessário ajuda a proteger o site e a lembrar suas escolhas. O Google Analytics opcional permanece desativado até você autorizá-lo. Você pode ler todas as matérias usando apenas o armazenamento necessário. Detalhes de privacidade