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

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

Prompt Patterns — أنماط عملية

الدرس 54 من 65· ⏱ 5 دقائق قراءة

بعد درس 106: Prompting Fundamentals، نغوص في أنماط عملية تتكرّر في تطبيقات LLM الحقيقية. كل نمط يوضّح المهمة، البنية، ومثالًا عربيًا.

المبدأ العام: فصّل البيانات عن التعليمات

قبل أيّ نمط، هذا المبدأ الأهم:

❌  خلط التعليمات مع البيانات:
    "هذا مقال عن الذكاء الاصطناعي. لخّصه. لا تتجاوز 3 جمل. ابدأ ب'الذكاء
     الاصطناعي'..."

✅  فصل واضح:
    التعليمات:
      لخّص النصّ التالي بقيدَين:
        1. لا تتجاوز 3 جمل.
        2. ابدأ بـ'الذكاء الاصطناعي'.

    النصّ:
    <data>
    [النصّ الكامل هنا]
    </data>

    الملخّص:

الفوائد:

  • النموذج لا يخلط بين ما هو "تعليمات" وما هو "بيانات".
  • يمكنك إعادة استخدام نفس التعليمات مع بيانات مختلفة.
  • أسهل في الاختبار والصيانة.
  • يقلّل مخاطر prompt injection (رغم أنه ليس حلًّا كاملًا).

النمط 1: Classification — التصنيف

الاستخدام: فرز النصوص إلى فئات محدّدة.

صنّف النصّ التالي إلى إحدى الفئات:
- bug: تقرير عن خطأ تقني
- billing: مسألة مالية أو اشتراك
- account: مشكلة حساب أو تسجيل دخول
- other: أيّ شيء آخر

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

النصّ:
{user_input}

التصنيف (أعِد كلمة واحدة فقط):

ملاحظات عملية:

  • حدد قائمة الفئات مسبقًا (لا تترك النموذج يخترع فئات).
  • اطلب صيغة المخرج بدقة (كلمة واحدة، enum، JSON).
  • وفّر أمثلة لتوضيح الحالات الحدّية.

النمط 2: Extraction — الاستخراج

الاستخدام: استخراج حقول محدّدة من نصّ حر.

استخرج من السيرة الذاتية التالية الحقول التالية:
- name (الاسم الكامل)
- email (البريد الإلكتروني)
- years_experience (عدد سنوات الخبرة، رقم صحيح)
- skills (قائمة بالمهارات التقنية)

أعِد JSON فقط، بدون أيّ نصّ إضافي:

{
  "name": "",
  "email": "",
  "years_experience": null,
  "skills": []
}

السيرة الذاتية:
"""
أحمد محمود، مطوّر Python منذ 2018.
التواصل: ahmad@example.com
خبرة في Django و FastAPI و PostgreSQL.
"""

ملاحظات:

  • JSON Schema هنا فقط كـ prompt، ليس schema-constrained structured output (الفرق في درس 110).
  • أَخْرِج JSON صالحًا دائمًا. تحقّق منه برمجيًا.

النمط 3: Transformation — التحويل

الاستخدام: تحويل صيغة نصّ إلى أخرى (إعادة هيكلة، ترجمة، تحويل أسلوب).

حوّل الجملة التالية من الفصحى المعقّدة إلى فصحى مبسّطة:

"يتعيّن على المستخدم أن يقوم بإدخال البيانات الشخصيّة المطلوبة بشكل دقيق في الحقول المخصّصة."

النسخة المبسّطة:

أنواع شائعة:

  • ترجمة بين لغات.
  • تحويل بين formal/informal.
  • إعادة هيكلة JSON/XML.
  • استخراج JSON من نصّ.

النمط 4: Summarization — التلخيص

الاستخدام: تقليص نصّ طويل مع الحفاظ على المضمون.

لخّص النصّ التالي في 3 جمل، موجّهة لمطوّر برمجيات مبتدئ:

النصّ:
{long_text}

الملخّص:

أنواع التلخيص:

- extractive:    اختر أهمّ الجمل حرفيًا (سهل لكن جامد).
- abstractive:   أعِد كتابة المعنى بجمل جديدة (أصعب لكن أنعم).
- brief:         1-2 جملة.
- structured:    نقاط أو JSON بمفاتيح معيّنة.

النمط 5: Rewriting — إعادة الكتابة

الاستخدام: تحسين نصّ موجود (وضوح، أسلوب، قواعد).

أعد كتابة الفقرة التالية بأسلوب واضح ومختصر، مع الحفاظ على المعنى:

الفقرة الأصلية:
{paragraph}

النسخة المحسّنة:

