Skip to content

تصنيف التعلم في السياق

تصنيف مدعوم بالذكاء الاصطناعي باستخدام التعلم في السياق مع التحقق البشري للتعليق التوضيحي القابل للتوسع.

تصنيف ICL بمساعدة الذكاء الاصطناعي

تتيح ميزة تصنيف ICL (التعلم في السياق) في Potato التعليق التوضيحي بمساعدة الذكاء الاصطناعي من خلال استخدام التعليقات التوضيحية البشرية عالية الثقة كأمثلة سياقية لتوجيه نموذج لغة كبير في تصنيف البيانات المتبقية. يتتبع النظام ثقة النموذج ويعيد التنبؤات إلى البشر للتحقق منها.

نظرة عامة

يقوم نظام تصنيف ICL بالخطوات التالية:

  1. جمع الأمثلة عالية الثقة: تحديد الحالات التي يتفق عليها المعلّقون (مثلاً اتفاق بنسبة 80%+)
  2. التصنيف بنموذج اللغة الكبير: استخدام الأمثلة لتوجيه النموذج لتصنيف الحالات غير المصنّفة
  3. تتبع الثقة: تسجيل درجات ثقة النموذج لكل تنبؤ
  4. التحقق من الدقة: توجيه عينة من الحالات المصنّفة بالنموذج إلى البشر للتحقق الأعمى
  5. تقارير المقاييس: حساب وعرض دقة النموذج بناءً على نتائج التحقق

الميزات

جمع الأمثلة التلقائي

يحدد النظام تلقائياً الأمثلة عالية الثقة حيث يتفق عدة معلّقين:

  • حد اتفاق قابل للتهيئة (الافتراضي: 80%)
  • متطلب حد أدنى لعدد المعلّقين (الافتراضي: 2)
  • تحديث تلقائي على فترات قابلة للتهيئة
  • مجموعات أمثلة لكل مخطط

تصنيف نموذج اللغة الكبير مع حدود

لتمكين التحسين التكراري بدلاً من التصنيف الجماعي:

  • الحد الأقصى للتصنيفات الكلية: تحديد العدد الإجمالي لتنبؤات النموذج
  • الحد الأقصى لنسبة غير المصنّف: تصنيف نسبة معينة فقط من البيانات المتبقية
  • الإيقاف عند انخفاض الدقة: إيقاف تلقائي إذا انخفضت الدقة عن الحد المحدد

التحقق الأعمى

يستخدم التحقق "التصنيف الأعمى" - يرى المعلّقون الحالة كمهمة عادية دون معرفة تنبؤ النموذج:

  • معدل عينة قابل للتهيئة (الافتراضي: 20% من تصنيفات النموذج)
  • استراتيجيات اختيار متعددة: low_confidence، random، mixed
  • مهام التحقق مختلطة بشكل طبيعي مع المهام العادية

التهيئة

يتطلب تصنيف ICL تفعيل ai_support:

yaml
# AI endpoint configuration (required)
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
 
# ICL labeling configuration
icl_labeling:
  enabled: true
 
  # Example selection settings
  example_selection:
    min_agreement_threshold: 0.8      # 80% annotators must agree
    min_annotators_per_instance: 2    # Minimum annotations for consensus
    max_examples_per_schema: 10       # Max examples per schema in prompt
    refresh_interval_seconds: 300     # How often to refresh examples
 
  # LLM labeling settings
  llm_labeling:
    batch_size: 20
    trigger_threshold: 5              # Min examples before LLM labeling starts
    confidence_threshold: 0.7         # Min confidence to accept prediction
    batch_interval_seconds: 600
    max_total_labels: 100             # Max instances to label total
    max_unlabeled_ratio: 0.5          # Max portion of unlabeled to label
    pause_on_low_accuracy: true
    min_accuracy_threshold: 0.7
 
  # Human verification settings
  verification:
    enabled: true
    sample_rate: 0.2                  # 20% of LLM labels verified
    selection_strategy: "low_confidence"
    mix_with_regular_assignments: true
    assignment_mix_rate: 0.2

