AI Prompt Engineering · درس

تحليل السبب الجذري للمطالبات

حدّدوا ما إذا كان الفشل في السياق أو التعليمات أو التنسيق أو قدرات النموذج

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

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

أهمية تحليل السبب الجذري

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

تحليل السبب الجذري (RCA) هو عملية منهجية لعزل السبب المحدد لفشل المطالبة، بحيث يعالج الإصلاح المشكلة الفعلية.

فئات الأسباب الجذرية الأربع

يعود كل فشل في المطالبة إلى أحد أربعة أسباب جذرية:

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

السبب الجذري 1: مشكلة في السياق

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

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

# Failing prompt — no context
prompt_v1 = 'What is the current price of our Pro plan?'

# Context problem test: inject the information
prompt_v2 = '''
Our pricing (as of today):
- Free: $0/month
- Pro: $19/month
- Enterprise: $99/month

Question: What is the current price of our Pro plan?
'''
# If v2 succeeds and v1 fails -> root cause is context problem

السبب الجذري 2: غموض التعليمات

يحدث غموض التعليمات عندما يمكن تفسير المطالبة بشكل معقول بعدة طرق، ويختار النموذج التفسير الخاطئ.

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

# Ambiguous
prompt_ambiguous = 'Summarize the following article briefly.'

# Precise — ambiguity removed
prompt_precise = (
    'Summarize the following article in exactly 2 sentences. '
    'Do not exceed 50 words. Output only the summary, nothing else.'
)

# Test: if precise version succeeds, root cause was ambiguity
# Fix: replace vague qualifiers with exact specifications

السبب الجذري 3: تعارض التنسيق

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

مثال: تقول مطالبة النظام «أجب بنص عادي»، بينما تقول رسالة المستخدم «استخدم markdown». وقد يتبع النموذج أيًا منهما بشكل غير متسق.

# Format conflict example
system_prompt = 'You are a helpful assistant. Always respond in plain text without any formatting.'

user_message = 'List the top 5 benefits of exercise. Use markdown bullet points.'

# The model faces a conflict: plain text vs markdown.
# Detection: if output format is inconsistent across runs, look for conflicting instructions.

# Fix: ensure all format instructions agree. Move format to system prompt only.
system_prompt_fixed = (
    'You are a helpful assistant. '
    'Always respond using markdown bullet points for lists.'
)

السبب الجذري 4: حدود قدرات النموذج

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

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

# Capability limit test: try the same task on different models
models = ['gpt-4o-mini', 'gpt-4o', 'gpt-4o-2024-11-20']
results = {}

for model in models:
    resp = client.chat.completions.create(
        model=model,
        messages=[{'role': 'user', 'content': complex_reasoning_prompt}]
    )
    results[model] = evaluate(resp.choices[0].message.content)

# If accuracy improves with more capable models -> capability limit
for model, score in results.items():
    print(f'{model}: {score:.0%} accuracy')

منهجية العزل

لتحديد السبب الجذري النشط، استخدم العزل المنهجي:

  1. شغّل المطالبة الفاشلة وصنّف نوع الفشل (إجابة خاطئة، تنسيق، وغير ذلك)
  2. أضف معلومات → إذا تم الإصلاح: مشكلة في السياق
  3. وضّح التعليمات → إذا تم الإصلاح: غموض
  4. راجع التناقضات → إذا تم الإصلاح: تعارض في التنسيق
  5. رقِّ النموذج → إذا تم الإصلاح: حدود قدرات النموذج

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

def rca_test(base_prompt, test_input, expected_output):
    results = {}

    # Test 1: base (failing) prompt
    results['base'] = run_and_evaluate(base_prompt, test_input, expected_output)

    # Test 2: add context
    results['with_context'] = run_and_evaluate(
        base_prompt + '\nContext: ' + get_context(test_input),
        test_input, expected_output
    )

    # Test 3: clarify instructions
    results['clarified'] = run_and_evaluate(
        clarify(base_prompt), test_input, expected_output
    )

    for name, passed in results.items():
        print(f'{name}: {"PASS" if passed else "FAIL"}')

الاستبعاد مقابل التأكيد

يتبع RCA نمطين:

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

يتطلب التأكيد 3 مدخلات اختبار على الأقل. والإصلاح الذي يعمل مع مدخل واحد ولا يعمل مع المدخلات الأخرى لم يحل السبب الجذري؛ فقد يكون قد عالج عرضًا فقط.