أمثلة على قيود معقولة:

  • "احتفظ بنفس طول النصّ ± 20%."
  • "استخدم جملًا لا تتجاوز 20 كلمة."
  • "تجنّب الكلمات العامّية، استخدم الفصحى."

النمط 6: Constrained Generation — التوليد المقيد

الاستخدام: توليد نصّ بشروط صارمة (طول، صيغة، مفردات).

اكتب سيرة ذاتية لوظيفة "مطوّر Backend" بالشروط التالية:
- الطول: 150-200 كلمة بالضبط.
- الأقسام: ملخّص (جملة واحدة)، مهارات تقنية (قائمة نقطية)، خبرة (فقرة واحدة).
- تجنّب: ذكر العمر، الجنس، الحالة الاجتماعية.
- الأسلوب: رسمي ومهني.

السيرة:

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

النمط 7: Rubric-Based Evaluation — تقييم قائم على Rubric

الاستخدام: تقييم مخرج (نصّ، كود، إجابة) وفق معايير محدّدة.

قيّم الإجابة التالية وفق المعايير:
- accuracy: هل المعلومة صحيحة؟ (1-5)
- clarity: هل الشرح واضح؟ (1-5)
- completeness: هل يغطّي كل جوانب السؤال؟ (1-5)

لكل معيار أعطِ:
- الدرجة (1-5)
- مبرر قصير (جملة واحدة)

السؤال:
{question}

الإجابة:
{answer}

التقييم (JSON):
{
  "accuracy": {"score": 0, "reason": ""},
  "clarity": {"score": 0, "reason": ""},
  "completeness": {"score": 0, "reason": ""}
}

نصيحة: استخدم نماذج أقوى (مثل نموذج أكبر) لتقييم مخرجات نماذج أصغر — أسلوب شائع يُسمّى LLM-as-judge.

النمط 8: Few-shot مع مخرج منظّم

الاستخدام: تصنيف أو استخراج مع أمثلة توضّح الحالات الحدّية.

صنّف تذكرة الدعم.

أمثلة:
"نسيت كلمة المرور" → account (إجراء ذاتي)
"التطبيق يرمي خطأ 500" → bug (يحتاج فحص)
"أريد استرداد المبلغ" → billing (يحتاج مراجعة بشرية)

التذكرة:
{user_input}

التصنيف (كلمة واحدة):
الخطورة (low/medium/high):
الإجراء المقترح:

لا تطلب سلسلة التفكير الخاصة

قاعدة عملية: اطلب النتيجة النهائية، لا سلسلة الاستدلال الداخلية.

❌  "اشرح خطوة بخطوة كيف حللت المسألة، ثم أعطني الإجابة"
    → النموذج يكتب سلسلة استدلال. قد تكون طويلة، متحيّزة، أو تحتوي معلومات
       لا تريد كشفها.

✅  "احسب الإجابة في ذهنك، ثم أعِد رقمًا واحدًا فقط"
    → النموذج يولّد نتيجة مختصرة. أنت تتحقّق منها برمجيًا.

لماذا هذا مهم؟

  • الأمان: سلسلة الاستدلال قد تكشف معلومات حسّاسة (مثلاً قاعدة prompt).
  • التحكّم: المستخدمون قد يستخدمون المنطق ضدّك أو يعدّلونه.
  • الكلفة: استدلال مطوّل = tokens أكثر = تكلفة أعلى.

ما تريده من المستخدم: النتيجة الموثوقة. سلسلة الاستدلال تبقى داخلية في النموذج.

أخطاء شائعة في الأنماط

  • "النمط يصلح لكل شيء": لا. التصنيف ≠ الاستخراج ≠ التحويل. كل نمط له بنية ومحدّدات.
  • "Few-shot يحلّ كل غموض": أحيانًا يضيف غموضًا إن كانت الأمثلة متحيّزة.
  • "LLM-as-judge موضوعي": ليس بالضرورة. الحكم نفسه تحكّمه prompt والموديل المستخدم. قس الاتفاق بين الحكّام.
  • "Constrained generation = مخرج مضمون": لا. النموذج قد ينتهك القيود. تحقق برمجيًا.

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

ملاحظة النطاق: هذا الدرس حدّه أنماط prompt يدوية. الـ structured output مع schema-constrained generation يغطّى في درس 110. الوكلاء و RAG في الموجات التالية.

شرح Prompt Patterns — أنماط عملية — الذكاء الاصطناعي وتعلّم الآلة بالعربي
Prompt Patterns — أنماط عمليةالذكاء الاصطناعي وتعلّم الآلة بالعربي · The Code Fix

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

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