نمط مطالبة: ترويسة-متن-تذييل
بنية مطالبة متسقة قابلة للتوسع لتشمل المطالبات المعقدة متعددة المهام
نمط مطالبة: ترويسة-متن-تذييل درس مجاني في AI Prompt Engineering على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Prompt Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
المطالبات بوصفها مستندات
تستخدم المستندات الطويلة — مثل التقارير والمقالات ورسائل البريد الإلكتروني — بنية الترويسة/المتن/التذييل لأنها سهلة التصفح ذهنيًا. إذ يعرف القراء ما يمكن توقعه في كل منطقة.
وينطبق المبدأ نفسه على المطالبات. فعندما تتجاوز المطالبات بضع جمل، تجعلها بنية الترويسة/المتن/التذييل سهلة التصفح والصيانة ومتسقة.
يعمل هذا النمط مع مختلف النماذج، ويتدرج من المطالبات البسيطة إلى المطالبات المعقدة جدًا.
قسم الترويسة
تجيب الترويسة عن سؤالين: من أنت؟ وما المهمة؟
وتحدد هوية النموذج (الشخصية أو الدور)، وتذكر الهدف الأساسي للمطالبة. ويبني كل ما يأتي بعد ذلك على هذا الأساس.
تكون الترويسة القوية موجزة — وتتكون عادةً من جملتين إلى أربع جمل. ولا تتضمن أمثلة أو قيودًا أو قواعد للمخرجات.
header = '''
<header>
You are an expert technical writer specializing in API documentation.
Your task is to write clear, developer-friendly documentation
for the API endpoint described in the body of this prompt.
</header>
'''
print(header)قسم المتن
يحتوي المتن على المحتوى أو السياق الذي يحتاجه النموذج لتنفيذ المهمة. وهذه هي منطقة البيانات الرئيسية:
- المستندات المصدرية المراد معالجتها
- سجل المحادثة
- البيانات المنظمة (مقتطفات JSON وCSV)
- المواد المرجعية
- المدخل الفعلي للمستخدم
المتن هو القسم الأكبر، وغالبًا ما يُحقن ديناميكيًا أثناء التشغيل.
def build_body(endpoint_spec):
return f'''
<body>
<endpoint_specification>
{endpoint_spec}
</endpoint_specification>
</body>
'''
spec = 'POST /api/v2/users\nRequest body: {email: string, role: admin|user}\nReturns: {id: string, created_at: ISO8601}'
print(build_body(spec))قسم التذييل
يحتوي التذييل على تعليمات التنسيق ومخطط المخرجات. ويظهر في النهاية للأسباب التالية:
- يقرأ النموذج من الأعلى إلى الأسفل، ويطبق قواعد التنسيق على ما عالجه للتو
- تقل احتمالية تجاهل تعليمات التنسيق القريبة من النهاية
- يمكن غالبًا إعادة استخدام التذييل بين المطالبات التي لها نوع المخرجات نفسه
ينبغي أن يكون التذييل صريحًا: أعد كائن JSON بهذه الحقول، لا أن يكتفي بعبارة نسّق الناتج بشكل جيد.
footer = '''
<footer>
Format your response as a JSON object with these fields:
{
"endpoint": "string",
"summary": "string (one sentence)",
"parameters": [{"name": "string", "type": "string", "required": true|false, "description": "string"}],
"response_example": "string (JSON)",
"error_codes": [{"code": "number", "meaning": "string"}]
}
Do not include any text outside the JSON object.
</footer>
'''
print(footer)تجميع النمط الكامل
جمع الترويسة والمتن والتذييل في دالة مطالبة كاملة قابلة لإعادة الاستخدام:
def build_api_doc_prompt(endpoint_spec):
header = '<header>\nYou are an expert technical writer. Document the API endpoint in the body.\n</header>'
body = f'<body>\n<endpoint>\n{endpoint_spec}\n</endpoint>\n</body>'
footer = '<footer>\nReturn JSON: {"summary": str, "parameters": [...], "response_example": str}\nNo text outside JSON.\n</footer>'
return '\n\n'.join([header, body, footer])
spec = 'GET /api/products/:id\nReturns product details by ID'
print(build_api_doc_prompt(spec))لماذا ينجح هذا الترتيب
يحاكي ترتيب الترويسة/المتن/التذييل طريقة معالجة النماذج للسياق:
- الترويسة أولًا — تحدد الهوية والهدف، وتهيئ النموذج لما سيأتي
- المتن ثانيًا — يعالج النموذج المحتوى الآن من منظور الدور والمهمة المحددين
- التذييل أخيرًا — تأتي تعليمات التنسيق مباشرة قبل أن ينشئ النموذج استجابته، مما يزيد تأثيرها في بنية المخرجات إلى أقصى حد
يؤدي وضع تعليمات التنسيق في الترويسة (في البداية) إلى نسيان النموذج جزءًا منها بحلول الوقت الذي يكتب فيه استجابته.
التوسّع إلى المطالبات المعقّدة
يتوسّع نمط Header/Body/Footer بسلاسة عندما تصبح المطالبات معقّدة:
def build_complex_prompt(persona, task, context_docs, constraints, output_schema):
header = f'<header>\n{persona}\nTask: {task}\n</header>'
docs = '\n'.join(f'<document id="{i+1}">\n{d}\n</document>' for i, d in enumerate(context_docs))
body = f'<body>\n{docs}\n</body>'
constraint_list = '\n'.join(f'- {c}' for c in constraints)
footer = f'<footer>\n<constraints>\n{constraint_list}\n</constraints>\n<output_schema>\n{output_schema}\n</output_schema>\n</footer>'
return '\n\n'.join([header, body, footer])إعادة استخدام قوالب Footer
بما أن Footer يحدّد بنية المخرجات، فهو القسم الأسهل لإعادة الاستخدام. ومن قوالب Footer الشائعة:
FOOTER_JSON = '<footer>\nReturn a valid JSON object. No text outside JSON. No markdown code fences.\n</footer>'
FOOTER_MARKDOWN = '<footer>\nFormat your response as markdown.\nUse ## for section headers.\nUse bullet points for lists.\nMaximum 500 words.\n</footer>'
FOOTER_STRUCTURED = '<footer>\nRespond using this exact structure:\n1. Summary (1 sentence)\n2. Key Findings (bullet list)\n3. Recommendation (1 paragraph)\n</footer>'
print('Footer templates ready for reuse.')حقن المحتوى الديناميكي في Body
يُبنى Body ديناميكيًا أثناء التشغيل أكثر من أي قسم آخر. أفضل الممارسات لحقن المحتوى الديناميكي في Body:
- احرص دائمًا على إحاطة المحتوى المحقون بوسوم XML مسماة
- نقِّ مدخلات المستخدم قبل حقنها لمنع حقن المطالبات
- اختصر المستندات الطويلة جدًا، واذكر عملية الاختصار في Body
- سمِّ كل جزء محقون بوضوح (document_1، user_query، chat_history)
def safe_inject(user_content, max_chars=3000):
safe = user_content.replace('<', '<').replace('>', '>')
if len(safe) > max_chars:
safe = safe[:max_chars] + '... [TRUNCATED]'
return f'<user_input>\n{safe}\n</user_input>'
raw = 'User provided text here. Could be very long.'
print(safe_inject(raw))بنية متسقة عبر قاعدة الشيفرة
تظهر القوة الحقيقية لنمط Header/Body/Footer عندما يستخدم تطبيقك بأكمله النمط نفسه باستمرار. الفوائد:
- يفهم أعضاء الفريق الجدد أي مطالبة فورًا
- تصبح مراجعة المطالبات في مراجعة الشيفرة أسهل — إذ يعرف المراجعون بالضبط أين يبحثون
- يمكن للاختبارات المؤتمتة التحقق من كل قسم بشكل مستقل
- يصبح نقل المطالبة بين النماذج مباشرًا — إذ يتغير المحتوى فقط، لا البنية
الأخطاء الشائعة في Header/Body/Footer
أخطاء تضعف فعالية النمط:
- وضع تعليمات التنسيق في Header — تكون بعيدة جدًا عن إنشاء الاستجابة، فيتجاهلها النموذج جزئيًا
- دفن وصف المهمة في Body — قد يتعامل النموذج معه على أنه بيانات لمعالجتها، لا توجيهًا يجب اتباعه
- توزيع القيود بين الأقسام — يصعب تدقيقها، ويؤدي ذلك إلى تناقضات
- غياب Footer — تصبح بنية المخرجات غير متوقعة مع ازدياد تعقيد المطالبة
تحقق سريع
أين ينبغي وضع تعليمات تنسيق المخرجات في نمط Header/Body/Footer، ولماذا؟
Header/Body/Footer — الخلاصات الأساسية
يضيف نمط Header/Body/Footer انضباط بنية المستندات إلى هندسة المطالبات:
- Header: من تكون + المهمة — يحدّد الإطار لكل ما يأتي بعده
- Body: المحتوى والسياق — يُحقنان ديناميكيًا ويُحاطان بوسوم XML دلالية
- Footer: تعليمات التنسيق ومخطط المخرجات — يوضع في النهاية لتحقيق أقصى تأثير في بنية المخرجات
- يتوسّع النمط بسلاسة من المطالبات البسيطة إلى المطالبات شديدة التعقيد
- يمكن إعادة استخدام قوالب Footer في المطالبات التي تشترك في نوع المخرجات نفسه
- تجعل الاتساقية عبر قاعدة الشيفرة المطالبات قابلة للمراجعة والاختبار والصيانة
تعلم 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 منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «نمط مطالبة: ترويسة-متن-تذييل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Prompt Engineering هذا؟
نعم. كل درس في AI Prompt Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استخدام وسوم XML كفواصل
- أقسام المطالبة المعيارية
- نمط مطالبة: ترويسة-متن-تذييل
- أفضل ممارسات تنظيم المطالبات