AI Prompt Engineering · درس

مقارنة المطالبات الغامضة والمحددة

أمثلة متجاورة توضّح الفرق الكبير الذي يحدثه التحديد

الدرس 4 من 413 خطوة

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

طريقة المقارنة جنبًا إلى جنب

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

نفحص في هذا الدرس خمسة موجّهات مبهمة وإعادات صياغتها المحددة. ونحدد لكل زوج التغييرات الدقيقة التي أُجريت، والآلية التي يوجّه بها كل تحسين النموذج نحو مخرجات أفضل.

الزوج 1: منشور المدونة

مبهم: 'اكتب منشورًا في مدونة عن العمل عن بُعد.'

محدد: 'اكتب منشورًا من 600 كلمة في مدونة بعنوان "عادات العمل عن بُعد الثلاث التي قضت على إنتاجيتي (وما أفعله الآن)" لجمهور من مطوّري البرمجيات متوسطي الخبرة. استخدم ضمير المتكلم ونبرة حوارية. البنية: فقرة مقدمة واحدة، و3 أقسام بعناوين H2، وعبارة CTA ختامية لتنزيل قالب مجاني.'

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

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=800,
    messages=[{
        'role': 'user',
        'content': (
            'Write a 600-word blog post titled '
            '"The 3 Remote Work Habits That Killed My Productivity (And What I Do Now)" '
            'for an audience of mid-level software developers. '
            'First-person voice, conversational tone. '
            'Structure: 1-paragraph intro, 3 H2 sections (one per habit), '
            '1 closing paragraph with a CTA to download a free productivity template.'
        )
    }]
)
print(response.content[0].text[:400], '...')

الزوج 2: مراجعة الشيفرة

مبهم: 'راجع الشيفرة الخاصة بي.'

محدد: 'راجع دالة Python التالية. ركّز فقط على: 1) أخطاء الصحة، 2) الحالات الحدّية التي لم تتم معالجتها. لا تُعلّق على الأسلوب أو التسمية أو التنسيق. تنسيق المخرجات: قائمة مرقمة بالمشكلات، يتضمن كل منها: وصف المشكلة (جملة واحدة)، السطر أو الأسطر المتأثرة، الإصلاح المقترح (مقتطف برمجي).'

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

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

code = (
    'def get_user(users, user_id):\n'
    '    for user in users:\n'
    '        if user["id"] == user_id:\n'
    '            return user["name"]\n'
    '    return users[0]["name"]\n'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Review the following Python function.\n'
            'Focus ONLY on: 1) correctness bugs, 2) unhandled edge cases.\n'
            'Do NOT comment on style, naming conventions, or formatting.\n'
            'Output format: numbered list. Each item: issue (1 sentence), '
            'affected line, suggested fix as a code snippet.\n\n'
            + code
        )
    }]
)
print(response.choices[0].message.content)

الزوج 3: عنوان موضوع البريد الإلكتروني

مبهم: 'اكتب عناوين لمواضيع رسائل النشرة الإخبارية الخاصة بي.'

محدد: 'اكتب 10 عناوين لمواضيع رسائل لنشرة إخبارية أسبوعية عن Python لعلماء البيانات. يجب ألا يتجاوز طول كل عنوان 50 حرفًا، وأن يتضمن عنصر جذب لرفع معدل الفتح (فجوة فضول، أو قائمة مرقمة، أو ادعاء مفاجئ)، وأن يتجنب كلمات تحفّز مرشحات الرسائل المزعجة مثل FREE أو URGENT. أخرجها في قائمة مرقمة، مع وضع نوع عنصر الجذب بين قوسين معقوفين.'

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

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'Write 10 email subject lines for a weekly newsletter '
            'about Python tips for data scientists. '
            'Requirements:\n'
            '- Each under 50 characters\n'
            '- Must use one of these hooks: [CURIOSITY GAP], [NUMBER], or [SURPRISING CLAIM]\n'
            '- No spam words: FREE, URGENT, ACT NOW, LIMITED TIME\n'
            '- Output as numbered list with hook type in brackets at the end of each line'
        )
    }]
)
print(response.content[0].text)

الزوج 4: ملخص الاجتماع

