0Pricing
AI Prompt Engineering · درس

ترتيب الأمثلة وحداثتها

كيف يؤثر ترتيب الأمثلة في المخرجات.

ترتيب الأمثلة وحداثتها درس مجاني في AI Prompt Engineering على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Prompt Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.

الترتيب معلمة فائقة خفية

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

تعامل مع الترتيب على أنه معلمة فائقة أساسية ينبغي البحث فيها، لا أمرًا ثانويًا. فالإبلاغ عن نتائج few-shot من دون ضبط الترتيب غير سليم علميًا.

import itertools

def order_search(demos, eval_set, build, max_perms=24):
    perms = list(itertools.permutations(demos))[:max_perms]
    scored = [(p, evaluate(build(p), eval_set)) for p in perms]
    return max(scored, key=lambda x: x[1])

شرح تحيّز الحداثة

تُظهر المحولات التي تعمل بأسلوب decoder-only تحيّزًا للحداثة: إذ تمارس الرموز الأقرب إلى نقطة التوليد تأثيرًا غير متناسب. ويكون المثال التوضيحي الأخير قبل الاستعلام هو الأرجح لتشكيل التنسيق والتسمية والنبرة.

ويرجع ذلك جزئيًا إلى أنماط الانتباه وترميز الموضع. والخلاصة العملية هي أن ما تضعه في النهاية هو ما يحاكيه النموذج بسهولة أكبر.

# Position weight intuition (illustrative, not exact)
# influence(example_i) roughly increases with proximity to the query
# => the FINAL demo disproportionately anchors the next generation
weights = [0.1, 0.15, 0.25, 0.5]  # earlier ... latest

الضياع في المنتصف

تكشف دراسات السياق الطويل عن ملف انتباه على شكل U: إذ تنتبه النماذج جيدًا إلى بداية السياق ونهايته، لكنها تولي المنتصف انتباهًا أقل. وتُهمَل الأمثلة التوضيحية المهمة المدفونة في منتصف المطالبة فعليًا.

ضع أهم أمثلتك أو أصعبها في البداية أو، نظرًا إلى تحيّز الحداثة، بالقرب من النهاية، ولا تتركها عالقة في منتصف كتلة طويلة من الأمثلة.

