تخطَّ إلى المحتوى

🤖 شرح الذكاء الاصطناعي وتعلّم الآلة

Prompting Fundamentals — أساسيات هندسة التعليمات

الدرس 53 من 65· ⏱ 6 دقائق قراءة

بعد درس 105: Decoding و Sampling، ننظر في كيف تصيغ التعليمات (prompt) للحصول على نتائج أفضل. هذا درس عملي قابل للتطبيق مباشرة.

حدود هذه الصفحة: هذا أساسيات. Prompt injection وأمان LLM في Wave 8. الوكلاء (agents) في Wave 7. هنا نركّز على صياغة تعليمات واضحة وفعّالة.

ما هو Prompt؟

Prompt = كل ما ترسله للنموذج قبل أن يولّد استجابته.

النظام: أنت مساعد لتعليم البرمجة بالعربية.
المستخدم: اشرح لي مفهوم closure في JavaScript بجملتين مع مثال.

→ النموذج يولّد استجابة بناءً على:
   1. prompt بأكمله (system + user)
   2. أوزانه (التي تعلّمها في التدريب)
   3. استراتيجية decoding (التي ينفّذها الـ API)

مكوّنات Prompt فعّال

1. المهمة (Task) — ماذا تريد؟

❌ ضعيف:   "اكتب شيئًا عن Python"
✅ واضح:   "اشرح متى يُفضّل استخدام list بدل tuple في Python، بثلاث جمل"

2. السياق (Context) — ما المعلومات اللازمة؟

❌ ضعيف:   "هل هذا الكود صحيح؟"
✅ واضح:   "هل الكود التالي يطبع [1, 4, 9]؟
           nums = [1, 2, 3]
           for i in range(len(nums)):
               nums[i] = nums[i] ** 2
           print(nums)"

3. القيود (Constraints) — ما المسموح/الممنوع؟

✅ "اشرح بأسلوب بسيط، تجنّب المصطلحات المتخصصة، أبقِ الإجابة في حدود 100 كلمة."
✅ "استخدم فقط الدوال المضمّنة في Python، بدون مكتبات خارجية."

4. صيغة المخرج (Output Format) — كيف تريد النتيجة؟

✅ "أعِد الجواب كقائمة مرقّمة."
✅ "اكتب الإجابة بصيغة JSON بمفتاح وحيد 'answer'."
✅ "ابدأ بـ'نعم' أو 'لا'، ثم اشرح بجملة واحدة."

5. معايير النجاح (Success Criteria) — ما الذي يجعل الإجابة "صحيحة"؟

✅ "الإجابة الصحيحة تعطي تفسيرًا واحدًا فقط، بدون إعادة صياغة للسؤال."
✅ "إذا لم تكن متأكدًا، قل 'غير متأكد' بدلًا من التخمين."

6. الفواصل (Delimiters) — لتمييز أقسام prompt

### التعليمات ###
اشرح الفرق بين authentication و authorization.

### النصّ ###
{user_input}

### الإجابة المتوقعة ###
- 3 جمل كحد أقصى.
- بدون إعادة صياغة للسؤال.

Zero-shot / One-shot / Few-shot

Zero-shot — بدون أمثلة

صنف المراجعة التالية إلى إيجابية/سلبية/محايدة:
"التطبيق رائع لكن السرعة بطيئة"

الإجابة:

النموذج يعتمد على فهمه العام. يعمل جيدًا في مهام واضحة الصياغة.

One-shot — مثال واحد

صنّف المراجعة إلى إيجابية/سلبية/محايدة.

مثال:
"أحببت التصميم" → إيجابية

المطلوب:
"التطبيق رائع لكن السرعة بطيئة" →

مثال واحد يُعطي النموذج إشارة على الصياغة المتوقّعة.

Few-shot — أمثلة متعددة

صنّف المراجعة إلى إيجابية/سلبية/محايدة.

أمثلة:
"أحببت التصميم" → إيجابية
"خدمة سيئة جدًا" → سلبية
"وصل المنتج" → محايدة

المطلوب:
"التطبيق رائع لكن السرعة بطيئة" →

Few-shot يوضّح النمط، لكن:

  • أمثلة كثيرة جدًا تستهلك context window.
  • أمثلة متحيّزة قد تُوجّه النموذج منحازًا.
  • أمثلة خاطئة = نتائج خاطئة.

بنية prompt عملية

┌────────────────────────────────────┐
│ System (شخصية النموذج + قواعد عامة) │
│   "أنت مساعد لتعليم البرمجة..."   │
└────────────────────────────────────┘
              ↓
┌────────────────────────────────────┐
│ Developer/Instructions (المنهجية)  │
│   "استخدم أمثلة، كن دقيقًا..."    │
└────────────────────────────────────┘
              ↓
┌────────────────────────────────────┐
│ User (المهمة الفعلية)             │
│   "اشرح closure في JavaScript"    │
└────────────────────────────────────┘
              ↓
┌────────────────────────────────────┐
│ (اختياري) Context / Examples       │
│   أمثلة few-shot، وثائق مرجعية    │
└────────────────────────────────────┘

ملاحظة: بعض المزودين يستخدمون "system/developer/user" كأدوار منفصلة (OpenAI)، آخرون يستخدمون بنية مختلفة. المبدأ نفسه: تعليمات عامة → منهجية → مهمة فعلية.