مبهم: 'لخّص نص هذا الاجتماع.'

محدد: 'لخّص نص هذا الاجتماع باستخدام التنسيق التالي: 1) هدف الاجتماع (جملة واحدة)، 2) القرارات الرئيسية المتخذة (قائمة نقطية، بحد أقصى 5)، 3) عناصر العمل (جدول بأعمدة: المهمة، المسؤول، الموعد النهائي)، 4) الأسئلة المفتوحة (قائمة مرقمة). إذا كانت المعلومات مفقودة لحقل ما، فاكتب N/A. لا تُضمّن أي آراء — الحقائق والالتزامات فقط.'

سبب نجاحه: يقدم قالبًا دقيقًا، ويحدد الحدود لكل قسم، ويعرّف مخطط الجدول، ويضع قيمة بديلة للبيانات المفقودة، ويضيف قيدًا على النبرة (الحقائق فقط).

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

transcript = (
    'John: We need to decide on the launch date. '
    'Sarah: I think Q3 works. We need the API done first. '
    'John: Agreed. Sarah, can you own the API? '
    'Sarah: Yes, I can have it by July 15th. '
    'John: Great. Who handles marketing? '
    'Mike: I will, but I need the feature list first. '
    'John: We still need to confirm pricing — tabled for next week.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Summarize this meeting transcript in this exact format:\n'
            '1. Meeting Purpose: (1 sentence)\n'
            '2. Key Decisions: (bullet list, max 5)\n'
            '3. Action Items: (markdown table: Task | Owner | Deadline)\n'
            '4. Open Questions: (numbered list)\n'
            'Missing info: write N/A. Facts only, no opinions.\n\n'
            'Transcript:\n' + transcript
        )
    }]
)
print(response.choices[0].message.content)

الزوج 5: الشرح

مبهم: 'اشرح تعلّم الآلة.'

محدد: 'اشرح تعلّم الآلة في 3 فقرات لمدير منتجات في شركة للرعاية الصحية يفهم الإحصاء لكنه لم يكتب شيفرة من قبل. الفقرة 1: ماهيته وكيف يختلف عن البرمجة التقليدية. الفقرة 2: مثال حقيقي من مجال الرعاية الصحية (التشخيص أو اكتشاف الأدوية). الفقرة 3: مفهوم خاطئ شائع ينبغي تجنبه. بحد أقصى 200 كلمة إجمالًا.'

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

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=350,
    messages=[{
        'role': 'user',
        'content': (
            'Explain machine learning in exactly 3 paragraphs. '
            'Audience: a product manager at a healthcare company who understands statistics '
            'but has never written code.\n'
            'Paragraph 1: what ML is and how it differs from traditional programming.\n'
            'Paragraph 2: a specific real-world healthcare example (diagnosis or drug discovery).\n'
            'Paragraph 3: one common misconception non-technical people have about ML.\n'
            'Max 200 words total. No bullet points — flowing prose only.'
        )
    }]
)
print(response.content[0].text)

تشريح إعادة الصياغة الجيدة

عند النظر إلى الأزواج الخمسة كلها، نجد أن كل إعادة صياغة فعّالة تقوم بالأمور نفسها:

  1. تستبدل فعلًا مبهمًا («اكتب» أو «راجع» أو «اشرح») بمهمة منظمة
  2. تسمي تنسيق المخرجات (قائمة أو جدول أو فقرات ذات محتوى محدد)
  3. تضيف قيودًا قابلة للقياس (عدد الكلمات أو العناصر أو حدود عدد الأحرف)
  4. تحدد الجمهور (الدور والخلفية والسياق)
  5. تضيف قاعدة استبعاد واحدة على الأقل (ما ينبغي تركه خارجًا)
# Pattern extractor: identify improvements between two prompts
def analyze_improvement(vague, specific):
    improvements = []
    words = specific.lower()
    if any(str(n) in words for n in range(10, 10000)):
        improvements.append('Quantitative constraint added')
    if 'do not' in words or 'exclude' in words or 'avoid' in words or 'no ' in words:
        improvements.append('Negative constraint added')
    if 'audience' in words or 'for a' in words or 'targeting' in words:
        improvements.append('Audience specified')
    if 'format:' in words or 'table' in words or 'list' in words or 'paragraph' in words:
        improvements.append('Output format defined')
    if 'example' in words or 'such as' in words or 'like:' in words:
        improvements.append('Example provided')
    print('Improvements detected:')
    for i in improvements:
        print(f'  + {i}')