استراتيجيات الاختيار

  • low_confidence: إعطاء الأولوية للتحقق من تنبؤات النموذج الأقل ثقة أولاً
  • random: أخذ عينات عشوائية من جميع التنبؤات
  • mixed: 50% منخفضة الثقة + 50% عشوائية

واجهة برمجة تطبيقات المشرف

نقطة نهاية الحالة

http
GET /admin/api/icl/status

تُرجع حالة مصنّف ICL الشاملة بما في ذلك الأمثلة لكل مخطط، والتنبؤات المُنجزة، وحجم قائمة انتظار التحقق، ومقاييس الدقة.

نقطة نهاية الأمثلة

http
GET /admin/api/icl/examples?schema=sentiment

تُرجع الأمثلة عالية الثقة، مع إمكانية التصفية حسب المخطط.

نقطة نهاية الدقة

http
GET /admin/api/icl/accuracy?schema=sentiment

تُرجع مقاييس الدقة بناءً على نتائج التحقق البشري.

نقطة نهاية التشغيل اليدوي

http
POST /admin/api/icl/trigger
Content-Type: application/json
 
{"schema_name": "sentiment"}

تشغيل التصنيف الدفعي يدوياً لمخطط محدد.

سير عمل الاستخدام

1. تهيئة المشروع

yaml
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
 
icl_labeling:
  enabled: true
  example_selection:
    min_agreement_threshold: 0.8
  llm_labeling:
    max_total_labels: 50  # Start small
  verification:
    enabled: true
    sample_rate: 0.3  # Verify 30% initially

2. جمع التعليقات التوضيحية البشرية

اطلب من المعلّقين تصنيف البيانات بشكل طبيعي. عندما يصلون إلى إجماع (اتفاق 80%+)، تصبح تلك الحالات متاحة كأمثلة.

3. مراقبة التقدم

bash
curl http://localhost:8000/admin/api/icl/status

4. مراجعة الدقة

bash
curl http://localhost:8000/admin/api/icl/accuracy

5. التكرار

بناءً على الدقة:

  • إذا كانت الدقة عالية (أكثر من 80%)، زِد max_total_labels
  • إذا كانت الدقة منخفضة، أضف المزيد من الأمثلة البشرية قبل المتابعة

أفضل الممارسات

  1. ابدأ صغيراً: ابدأ بحدود متحفظة (max_total_labels: 50) لتقييم الدقة قبل التوسع

  2. تحقق مبكراً: استخدم معدل sample_rate أعلى في البداية (0.3-0.5) للحصول على تقديرات دقة موثوقة

  3. راقب بنشاط: تحقق من مقاييس الدقة بانتظام عبر واجهة برمجة تطبيقات المشرف

  4. اضبط الحدود: إذا كانت دقة النموذج منخفضة:

    • زِد min_agreement_threshold للحصول على أمثلة أنظف
    • زِد trigger_threshold لمزيد من الأمثلة قبل التصنيف
    • قلّل confidence_threshold لرفض التنبؤات غير المؤكدة
  5. استخدم استراتيجيات الاختيار:

    • low_confidence: الأفضل لتحديد الفئات الإشكالية
    • random: الأفضل لتقديرات الدقة غير المتحيزة
    • mixed: نهج متوازن

استكشاف الأخطاء وإصلاحها

النموذج لا يصنّف

  1. تحقق من تهيئة ai_support بشكل صحيح
  2. تأكد من وجود أمثلة عالية الثقة كافية
  3. تحقق مما إذا كان التصنيف متوقفاً بسبب الحدود أو انخفاض الدقة

دقة منخفضة

  1. زِد min_agreement_threshold للحصول على أمثلة أنظف
  2. أضف المزيد من إرشادات/تعليمات التعليق التوضيحي
  3. راجع الأمثلة المستخدمة (/admin/api/icl/examples)

مهام التحقق لا تظهر

  1. تأكد من أن verification.enabled مضبوط على true
  2. تحقق من أن mix_with_regular_assignments مضبوط على true
  3. تأكد من وجود عمليات تحقق معلّقة في قائمة الانتظار

قراءات إضافية

للاطلاع على تفاصيل التنفيذ، راجع الوثائق المصدرية.