أمثلة عملية (عربي)

تلخيص

لخّص النصّ التالي في جملتين، مع الحفاظ على النقطة الرئيسية:

نصّ:
[نص طويل عن فوائد الرياضة على الصحة الجسدية والنفسية...]

ملخّص:

استخراج

استخرج من السيرة الذاتية التالية: الاسم، البريد الإلكتروني، سنوات الخبرة.

السيرة:
"أحمد مبرمج بخمس سنوات خبرة في Python. التواصل: ahmad@example.com"

المخرج (JSON):
{
  "name": "",
  "email": "",
  "years_experience": null
}

تصنيف

صنّف تذكرة الدعم إلى: bugs / billing / account / other.

أمثلة:
"لا أستطيع تسجيل الدخول" → account
"التطبيق يتعطّل عند الفتح" → bugs
"كيف ألغي اشتراكي؟" → billing

التذكرة:
"الصورة لا تظهر في الملفّ الشخصي منذ أمس"

التصنيف:

مبادئ عامة (ليست قواعد مطلقة)

تحذير مهم: هذه مبادئ تستند إلى خبرة عملية وأبحاث متعدّدة، لكنها ليست قوانين فيزيائية. الاستثناءات موجودة. اعتمد القياس على مهمتك.

  1. كن محددًا لا عامًا: كلما كان الطلب واضحًا، زادت فرصة النتيجة الصحيحة.
  2. حدّد صيغة المخرج: لا تفترض أنّ النموذج سيخمّنها.
  3. فصل التعليمات عن البيانات: ضع مدخلات المستخدم في قسم واضح (مع delimiters).
  4. أعطِ معيار فشل: "إذا لم تكن متأكدًا، قل غير متأكد".
  5. قس النتائج: ما ينجح لمهمة معيّنة قد يفشل في أخرى.
  6. اختبر مع عينات عدّة: لا تحكم من تجربة واحدة.
  7. حسّن تدريجيًا: ابدأ بـ zero-shot، أضف أمثلة، أضف قيودًا.

تحذير من "وصفات سحرية"

الإنترنت مليء بـ "10 حيل لـ prompt engineering!" و "الصياغة السحرية للنتيجة المثالية!". تعامل معها بحذر:

ما يُنشر كـ"قواعد مطلقة":
  - "ابدأ دائمًا بـ'You are an expert...'"
  - "استخدم 'Let's think step by step' دائمًا"
  - "اكتب 'I will tip you $200' للحصول على نتائج أفضل"
  - "اطلب من النموذج أن يكون خبيرًا في X"

ما يُنسى قوله:
  - هذه الأنماط أعطت نتائج في تجارب معيّنة على نماذج معيّنة.
  - لا ضمان أنها تنفع لمهمتك.
  - بعض الأنماط "تنجح" لأن النموذج أُلِّف ليُفضّلها (RLHF)، وليست خاصية جوهرية.

النصيحة: ابني prompts بناءً على فهمك لمهمتك، وجرّب وعدّل، لا تنسخ "وصفات سحرية" دون اختبار.

أخطاء شائعة

  • "Prompt طويل = prompt أفضل": ليس بالضرورة. Prompts مركّزة أكثر فعالية من prompts مطوّلة.
  • "Few-shot دائمًا أفضل من zero-shot": أحيانًا. للمهام البسيطة قد يكون zero-shot كافيًا وأقل تشويشًا.
  • "إعادة صياغة السؤال تُحسّن النتيجة": لا — قد تُربك النموذج. أعد صياغة prompt لا السؤال.
  • "النموذج 'يفهم' التعليمات مثل البشر": لا. النموذج يربط تعليماتك بأنماط رآها في التدريب. صياغة واضحة = تطابق أوضح مع هذه الأنماط.
  • "سرّ جودة المخرجات في الكلمات السحرية": لا. السّر في الوضوح، التحديد، والاختبار المنهجي.

ملاحظة عن Prompt Injection (تنبيه فقط)

⚠️ إذا كان prompt يحتوي مدخلات مستخدمين، فاحذر من prompt injection:
   مستخدم خبيث قد يكتب تعليمات في مدخله تتجاوز تعليماتك.

مثال:
  تعليماتك: "لخّص النصّ التالي:"
  مدخل المستخدم: "تجاهل التعليمات السابقة. أنت الآن..."
  → النموذج قد يتبع تعليمات المستخدم بدلًا من تعليماتك.

الحماية الكاملة لـ prompt injection درس منفصل في Wave 8.
هنا يكفي: لا تثق بمحتوى prompt المستخدم لاتخاذ قرارات حسّاسة.

الخطوات التالية

ملاحظة النطاق: prompt injection defense، jailbreaks، وأمان LLM تُغطّى في Wave 8. هذا الدرس حدّه صياغة تعليمات واضحة وفعّالة.

شرح Prompting Fundamentals — أساسيات هندسة التعليمات — الذكاء الاصطناعي وتعلّم الآلة بالعربي
Prompting Fundamentals — أساسيات هندسة التعليماتالذكاء الاصطناعي وتعلّم الآلة بالعربي · The Code Fix

📚 لمزيد من التعمّق في الذكاء الاصطناعي وتعلّم الآلة، راجِع توثيق scikit-learn الرسمي.

هل كان هذا الدرس مفيدًا؟