def confirm_root_cause(fix_fn, test_cases, threshold=0.9):
    '''fix_fn: a function that takes a prompt and returns a fixed prompt'''
    passed = 0
    for case in test_cases:
        fixed_prompt = fix_fn(case['prompt'])
        result = run_and_evaluate(fixed_prompt, case['input'], case['expected'])
        if result:
            passed += 1

    pass_rate = passed / len(test_cases)
    print(f'Fix pass rate: {pass_rate:.0%}')
    if pass_rate >= threshold:
        print('Root cause CONFIRMED — fix is reliable.')
    else:
        print('Root cause NOT confirmed — failure has multiple causes.')

توثيق السبب الجذري

بعد تحديد السبب الجذري، وثّقه في سجل تغييرات المطالبة. أدرج ما يلي:

  • نوع الفشل المُلاحظ
  • فئة السبب الجذري
  • الفرضية التي جرى اختبارها
  • الدليل (أي اختبار نجح بعد الإصلاح)
  • التغيير المحدد الذي أُجري على المطالبة

يمنع ذلك المهندسين مستقبلًا من إعادة التحقيق في الفشل نفسه، ويتيح التعرّف على الأنماط عبر المطالبات.

rca_record = {
    'prompt_id': 'summarize_v3',
    'failure_type': 'wrong_format',
    'root_cause': 'format_conflict',
    'hypothesis': 'System prompt said plain text, user message asked for markdown',
    'evidence': 'Removing markdown instruction from user message resolved failure on 8/8 test cases',
    'fix_applied': 'Moved all format instructions to system prompt; removed format instructions from user template',
    'fix_date': '2024-11-15'
}

خطأ شائع: إصلاح السبب الخطأ

الخطأ الأكثر شيوعًا في RCA هو إصلاح العرض بدلًا من السبب. مثال:

  • العرض: يعيد النموذج JSON مع نص تمهيدي زائد
  • الإصلاح الخطأ: إضافة معالجة لاحقة لإزالة النص التمهيدي من الناتج
  • السبب الجذري الفعلي: عدم وجود تعليمات للتنسيق في المطالبة + اعتماد النموذج افتراضيًا على الأسلوب الحواري
  • الإصلاح الصحيح: إضافة التعليمات الصريحة «أعِد JSON صالحًا فقط. لا تُخرج أي نص آخر.»

تتراكم حيل المعالجة اللاحقة لتكوّن دينًا تقنيًا. أما إصلاحات السبب الجذري فدائمة.

تحليل RCA لحالات الفشل المتقطعة

تكون بعض حالات الفشل متقطعة؛ إذ تعمل المطالبة في 80% من الحالات، لكنها تفشل في 20% منها. ويصعب تشخيص هذه الحالات لأن تشغيل المطالبة مرة واحدة يعطي نتيجة صحيحة.

النهج: شغّل المطالبة من 10 إلى 20 مرة على المدخل نفسه. إذا كان معدل الفشل غير صفري، فالمطالبة لديها سبب جذري احتمالي — وعادةً ما يكون غموضًا في التعليمات أو قيمة temperature مرتفعة. الإصلاح: اجعل التعليمات أكثر تحديدًا، أو خفّض temperature.

def measure_failure_rate(prompt, test_input, expected, runs=20):
    failures = 0
    for _ in range(runs):
        resp = client.chat.completions.create(
            model='gpt-4o',
            messages=[{'role': 'user', 'content': prompt + '\n' + test_input}],
            temperature=0.7
        )
        if not evaluate(resp.choices[0].message.content, expected):
            failures += 1
    print(f'Failure rate: {failures}/{runs} = {failures/runs:.0%}')

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

تطلب مطالبة استجابة بتنسيق JSON، لكنها تُعيد أحيانًا JSON مسبوقًا بعبارة حوارية مثل «حسنًا! إليك JSON:». وبعد إضافة «أعِد JSON صالحًا فقط. لا تُخرج أي نص آخر.» يتوقف الفشل. ما السبب الجذري؟

مراجعة: تحليل السبب الجذري

فئات الأسباب الجذرية الأربع لفشل المطالبات:

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

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

البدء مجانًا

تعلم 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 منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

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

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

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

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

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

  1. تشخيص المخرجات غير المتوقعة
  2. تحليل السبب الجذري للمطالبات
  3. نهج منهجي لتصحيح الأخطاء
  4. استراتيجيات التسجيل والتوثيق
← العودة إلى AI Prompt Engineering