МИР НЕ СТОИТ НА МЕСТЕ.RSS
BIG CHANGE.

Версия Markdown

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

# Обёртка для зрения по образцу Jev превращает вопросы об изображениях в типизированные ответы

> Независимый пример на Python использует вероятности токенов модели с поддержкой изображений, чтобы возвращать типизированные решения по картинке. Частоту кадров с веб-камеры сообщает автор; точность не проверялась.

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.

Пример [на Python, опубликованный 25 сентября разработчиком Алланом Риорданом Боллом](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) расширяет запрос для принятия небольших решений в стиле Jev, добавляя вложения с изображениями. Он отправляет каждый кадр веб-камеры модели зрения вместе с короткими вопросами, а затем преобразует вероятности следующего токена в ответ «да/нет», вариант выбора или оценку. Это независимая обёртка, а не функция Jev для работы с изображениями или проверка модели Jev.

Для разработчиков полезно понимать границы этого метода. Модель зрения может ответить на вопрос с ограниченным набором вариантов, не создавая описание изображения. Однако вероятности вариантов зависят от формулировки запроса, доступных альтернативных токенов и модели. В публикации показан рабочий шаблон, а не исследование точности.

## Главное изменение

- **Что изменилось:** Разработчик применил к изображениям формат небольших решений, связанный с Jev, используя универсальные модели зрения. Изображение прикрепляется к каждому запросу, а односимвольный ответ превращает зрительный вопрос в значение, которое может обработать программа.
- **Почему это важно:** Разработчики могут менять критерий оценки изображения в тексте и получать типизированный результат, не создавая отдельный классификатор для каждого вопроса. В этом примере рассматриваются видимые люди и растения, обстановка и яркость; он не устанавливает, насколько надёжно эти оценки переносятся на другие камеры и сцены.
- **За чем следить:** Практический вопрос — возвращает ли выбранная модель и конечная точка API нужные оценки альтернативных токенов с достаточной стабильностью для задачи. Пропускную способность кадров и качество решений нужно измерять вместе на репрезентативных изображениях, прежде чем результат веб-камеры будет запускать какое-либо действие.

## Как работает решение по изображению

