مثال بلغة Python نشره المطور Allan Riordan Boll في 25 سبتمبر يوسّع طلب اتخاذ القرار على طريقة Jev بإضافة صور. ويرسل كل إطار من كاميرا الويب إلى نموذج للرؤية مصحوباً بأسئلة قصيرة، ثم يحوّل احتمالات الرمز التالي في مخرجات النموذج إلى قيمة نعم/لا أو خيار أو درجة. وهذا غلاف مستقل، وليس ميزة رؤية في Jev ولا اختباراً لنموذج Jev.

تكمن الفائدة للمطورين في حدود هذه التقنية. إذ يمكن لنموذج الرؤية الإجابة عن سؤال مقيّد من دون كتابة وصف، لكن احتمالات الخيارات المعادة تعتمد على صياغة الطلب والرموز البديلة المتاحة والنموذج. ويقدم المنشور نمطاً عملياً يمكن فحصه، لا دراسة للدقة.

التغيير الأبرز

  • ما الذي تغيّر: طبّق مطور تنسيق القرارات الصغيرة المرتبط بـJev على الصور باستخدام نماذج رؤية عامة. وتُرفق الصورة بكل طلب، بينما تحوّل إجابة من حرف واحد سؤالاً بصرياً إلى قيمة يمكن للبرنامج التعامل معها.
  • لماذا يهم ذلك: يستطيع المطورون تغيير المعيار البصري نصياً والحصول على نتيجة محددة النوع من دون إنشاء مصنف صور منفصل لكل سؤال. ويغطي هذا المثال ظهور أشخاص أو نباتات، ومكان المشهد، ومستوى السطوع؛ لكنه لا يثبت مدى موثوقية نقل هذه الأحكام إلى كاميرات أو مشاهد أخرى.
  • ما الذي ينبغي متابعته: يتمثل القرار العملي في معرفة ما إذا كان النموذج ونقطة النهاية المختاران يعيدان درجات الرموز البديلة المطلوبة باتساق يكفي للمهمة. وينبغي قياس معدل الإطارات وجودة القرار معاً، على صور ممثلة، قبل أن تؤدي نتيجة كاميرا الويب إلى إجراء ما.

كيف يعمل القرار المستند إلى الصورة

دليل البدء السريع لـJev من TypeSafe AI يوثّق حالة state ومجموعة من الأسئلة المحددة الأنواع questions، وهي الأنواع التالية: noul لقيمة نعم/لا، choice للخيارات المسماة و score للمستويات المرتبة. ويستخدم سكريبت Boll هذه الأسماء ويضيف مصفوفة attachments تحتوي مسارات الصور أو عناوين URL لبيانات الصور بترميز base64. وهذا الحقل إضافة من Boll إلى كائن الطلب؛ فدليل Jev المذكور يصف حالة النص ولا يوثق الحقل بوصفه مدخلاً لواجهة Jev البرمجية.

يبني السكريبت لكل سؤال موجّهاً يتضمن خيارات بحروف، مثل [A] true و [B] false. ويطلب من النموذج الإجابة بأفضل حرف، ثم يقرأ أول حقل لاحتمالات الرمز التالي top_logprobs. ويرفع قيم الاحتمالات اللوغاريتمية المعادة إلى الأس، ويطبّع الأوزان بين الحروف المذكورة، ثم يعيد ربطها بنوع السؤال. ويعيد النوع choice الخيار ذا الوزن الأعلى وتوزيعه. أما noul فيعيد الوزن الخاص بـ true. أما score فيعيد متوسطاً مرجحاً للمستويات المرتبة. ويرفض السكريبت الإجابة إذا كان من الممكن أن تحمل رموز خيارات محذوفة وزناً مؤثراً.

تُرفق الصورة بكل سؤال. ويرسل المثال طلبات منفصلة بدلاً من الحصول على جميع الإجابات في استدعاء واحد للنموذج. ويستخدم مسار OpenAI واجهة Responses API مع input_image، top_logprobs و message.output_text.logprobs؛ أما مساره المحلي عبر llama.cpp فيستخدم Chat Completions مع image_url بوصفه عنصراً للمحتوى، إضافةً إلى احتمالات الرموز. دليل OpenAI للصور والرؤية يوثق عناوين URL لبيانات الصور بترميز base64، كما يوثق مرجع Responses API مخرجات الاحتمالات اللوغاريتمية والحد الأقصى البالغ 20 خياراً معاداً لكل موضع رمز. ويوثق دليل خادم llama.cpp عناوين URL للصور في واجهة المحادثة. تدعم هذه المصادر نمط الطلب؛ ولم ننفذ المثال على أي من نقطتي النهاية.

ما الذي يقيسه مثال كاميرا الويب

يلتقط السكريبت إطاراً باستخدام OpenCV، ويرمّزه بصيغة JPEG، ويطرح أربعة أسئلة: هل يظهر شخص أو نبات؟ وهل المكان داخلي أم خارجي؟ وما مستوى سطوعه؟ ويقيّم عامل في الخلفية إطاراً واحداً كل مرة بينما تستمر المعاينة. ويستخدم إعداد الكاميرا Linux V4L2، لذا لا يمكن تشغيل الملف المنشور على كاميرات الويب المختلفة بلا تعديلات. ويذكر نص المقال ثلاثة أسئلة لكل إطار، لكن الشيفرة المنشورة تتضمن أربعة؛ واعتمدنا الشيفرة أساساً لهذا العدد.

ويذكر Boll معدلًا يقارب إطاراً واحداً مُقيّماً في الثانية عند تشغيل نموذج Gemma 4 12B QAT محلياً على بطاقة RTX 3090، ونحو 0.2 إطار في الثانية باستخدام GPT-6 Luna المستضاف. ويرى أن تكرار الاتصالات قد يسهم في النتيجة المستضافة. ولا يقدم المنشور مقارنة مضبوطة للأجهزة أو الشبكة أو حجم الصور أو التخزين المؤقت أو الدقة أو توقيت الطلبات. وتصف هذه الأرقام إعداد الكاتب وشيفرته، ولا تمثل ترتيباً عاماً لسرعة النماذج. تدرج OpenAI نموذج GPT-6 Luna ضمن النماذج التي تقبل الصور، وتوضح إرشادات النماذج أن Luna يدعم إعداد الاستدلال none المستخدم في المثال.

وعلى المطور الذي يكيّف السكريبت إجراء فحوص محددة أولاً: التأكد من أن النموذج يقبل الصور ويتيح درجات البدائل المطلوبة للرمز الأول؛ والتحقق من ظهور جميع حروف الخيارات؛ ثم تقييم القرارات المعادة باستخدام صور معنونة من الكاميرا أو مجموعة البيانات المقصودة. والأوزان المطبّعة نسبية إلى رموز الحروف المدرجة. وهي ليست، بمفردها، احتمالات مقاسة لصحة الحكم البصري. وتشرح وصفة OpenAI الأقدم حول logprobs فكرة احتمالات الرموز، لكنها مؤرشفة وقد تتضمن أمثلة لواجهات API قديمة.

يوضح هذا الغلاف أيضاً ما يتركه الناتج المحدد النوع لشيفرة التطبيق. إذ يحكم النموذج على الصورة المقدمة وفق المعيار المكتوب. ويختار التطبيق الإطارات، ويتعامل مع الدرجات المفقودة، ويقرر إن كانت أي نتيجة آمنة بما يكفي لاتخاذ إجراء. ويطبع مثال Boll جدولاً؛ ولا يعرض إجراءً آلياً أو تجربة تشغيل مقاسة.

المصادر ومزيد من القراءة