২৫ সেপ্টেম্বর প্রকাশিত ডেভেলপার Allan Riordan Boll-এর Python উদাহরণটি 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 নথিতে একটি 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-এ base64 image data URL-এর বর্ণনা আছে, আর তাদের Responses reference-এ log probability output এবং প্রতি token অবস্থানে সর্বোচ্চ ২০টি ফেরত আসা বিকল্পের নথি আছে। llama.cpp server-এর documentation-এ 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 নেওয়া যায় এবং তাদের model নির্দেশিকায় বলা হয়েছে, Luna উদাহরণে ব্যবহৃত none reasoning setting সমর্থন করে।
script-টি মানিয়ে নেওয়া ডেভেলপারের জন্য প্রথম যাচাইগুলো স্পষ্ট: নির্বাচিত model-এ image input চলে এবং প্রয়োজনীয় first-token বিকল্পগুলোর score পাওয়া যায় কি না নিশ্চিত করুন; সব বিকল্প-অক্ষর ফেরত এসেছে কি না দেখুন; তারপর নির্দিষ্ট camera বা dataset-এর লেবেলযুক্ত ছবিতে সিদ্ধান্তগুলো মূল্যায়ন করুন। স্বাভাবিকীকৃত weight তালিকাভুক্ত অক্ষরের তুলনামূলক মান। নিজে থেকে এগুলো দৃশ্য-বিচারটি সঠিক হওয়ার মাপা probability নয়। OpenAI-র পুরোনো logprobs cookbook 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,” ২৫ সেপ্টেম্বর ২০২৬। মূল Python উদাহরণ, webcam workflow এবং লেখকের জানানো frame rate-এর উৎস। গদ্যে প্রতি frame-এ তিনটি প্রশ্ন বলা হলেও code-এ চারটি আছে। সময়ের হিসাব কোনো স্বাধীন বা নিয়ন্ত্রিত benchmark নয়।
- TypeSafe AI, Jev quick start-এ text state এবং
noul,choiceএবংscoreধরনের প্রশ্নের নথি আছে। লেখকের নিজস্বattachmentsfield-কে Jev API-র feature হিসেবে সেখানে নথিভুক্ত করা হয়নি। - OpenAI, Images and vision-এ
input_image, image URL ও vision input-এর জন্য base64 data URL ব্যবহারের বিবরণ রয়েছে। Responses API reference-এmessage.output_text.logprobsএবং ফেরত আসা বিকল্পের সীমা বর্ণনা করা হয়েছে। - OpenAI, GPT-6 Luna model ও model guidance-এ image input এবং model-এর
nonereasoning setting নিশ্চিত করা হয়েছে; model নির্দেশিকা parameter-এর সামঞ্জস্য সম্পর্কে বিস্তারিত জানায়। এই নথিগুলো blog-লেখকের frame rate যাচাই করে না। - llama.cpp server-এর README-এ OpenAI-সামঞ্জস্যপূর্ণ chat endpoint এবং image_url input-এর বিবরণ আছে। ব্যবহৃত নির্দিষ্ট version ও model-এ backend support এবং ফেরত আসা token-এর তালিকা এখনও যাচাই করা দরকার।
- OpenAI Cookbook, Using logprobs token probability-র পটভূমি ব্যাখ্যা করে। OpenAI-র মতে, এই recipe archive করা হয়েছে এবং কিছু model বা API-র জন্য পুরোনো হতে পারে।