[Краткое руководство Jev от TypeSafe AI](https://docs.typesafe.ai/introduction/quickstart) описывает `state` и набор типизированных `questions`: `noul` для значения «да/нет», `choice` для именованных альтернатив и `score` для упорядоченных уровней. Скрипт Болла использует эти названия и добавляет массив `attachments` с изображениями — путями к файлам или URL данных в формате base64. Это дополнение автора к его собственному объекту запроса; в цитируемом кратком руководстве Jev описано текстовое состояние, но не поле вложений как вход API Jev.

Для каждого вопроса скрипт формирует варианты, обозначенные буквами, например `[A] true` и `[B] false`. Модель просят ответить наиболее подходящей буквой, а скрипт считывает logprobs первого выходного токена `top_logprobs`. Затем он преобразует логарифмические вероятности в обычные, нормализует веса перечисленных букв и сопоставляет их с типом вопроса. Для типа `choice` возвращается вариант с наибольшим весом и распределение весов. Для типа `noul` возвращается вес варианта `true`. Тип `score` возвращает среднее значение, взвешенное по упорядоченным уровням. Скрипт отклоняет ответ, если пропущенные токены вариантов всё ещё могут иметь существенный вес.

Изображение передаётся вместе с каждым вопросом. В примере отправляются отдельные запросы, а не один общий вызов модели. В варианте OpenAI используется Responses API с `input_image`, `top_logprobs` и `message.output_text.logprobs`; локальный вариант на llama.cpp использует Chat Completions с `image_url` в элементе содержимого и логарифмическими вероятностями. [Руководство OpenAI по изображениям](https://developers.openai.com/api/docs/guides/images-vision) описывает URL изображений в формате base64; в [справочнике Responses API](https://developers.openai.com/api/reference/resources/responses/methods/create) описаны вывод logprobs и максимум в 20 альтернатив для одной позиции токена. [Документация сервера llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) описывает URL изображений в его интерфейсе чата. Эти источники подтверждают схему запроса; мы не запускали пример ни на одном из этих двух API.

## Что показывает пример с веб-камерой

Скрипт захватывает кадр через OpenCV, кодирует его в JPEG и задаёт четыре вопроса: виден ли человек или растение, находится ли сцена в помещении или на улице и насколько она яркая. Фоновый процесс анализирует по одному кадру, пока идёт предпросмотр. Настройка камеры использует Linux V4L2, поэтому опубликованный файл не является переносимой конфигурацией веб-камеры без изменений. В тексте статьи говорится о трёх вопросах на кадр, но опубликованный код содержит четыре; здесь число взято из кода.

Болл сообщает примерно о **одном обработанном кадре в секунду** при локальном запуске квантованной Gemma 4 12B QAT на RTX 3090 и примерно о **0,2 кадра в секунду** при использовании облачной GPT-6 Luna. Автор предполагает, что на облачный результат могут влиять повторные подключения. В публикации нет контролируемого сравнения оборудования, сети, размера изображений, кэширования, точности или времени запросов. Эти цифры относятся к настройке и коду автора, а не к общему ранжированию скорости моделей. [OpenAI указывает, что GPT-6 Luna принимает изображения](https://developers.openai.com/api/docs/models/gpt-6-luna), а в её [руководстве по модели](https://developers.openai.com/api/docs/guides/latest-model) сказано, что Luna поддерживает использованную в примере настройку рассуждений `none`.

Разработчику, который адаптирует скрипт, стоит сначала проверить: принимает ли модель изображения и предоставляет ли нужные оценки альтернатив первого токена; присутствуют ли все буквы вариантов; затем измерить решения на размеченных изображениях с нужной камеры или набора данных. Нормализованные веса относятся к перечисленным буквенным токенам. Сами по себе они не являются измеренной вероятностью правильности зрительной оценки. В [архивном руководстве OpenAI по logprobs](https://developers.openai.com/cookbook/examples/using_logprobs) объясняется идея вероятностей токенов, однако пример помечен как устаревший и может содержать неактуальные примеры API.

Эта обёртка также показывает, какие задачи остаются за приложением после получения типизированного результата. Модель оценивает переданное изображение по заданному критерию. Приложение выбирает кадры, обрабатывает отсутствие оценок и решает, достаточно ли безопасен результат для действия. В примере Болла выводится таблица; автоматические действия или измеренное применение в реальной системе не описаны.

## Источники и дополнительная литература

- [Аллан Риордан Болл, «Обёртка для LLM по образцу Jev, включая модели зрения», 25 сентября 2026 года](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html): исходный пример на Python, работа с веб-камерой и заявленная автором частота кадров. В тексте сказано о трёх вопросах на кадр, в коде задано четыре. Это не независимый и не контролируемый тест производительности.
- [TypeSafe AI, краткое руководство Jev](https://docs.typesafe.ai/introduction/quickstart): описывает текстовое состояние и типы вопросов `noul`, `choice` и `score`. В нём не описано пользовательское поле `attachments` как функция API Jev.
- [OpenAI, «Изображения и зрение»](https://developers.openai.com/api/docs/guides/images-vision): описывает `input_image`, URL изображений и URL данных base64 для ввода изображений. [Справочник Responses API](https://developers.openai.com/api/reference/resources/responses/methods/create) описывает `message.output_text.logprobs` и ограничение на число возвращаемых альтернатив.
- [OpenAI, GPT-6 Luna и руководство по модели](https://developers.openai.com/api/docs/models/gpt-6-luna): подтверждает ввод изображений и настройку рассуждений модели `none`; в [руководстве по модели](https://developers.openai.com/api/docs/guides/latest-model) описана совместимость параметров. Эти документы не проверяют заявленную автором пропускную способность.
- [Документация сервера llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md): описывает совместимый с OpenAI конечный адрес чата и вход изображения по URL. Поддержку конкретной версии серверной части и список возвращаемых токенов нужно проверять на используемых версиях и модели.
- [Кулинарная книга OpenAI, «Использование logprobs»](https://developers.openai.com/cookbook/examples/using_logprobs): справочное объяснение вероятностей токенов. OpenAI помечает этот пример как архивный и предупреждает, что он может быть устаревшим для нынешних моделей или API.

## Sources

- [Аллан Риордан Болл: «Обёртка для LLM по образцу Jev, включая модели зрения»](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) — Исходный независимый код на Python и наблюдения автора за веб-камерой. В коде задано четыре вопроса, хотя в тексте говорится о трёх; контролируемого теста или независимой оценки точности нет.
- [TypeSafe AI: краткое руководство Jev](https://docs.typesafe.ai/introduction/quickstart) — Описывает текстовое состояние, типы вопросов и пример тела запроса. Автор блога добавляет вложения к собственному объекту запроса по образцу Jev; в кратком руководстве это поле не документировано.
- [OpenAI: «Изображения и зрение»](https://developers.openai.com/api/docs/guides/images-vision) — Описывает ввод изображений и URL данных base64. Подтверждает схему запроса, но не наблюдаемую автором пропускную способность.
- [OpenAI: «Создание ответа модели»](https://developers.openai.com/api/reference/resources/responses/methods/create) — Описывает входные изображения, message.output_text.logprobs и до 20 наиболее вероятных токенов для каждой позиции; иногда возвращается меньше.
- [OpenAI: GPT-6 Luna и руководство по модели](https://developers.openai.com/api/docs/models/gpt-6-luna) — Перечисляет ввод изображений и уровень рассуждений none; руководство OpenAI объясняет ограничения параметров logprobs для разных уровней рассуждений.
- [README сервера llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) — Описывает совместимый с OpenAI конечный адрес чата и ввод image_url. Точную версию серверной части и модели здесь не проверяли.
- [Кулинарная книга OpenAI: «Использование logprobs»](https://developers.openai.com/cookbook/examples/using_logprobs) — Справочный материал о вероятностях токенов. OpenAI помечает пример как архивный и предупреждает, что часть сведений о моделях или API может быть устаревшей.