vague = 'Write a blog post about remote work.'
specific = 'Write a 600-word blog post for mid-level developers with 3 H2 sections and a closing CTA. No bullet points. Avoid generic productivity advice.'
analyze_improvement(vague, specific)

ما يحدث عند إضافة بُعد واحد فقط

تساعد إضافة تحسين واحد فقط، لكن التحديد الجزئي يترك فجوات كبيرة. قارن بين ما يلي:

  • 'اكتب منشورًا في مدونة عن العمل عن بُعد' — بلا قيود
  • 'اكتب منشورًا من 600 كلمة في مدونة عن العمل عن بُعد' — يحدد الطول فقط؛ أما الزاوية والجمهور والبنية فما زالت مبهمة
  • 'اكتب منشورًا من 600 كلمة في مدونة عن العمل عن بُعد للمطوّرين، بنبرة حوارية' — يحدد الطول والجمهور والنبرة؛ أما البنية وعبارة CTA ونمط العناوين فما زالت مبهمة

كل بُعد تتركه من دون تحديد هو بمثابة تخمين. أضف أكبر عدد ممكن من الأبعاد التي تتوفر لديك معلومات عنها.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Progressively more specific prompts
prompts = [
    'Write about Python.',
    'Write a 200-word article about Python.',
    'Write a 200-word article about Python for beginners who know no programming.',
    (
        'Write a 200-word article about Python for beginners who know no programming. '
        'Start with a real-world analogy. Use 3 short paragraphs. '
        'End with one actionable first step they can take today.'
    )
]

for i, p in enumerate(prompts, 1):
    print(f'Prompt {i} ({len(p)} chars): {p[:80]}...' if len(p) > 80 else f'Prompt {i}: {p}')
    print()

استخدام تقنية أزواج المقارنة عمليًا

تُعدّ تقنية أزواج المقارنة أداة قوية لتصحيح الموجّه. عندما تحصل على مخرجات سيئة:

  1. احفظ الموجّه المبهم الذي أنتج المخرجات السيئة
  2. حدد البُعد الواحد الذي تسبب في المشكلة
  3. اكتب إعادة صياغة محددة تستهدف ذلك البُعد وحده
  4. شغّل الموجّهين وقارن بين المخرجات
  5. حدد ما يزال بحاجة إلى إصلاح، ثم أضف القيد التالي

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

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

def compare_prompts(prompt_a, prompt_b, label_a='A', label_b='B'):
    client_ref = anthropic.Anthropic(api_key='sk-ant-your-key-here')
    for label, prompt in [(label_a, prompt_a), (label_b, prompt_b)]:
        response = client_ref.messages.create(
            model='claude-opus-4-5',
            max_tokens=150,
            messages=[{'role': 'user', 'content': prompt}]
        )
        print(f'=== {label} ===')
        print(prompt)
        print('--- OUTPUT ---')
        print(response.content[0].text)
        print()

compare_prompts(
    prompt_a='Explain APIs.',
    prompt_b='Explain APIs in 3 sentences for a non-technical startup founder. Analogy required.',
    label_a='VAGUE',
    label_b='SPECIFIC'
)

تدقيق الموجّه في دقيقتين

قبل إرسال أي موجّه مهم، أجرِ هذا التدقيق الذي يستغرق دقيقتين. لكل سؤال، إذا كانت الإجابة «لا»، فأضف التفصيل المفقود:

  • هل تم تحديد التنسيق؟ (قائمة أو جدول أو فقرة أو JSON)
  • هل تم تحديد الطول؟ (عدد الكلمات أو عدد العناصر)
  • هل تم وصف الجمهور؟ (الدور والخلفية)
  • هل الهدف واضح؟ (الغرض من المخرجات)
  • هل يوجد استبعاد واحد على الأقل؟ (ما ينبغي تركه خارجًا)
  • هل يوجد مثال أو قالب؟ (إذا كان الأسلوب مهمًا)