def place_key_demos(key, filler):
    # U-shape aware: key items at the edges, filler in the middle
    head = key[: len(key)//2]
    tail = key[len(key)//2 :]
    return head + filler + tail

التسمية الغالبة والموضع الأخير

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

في التصنيف المتوازن، بدّل بين التسميات وتأكد من أن المثال الأخير لا ينتمي دائمًا إلى الفئة نفسها عبر تنويعات مطالبتك.

def alternate_labels(by_label, k):
    labels = list(by_label)
    out = []
    i = 0
    while len(out) < k:
        lbl = labels[i % len(labels)]
        if by_label[lbl]:
            out.append(by_label[lbl].pop())
        i += 1
    return out  # final element varies by construction

أمثلة مرتبة حسب التشابه (تصاعديًا)

تتمثل إحدى القواعد الاستدلالية المتينة في التعلّم قليل الأمثلة المعزّز بالاسترجاع في ترتيب الأمثلة المسترجعة حسب التشابه التصاعدي مع الاستعلام، بحيث يكون المثال التوضيحي الأكثر صلة أقرب إلى الاستعلام ويستفيد من حداثة السياق.

يجمع هذا بين الاختيار الديناميكي والاستفادة من الحداثة: فالسياق ذو الصلة موجود ومتموضع أيضًا حيث يولي النموذج أكبر قدر من الانتباه.

def order_by_similarity(query_emb, retrieved):
    scored = [(d, cos(query_emb, d.emb)) for d in retrieved]
    scored.sort(key=lambda x: x[1])     # ascending
    return [d for d, _ in scored]        # most similar last (near query)

الترتيب التدريجي

في الاستدلال أو التوليد، يمكن أن يساعد ترتيب تدريجي (من السهل إلى الصعب) النموذج على بناء السلوك المستهدف تدريجيًا، بحيث ينتهي بمثال توضيحي معقد يبيّن كامل عمق الاستدلال قبل الاستعلام مباشرة.

يعتمد هذا على المهمة؛ لذا ينبغي التحقق من فعاليته بمقارنته بالترتيبين العشوائي وترتيب التشابه، بدل افتراض أنه مفيد.

def curriculum(demos, difficulty_fn):
    return sorted(demos, key=difficulty_fn)  # easiest first, hardest last

قياس حساسية الترتيب

قيسوا مدى هشاشة التلقين لديكم بأخذ عينات من ترتيبات عديدة والإبلاغ عن تباين الدقة. يشير التباين المرتفع إلى تلقين غير مستقر قد تتراجع نتائجه بصورة غير متوقعة في بيئة الإنتاج.

استخدموا هذا المقياس لمقارنة تصميمات التلقين: فالتلقين المتين أمام تغيّر الترتيب أكثر أمانًا من تلقين يحقق درجة أعلى قليلًا لكنه متقلب.

import random

def order_sensitivity(demos, eval_set, build, trials=20):
    accs = []
    for _ in range(trials):
        perm = random.sample(demos, len(demos))
        accs.append(evaluate(build(perm), eval_set))
    return mean(accs), stdev(accs)  # report both; low stdev = robust

اختيار الترتيب دون استقصاء

عندما لا تتوفر لديكم تسميات لتقييم الترتيبات، يمكنكم اختيار ترتيب باستخدام إنتروبيا تنبؤات النموذج على مجموعة استقصاء: تميل الترتيبات التي تنتج تنبؤات واثقة منخفضة الإنتروبيا وموزعة جيدًا إلى التعميم بصورة أفضل (Lu et al., 2022).

يتيح لكم هذا اختيار تبديل جيد من دون مجموعة تحقق موسومة.

def select_order_by_entropy(perms, probe_inputs, build):
    def score(perm):
        ents = [entropy(model_probs(build(perm), x)) for x in probe_inputs]
        return -mean(ents)        # prefer confident, low-entropy orderings
    return max(perms, key=score)

تحقيق الاستقرار بالمعايرة

تؤدي حساسية الترتيب وتحيز الحداثة معًا إلى تضخيم بعض التصنيفات. وتخفف المعايرة السياقية هذا الأثر من خلال تقدير التوزيع السابق للنموذج على إدخال خالٍ من المحتوى وتصحيح الاحتمالات المتنبأ بها، مما يقلل تأثير أي ترتيب واحد.

تؤدي المعايرة، إلى جانب ترتيب مناسب، إلى سلوك إنتاجي أكثر استقرارًا من السعي وراء أفضل تبديل منفرد.

p_prior = model_probs(build(perm), content_free='N/A')
def calibrate(probs):
    return normalize(probs / p_prior)  # cancels order-induced label skew

التخزين المؤقت واستقرار الترتيب

إذا استخدمتم التخزين المؤقت للتلقين، فيجب أن تظل البادئة (بما في ذلك كتلة الأمثلة التوضيحية) ثابتة على مستوى البايتات للاستفادة من ذاكرة التخزين المؤقت. ويؤدي إعادة ترتيب الأمثلة بكثرة لكل طلب إلى إتلاف إعادة الاستخدام ورفع التكلفة وزمن الاستجابة.

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

# Stable cached prefix + dynamic tail
prefix = render(FIXED_ORDERED_DEMOS)   # cache_control on this block
tail   = render(order_by_similarity(q_emb, retrieved))
prompt = prefix + tail + query

قائمة التحقق من استراتيجية الترتيب

الإعدادات العملية الافتراضية: وازنوا التصنيفات وتناوبوا بينها، وضعوا الأمثلة الأساسية أو الصعبة عند الطرفين (وتجنبوا الوسط)، ورتّبوا الأمثلة المسترجعة حسب التشابه التصاعدي بحيث يكون أفضلها قريبًا من الاستعلام، وقيسوا تباين الترتيب، وطبّقوا المعايرة لتخفيف الانحراف المتبقي.

بعد ذلك، ثبّتوا الترتيب للتخزين المؤقت وأعيدوا التحقق منه كلما تغيّرت مجموعة الأمثلة.

def final_order(demos, q_emb):
    demos = alternate_labels(group(demos), len(demos))
    return order_by_similarity(q_emb, demos)  # validated, then cached

تحقق سريع

حلّلوا موضع المثال التوضيحي الحاسم.

مراجعة

أهم النقاط المستخلصة:

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

الأسئلة الشائعة

هل درس «ترتيب الأمثلة وحداثتها» مجاني؟

نعم — نص درس «ترتيب الأمثلة وحداثتها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Prompt Engineering، انتقل إلى CoddyKit PRO. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.

ماذا ستتعلم في «ترتيب الأمثلة وحداثتها»؟

كيف يؤثر ترتيب الأمثلة في المخرجات. تتمرن على AI Prompt Engineering مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Prompt Engineering؟

لا تُشترط خبرة سابقة. AI Prompt Engineering على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «ترتيب الأمثلة وحداثتها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Prompt Engineering هذا؟

نعم. كل درس في AI Prompt Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. صفر، ومثال واحد، وعدة أمثلة
  2. تصميم أمثلة فعّالة
  3. ترتيب الأمثلة وحداثتها
  4. الاختيار الديناميكي لعدة أمثلة
← العودة إلى AI Prompt Engineering