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

# Jev-ধাঁচের একটি vision wrapper ছবির প্রশ্নকে নির্দিষ্ট ধরনের সিদ্ধান্তে রূপ দেয়

> একটি স্বাধীন Python উদাহরণে vision model-এর token probability ব্যবহার করে ছবি থেকে নির্দিষ্ট ধরনের সিদ্ধান্ত ফেরত দেওয়া হয়। লেখকের জানানো webcam গতি রয়েছে, তবে নির্ভুলতা পরীক্ষা করা হয়নি।

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.

২৫ সেপ্টেম্বর প্রকাশিত [ডেভেলপার Allan Riordan Boll-এর Python উদাহরণটি](https://allanrbo.blogspot.com/2026/09/a-jev-like-wrapper-for-llms-including.html) Jev-ধাঁচের সিদ্ধান্ত-অনুরোধে ছবির সংযুক্তি যোগ করে। প্রতিটি webcam frame ছোট প্রশ্নসহ vision model-এ পাঠানো হয়; এরপর মডেলের পরবর্তী token-এর probability-কে হ্যাঁ/না মান, কোনো বিকল্প বা score-এ রূপ দেওয়া হয়। এটি একটি স্বতন্ত্র wrapper, Jev-এর vision feature নয় এবং Jev-এর model-এর পরীক্ষাও নয়।

ডেভেলপারদের জন্য এই কৌশলের সীমাটি বোঝা জরুরি। বর্ণনা না লিখেও vision model-কে নির্দিষ্ট প্রশ্নের উত্তর দিতে বলা যায়; তবে ফেরত আসা বিকল্পগুলোর probability prompt, উপলভ্য token-বিকল্প এবং model-এর ওপর নির্ভর করে। পোস্টটি পরীক্ষা করে দেখার মতো একটি কার্যকর ধরন দেয়, নির্ভুলতার গবেষণা নয়।

## মূল পরিবর্তন

- **কী বদলেছে:** একজন ডেভেলপার Jev-এর সঙ্গে যুক্ত ছোট সিদ্ধান্ত-ফরম্যাটটি সাধারণ vision model দিয়ে ছবিতে প্রয়োগ করেছেন। প্রতিটি অনুরোধে ছবি যুক্ত থাকে, আর এক অক্ষরের উত্তর দৃশ্য-সম্পর্কিত প্রশ্নকে এমন মানে রূপ দেয় যা সফটওয়্যার প্রক্রিয়া করতে পারে।
- **কেন গুরুত্বপূর্ণ:** ডেভেলপাররা লেখায় দৃশ্য যাচাইয়ের মানদণ্ড বদলে প্রতিটি প্রশ্নের জন্য আলাদা image classifier তৈরি না করেই নির্দিষ্ট ধরনের ফল পেতে পারেন। এই উদাহরণে দৃশ্যমান মানুষ, গাছপালা, ঘরের ভেতর না বাইরে এবং আলোর উজ্জ্বলতা বিচার করা হয়েছে; অন্য camera বা দৃশ্যে এই বিচার কতটা নির্ভরযোগ্যভাবে প্রযোজ্য হবে, তা এটি প্রতিষ্ঠা করে না।
- **কী নজরে রাখবেন:** নির্বাচিত model ও endpoint ধারাবাহিকভাবে প্রয়োজনীয় বিকল্প-token-এর score ফেরত দেয় কি না, সেটিই ব্যবহারিক সিদ্ধান্ত। webcam ফলাফলের ভিত্তিতে কোনো কাজ করানোর আগে প্রতিনিধিত্বমূলক ছবিতে frame-প্রতি গতি ও সিদ্ধান্তের মান একসঙ্গে মাপা দরকার।

## ছবি থেকে সিদ্ধান্ত কীভাবে আসে

[TypeSafe AI-এর Jev quick start](https://docs.typesafe.ai/introduction/quickstart) নথিতে একটি `state` এবং typed `questions`-এর ধরন: `noul` হ্যাঁ/না উত্তরের জন্য, `choice` নামযুক্ত বিকল্পের জন্য এবং `score` ক্রম অনুযায়ী সাজানো স্তরের জন্য। Boll-এর script এই নামগুলো ব্যবহার করে এবং অনুরোধের object-এ নিজের একটি `attachments` array যোগ করে, যাতে ছবির path বা base64 data URL থাকে। এই field-টি তাঁর সংযোজন; উদ্ধৃত Jev quick start-এ text state-এর কথা আছে, কিন্তু এটিকে Jev API-র input হিসেবে নথিভুক্ত করা হয়নি।

প্রতিটি প্রশ্নে script অক্ষর-চিহ্নিত বিকল্পসহ prompt তৈরি করে; যেমন `[A] true` এবং `[B] false`। model-কে সেরা অক্ষরটি দিয়ে উত্তর দিতে বলা হয়, তারপর প্রথম output token-এর `top_logprobs` পড়া হয়। ফেরত আসা log probability-কে exponentiate করে script তালিকাভুক্ত অক্ষরগুলোর weight স্বাভাবিকীকরণ করে এবং প্রশ্নের ধরন অনুযায়ী সেগুলো ফেরত দেয়। `choice` হলে সবচেয়ে বেশি weight পাওয়া বিকল্প ও তার distribution ফেরত আসে। `noul` হলে `true`-এর weight ফেরত আসে। `score` হলে ক্রমানুসারে সাজানো স্তরগুলোর weighted average ফেরত আসে। কোনো বিকল্পের token বাদ পড়লেও সেটির weight তাৎপর্যপূর্ণ হতে পারে—এমন হলে script উত্তর প্রত্যাখ্যান করে।

প্রতিটি প্রশ্নের সঙ্গে ছবিটিও পাঠানো হয়। উদাহরণে একবারে একটি model call-এ সব উত্তর না নিয়ে আলাদা অনুরোধ পাঠানো হয়। OpenAI-র পথে Responses API-তে ব্যবহার করা হয়েছে `input_image`, `top_logprobs` এবং `message.output_text.logprobs`; স্থানীয় llama.cpp পথে Chat Completions-এর সঙ্গে ব্যবহার করা হয়েছে `image_url` content item এবং log probability। [OpenAI-র image guide](https://developers.openai.com/api/docs/guides/images-vision)-এ base64 image data URL-এর বর্ণনা আছে, আর তাদের [Responses reference](https://developers.openai.com/api/reference/resources/responses/methods/create)-এ log probability output এবং প্রতি token অবস্থানে সর্বোচ্চ ২০টি ফেরত আসা বিকল্পের নথি আছে। [llama.cpp server-এর documentation](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md)-এ chat interface-এ image URL ব্যবহারের বর্ণনা আছে। এসব সূত্র অনুরোধ পাঠানোর ধরন সমর্থন করে; আমরা কোনো endpoint-এ উদাহরণটি চালাইনি।

## webcam উদাহরণে কী মাপা হয়েছে

script-টি OpenCV দিয়ে একটি frame ধারণ করে, JPEG-এ রূপান্তর করে এবং চারটি প্রশ্ন করে: মানুষ দেখা যাচ্ছে কি না, গাছ দেখা যাচ্ছে কি না, দৃশ্যটি ঘরের ভেতরে না বাইরে, এবং আলো কতটা উজ্জ্বল। preview চলতে থাকলেও একটি background worker একবারে একটি frame যাচাই করে। camera-র সেটআপে Linux V4L2 ব্যবহার করা হয়েছে, তাই বদল না করে পোস্টের ফাইলটি সব webcam-এ চালানো যাবে না। নিবন্ধের লেখায় প্রতি frame-এ তিনটি প্রশ্নের কথা আছে, কিন্তু প্রকাশিত code-এ চারটি। এখানে গণনার ভিত্তি code-টি।

Boll-এর হিসাবে, RTX 3090-এ স্থানীয়ভাবে চালানো Gemma 4 12B QAT model-এ frame যাচাইয়ের হার ছিল প্রায় **প্রতি সেকেন্ডে একটি frame**, আর hosted GPT-6 Luna-র ক্ষেত্রে ছিল প্রায় **প্রতি সেকেন্ডে ০.২টি frame।** বারবার connection তৈরির ভূমিকা থাকতে পারে বলে তাঁর ধারণা। পোস্টে hardware, network, ছবির আকার, caching, accuracy বা request timing-এর নিয়ন্ত্রিত তুলনা দেওয়া হয়নি। সংখ্যাগুলো লেখকের setup ও code-এর বর্ণনা, model-গুলোর সাধারণ গতির ক্রম নয়। [OpenAI-র তথ্য অনুযায়ী GPT-6 Luna-তে image input নেওয়া যায়](https://developers.openai.com/api/docs/models/gpt-6-luna) এবং তাদের [model নির্দেশিকায়](https://developers.openai.com/api/docs/guides/latest-model) বলা হয়েছে, Luna উদাহরণে ব্যবহৃত `none` reasoning setting সমর্থন করে।

script-টি মানিয়ে নেওয়া ডেভেলপারের জন্য প্রথম যাচাইগুলো স্পষ্ট: নির্বাচিত model-এ image input চলে এবং প্রয়োজনীয় first-token বিকল্পগুলোর score পাওয়া যায় কি না নিশ্চিত করুন; সব বিকল্প-অক্ষর ফেরত এসেছে কি না দেখুন; তারপর নির্দিষ্ট camera বা dataset-এর লেবেলযুক্ত ছবিতে সিদ্ধান্তগুলো মূল্যায়ন করুন। স্বাভাবিকীকৃত weight তালিকাভুক্ত অক্ষরের তুলনামূলক মান। নিজে থেকে এগুলো দৃশ্য-বিচারটি সঠিক হওয়ার মাপা probability নয়। OpenAI-র [পুরোনো logprobs cookbook](https://developers.openai.com/cookbook/examples/using_logprobs) token probability-র ধারণা ব্যাখ্যা করে, তবে এটি archive করা হয়েছে এবং এতে API-র উদাহরণ পুরোনো হতে পারে।

এই wrapper-টিও দেখায়, নির্দিষ্ট ধরনের ফল পেলেও application code-এর কিছু দায়িত্ব থেকে যায়। দেওয়া ছবিকে লিখিত মানদণ্ডের সঙ্গে মিলিয়ে বিচার করে model। কোন frame নেওয়া হবে, score না এলে কী করা হবে এবং ফলাফলের ভিত্তিতে কাজ করা নিরাপদ কি না—সিদ্ধান্ত application-কে নিতে হয়। Boll-এর উদাহরণে একটি table ছাপা হয়; কোনো স্বয়ংক্রিয় পদক্ষেপ বা মাপা deployment-এর কথা নেই।

## সূত্র ও আরও পড়ুন

- [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)। মূল Python উদাহরণ, webcam workflow এবং লেখকের জানানো frame rate-এর উৎস। গদ্যে প্রতি frame-এ তিনটি প্রশ্ন বলা হলেও code-এ চারটি আছে। সময়ের হিসাব কোনো স্বাধীন বা নিয়ন্ত্রিত benchmark নয়।
- [TypeSafe AI, Jev quick start](https://docs.typesafe.ai/introduction/quickstart)-এ text state এবং `noul`, `choice` এবং `score` ধরনের প্রশ্নের নথি আছে। লেখকের নিজস্ব `attachments` field-কে Jev API-র feature হিসেবে সেখানে নথিভুক্ত করা হয়নি।
- [OpenAI, Images and vision](https://developers.openai.com/api/docs/guides/images-vision)-এ `input_image`, image URL ও vision input-এর জন্য base64 data URL ব্যবহারের বিবরণ রয়েছে। [Responses API reference](https://developers.openai.com/api/reference/resources/responses/methods/create)-এ `message.output_text.logprobs` এবং ফেরত আসা বিকল্পের সীমা বর্ণনা করা হয়েছে।
- [OpenAI, GPT-6 Luna model ও model guidance](https://developers.openai.com/api/docs/models/gpt-6-luna)-এ image input এবং model-এর `none` reasoning setting নিশ্চিত করা হয়েছে; [model নির্দেশিকা](https://developers.openai.com/api/docs/guides/latest-model) parameter-এর সামঞ্জস্য সম্পর্কে বিস্তারিত জানায়। এই নথিগুলো blog-লেখকের frame rate যাচাই করে না।
- [llama.cpp server-এর README](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md)-এ OpenAI-সামঞ্জস্যপূর্ণ chat endpoint এবং image\_url input-এর বিবরণ আছে। ব্যবহৃত নির্দিষ্ট version ও model-এ backend support এবং ফেরত আসা token-এর তালিকা এখনও যাচাই করা দরকার।
- [OpenAI Cookbook, Using logprobs](https://developers.openai.com/cookbook/examples/using_logprobs) token probability-র পটভূমি ব্যাখ্যা করে। OpenAI-র মতে, এই recipe archive করা হয়েছে এবং কিছু model বা API-র জন্য পুরোনো হতে পারে।

## 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) — স্বতন্ত্র Python code এবং লেখকের জানানো webcam-পর্যবেক্ষণের মূল উৎস। আশপাশের গদ্যে তিনটি প্রশ্ন বলা হলেও code-এ চারটি আছে; নিয়ন্ত্রিত benchmark বা স্বাধীন নির্ভুলতা-গবেষণা নেই।
- [TypeSafe AI: Jev quick start](https://docs.typesafe.ai/introduction/quickstart) — text state, প্রশ্নের ধরন ও নমুনা request body-এর নথি। blog-লেখক নিজের Jev-ধাঁচের request object-এ attachment যোগ করেছেন; quick start-এ সেই field নথিভুক্ত নেই।
- [OpenAI: Images and vision](https://developers.openai.com/api/docs/guides/images-vision) — image input ও base64 data URL-এর নথি। এটি request pattern সমর্থন করে, লেখকের দেখা গতি নয়।
- [OpenAI: Create a model response](https://developers.openai.com/api/reference/resources/responses/methods/create) — image input, message.output_text.logprobs এবং প্রতি token অবস্থানে সর্বোচ্চ ২০টি top log probability ফেরত দেওয়ার নথি; কখনও এর চেয়ে কমও ফেরে।
- [OpenAI: GPT-6 Luna এবং model guidance](https://developers.openai.com/api/docs/models/gpt-6-luna) — image input ও none reasoning effort-এর উল্লেখ আছে; effort অনুযায়ী logprob parameter-এর সীমা OpenAI-র model নির্দেশিকায় ব্যাখ্যা করা হয়েছে।
- [llama.cpp server README](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md) — OpenAI-সামঞ্জস্যপূর্ণ chat endpoint এবং image_url input-এর নথি। ব্যবহৃত নির্দিষ্ট backend/model version এখানে চালিয়ে যাচাই করা হয়নি।
- [OpenAI Cookbook: Using logprobs](https://developers.openai.com/cookbook/examples/using_logprobs) — token probability-র পটভূমি। OpenAI এই cookbook উদাহরণটিকে archive করা এবং বর্তমান model বা API-র জন্য সম্ভবত পুরোনো বলে চিহ্নিত করেছে।