def two_minute_audit(prompt):
    score = 0
    checks = {
        'Format specified': any(w in prompt.lower() for w in
            ['list', 'table', 'paragraph', 'json', 'bullet', 'sentence', 'word']),
        'Length given': any(c.isdigit() for c in prompt),
        'Audience named': any(w in prompt.lower() for w in
            ['for a', 'audience', 'targeting', 'developer', 'manager', 'beginner']),
        'Exclusion added': any(w in prompt.lower() for w in
            ['do not', 'avoid', 'exclude', 'no ', 'without', 'never']),
        'Goal stated': any(w in prompt.lower() for w in
            ['goal', 'purpose', 'so that', 'in order to', 'will be used']),
    }
    print('Prompt Audit:')
    for check, passed in checks.items():
        icon = 'PASS' if passed else 'FAIL'
        print(f'  [{icon}] {check}')
        if passed: score += 1
    print(f'Score: {score}/{len(checks)}')

two_minute_audit(
    'Write 5 bullet-point suggestions for improving user onboarding '
    'for a B2B SaaS app targeting first-time non-technical users. '
    'Avoid suggestions that require engineering work. Each bullet: max 25 words.'
)

إنشاء مكتبة الموجّهات الخاصة بك

في كل مرة تكتب فيها موجّهًا ينتج مخرجات ممتازة، احفظه. أنشئ مكتبة موجّهات شخصية منظمة حسب نوع المهمة.

يتضمن إدخال مكتبة الموجّهات الجيد ما يلي:

  • قالب الموجّه مع عناصر نائبة مثل [AUDIENCE] و[WORD_COUNT]
  • حالة الاستخدام التي صُمم من أجلها
  • النموذج والإعدادات المستخدمة
  • ملاحظة توضّح ما يجعله فعّالًا

بمرور الوقت، تصبح مكتبتك أثمن أصول إنتاجيتك في مجال الذكاء الاصطناعي.

# Example prompt library entry
prompt_library = {
    'meeting_summary': {
        'template': (
            'Summarize the following meeting transcript in this format:\n'
            '1. Purpose: (1 sentence)\n'
            '2. Decisions: (bullet list, max 5)\n'
            '3. Action Items: (table: Task | Owner | Deadline)\n'
            '4. Open Questions: (numbered list)\n'
            'Missing info: N/A. Facts only.\n\nTranscript:\n[TRANSCRIPT]'
        ),
        'use_case': 'Post-meeting automation for Slack or Notion',
        'model': 'claude-opus-4-5',
        'temperature': 0,
        'notes': 'Works best with verbatim transcripts, not paraphrased notes'
    }
}

# Use the template
def run_meeting_summary(transcript):
    template = prompt_library['meeting_summary']['template']
    return template.replace('[TRANSCRIPT]', transcript)

print(run_meeting_summary('Alice: We decided to ship v2 next Friday...')[:200])

اختبار المعرفة

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

مبهم مقابل محدد — مراجعة

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

  • بنية المخرجات هي التحسين الأعلى عائدًا — فحدّدها دائمًا
  • عدد الكلمات أو العناصر يلغي الحاجة إلى التفاوض بشأن الطول تمامًا
  • وصف الجمهور يضبط المفردات والعمق تلقائيًا
  • قواعد الاستبعاد تمنع المحتوى العام المتوقع
  • التحديد الجزئي يترك فجوات أيضًا — فكل بُعد غير محدد هو مجرد تخمين
  • مكتبات الموجّهات تحفظ القوالب الناجحة لإعادة استخدامها مرارًا
البدء مجانًا

تعلم AI Prompt Engineering مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
53
الدروس
199

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

هل درس «مقارنة المطالبات الغامضة والمحددة» مجاني؟

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

ماذا ستتعلم في «مقارنة المطالبات الغامضة والمحددة»؟

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

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

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

كم من الوقت يستغرق درس «مقارنة المطالبات الغامضة والمحددة»؟

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

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

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

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

  1. أهمية التحديد
  2. إزالة الغموض من المطالبات
  3. إضافة تفاصيل ملموسة
  4. مقارنة المطالبات الغامضة والمحددة
← العودة إلى AI Prompt Engineering