إنشاء أنماط ملء الفراغات
استخدموا العناصر النائبة {{variable}} واستبدال السلاسل النصية في Python
إنشاء أنماط ملء الفراغات درس مجاني في AI Prompt Engineering على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Prompt Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
اصطلاح العناصر النائبة
يستخدم نمط الموجّه القائم على ملء الفراغات عناصر نائبة لتحديد أجزاء الموجّه التي ستُستبدل بقيم حقيقية قبل إرساله إلى النموذج.
أكثر اصطلاحات العناصر النائبة شيوعًا هو استخدام الأقواس المعقوفة المزدوجة: {{variable_name}}. يسهل قراءة هذا الاصطلاح، ومن غير المرجح أن يظهر مصادفةً في النص العادي، كما تدعمه مكتبات إنشاء القوالب على نطاق واسع.
ومن الاصطلاحات الأخرى التي ستواجهونها: الأقواس المعقوفة المفردة {variable}، والأقواس الزاوية <variable>، والمتغيرات المكتوبة بالأحرف الكبيرة ALL_CAPS. اختاروا اصطلاحًا واحدًا والتزموا به.
الاستبدال الأساسي للعناصر النائبة
أبسط نمط لملء الفراغات هو الاستبدال المباشر للسلاسل النصية:
القالب: "اكتب وصفًا من {{word_count}} كلمة عن {{product}} موجّهًا إلى {{audience}}."
النص بعد الملء: "اكتب وصفًا من 150 كلمة عن TaskFlow Pro موجّهًا إلى أصحاب الشركات الصغيرة."
يحدث الاستبدال قبل إرسال السلسلة النصية إلى النموذج — إذ يتلقى النموذج مطالبة مكتملة وواضحة من دون علامات العناصر النائبة. العناصر النائبة خطوة من خطوات المعالجة المسبقة، وليست شيئًا يتعامل معه النموذج نفسه.
الفئات الشائعة للعناصر النائبة
أنشئ قوالبك باستخدام فئات قياسية للعناصر النائبة تغطي معظم حالات الاستخدام:
{{customer_name}}— اسم المستلم أو الموضوع{{product}}— المنتج أو الخدمة أو الموضوع الذي يدور حوله المحتوى{{tone}}— مثل: رسمي، غير رسمي، عاجل، حماسي{{audience}}— الجهة التي تستهدفها المحتوى{{word_count}}— الطول المستهدف{{format}}— نقاط تعداد أو فقرات أو قائمة مرقمة{{context}}— معلومات أساسية خاصة بهذه الحالة
يجعل توحيد التسمية عبر القوالب مكتبتك أسهل في التصفح ويقلل الأخطاء.
الاستبدال باستخدام تنسيق السلاسل النصية في Python
تُعد طريقة السلاسل النصية المضمّنة .format() في Python وسيلة بسيطة لملء العناصر النائبة باستخدام الصيغة {variable}:
import openai
client = openai.OpenAI(api_key='sk-...')
EMAIL_TEMPLATE = '''Write a follow-up email from {sender_name} to {recipient_name}.
Context: {context}
Tone: {tone}
Length: {word_count} words.
Include a clear call to action: {cta}.
Do not mention competitors. Active voice. No bullet points.'''
def generate_email(sender, recipient, context, tone, word_count, cta):
prompt = EMAIL_TEMPLATE.format(
sender_name=sender,
recipient_name=recipient,
context=context,
tone=tone,
word_count=word_count,
cta=cta
)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}]
)
return response.choices[0].message.content
result = generate_email(
sender='Sarah Chen',
recipient='Mr. Patel',
context='We met at the DevConf conference last week and discussed API integration.',
tone='warm and professional',
word_count=120,
cta='Schedule a 20-minute demo call'
)
print(result)أسلوب f-string في Python
توفر f-strings في Python صيغة استبدال مضمنة يفضلها بعض المطورين لسهولة قراءتها:
import openai
client = openai.OpenAI(api_key='sk-...')
def generate_product_description(product, audience, tone, word_count, key_benefit):
prompt = (
f'Write a product description for {product}, designed for {audience}. '
f'Tone: {tone}. '
f'Length: {word_count} words. '
f'Lead with this key benefit: {key_benefit}. '
'Active voice. No bullet points. No pricing mentions.'
)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}]
)
return response.choices[0].message.content
print(generate_product_description(
product='FocusFlow, a time-blocking productivity app',
audience='freelancers and independent consultants',
tone='energetic and practical',
word_count=150,
key_benefit='Reclaim two hours every day by blocking distractions automatically'
))التعامل مع الأحرف الخاصة في العناصر النائبة
من الأخطاء الشائعة أن تؤدي القيم التي يُدخلها المستخدم وتحتوي على أقواس معقوفة أو علامات اقتباس أو أسطر جديدة إلى تعطيل استبدال السلاسل النصية.
أساليب الحماية:
- نقِّ المدخلات قبل الاستبدال — أزل الأحرف الخاصة أو اهربها عند الحاجة
- استخدم سلاسل نصية محاطة بثلاث علامات اقتباس للقوالب متعددة الأسطر، للتعامل مع الأسطر الجديدة بأمان
- عندما تحتوي قيمة المتغير نفسها على أقواس معقوفة، مثل الشيفرة، استخدم أسلوبًا يتعامل مع قيمة المتغير باعتبارها نصًا حرفيًا (ويتولى Jinja2 ذلك بكفاءة)
اختبر قالبك دائمًا باستخدام مدخلات من الحالات الحدية: سلاسل نصية فارغة، وسلاسل تحتوي على علامات اقتباس، وسلاسل تحتوي على أسطر جديدة، وسلاسل طويلة جدًا.
القيم الافتراضية في القوالب
ليست كل المتغيرات إلزامية. تصبح القوالب أكثر مرونة عند استخدام قيم افتراضية للمعاملات الاختيارية:
def build_prompt(product, audience, tone='professional and friendly', word_count=200, format_style='prose'):
format_instruction = {
'prose': 'Write in continuous paragraphs. No bullet points.',
'bullets': 'Use bullet points. Each point is one sentence.',
'numbered': 'Use a numbered list. Each item is one sentence.'
}.get(format_style, 'Write in continuous paragraphs.')
return (
f'Write a description of {product} for {audience}. '
f'Tone: {tone}. '
f'Length: {word_count} words. '
f'{format_instruction} '
'Active voice. No competitor mentions.'
)
# Minimal call — uses all defaults
print(build_prompt('Notion', 'students'))
# Full call — overrides defaults
print(build_prompt('Notion', 'students', tone='casual', word_count=100, format_style='bullets'))القوالب متعددة الكتل
قد تحتوي المطالبات المعقدة على كتل متغيرات متعددة — كتلة لمطالبة النظام وكتلة لرسالة المستخدم، ولكل منهما عناصر نائبة خاصة به:
SYSTEM_TEMPLATE = 'You are a {role} writing for {company}. Your audience is {audience}. Style: {style}.'
USER_TEMPLATE = 'Write a {content_type} about {topic}. Length: {word_count} words. Deadline tone: {urgency}.'
import openai
client = openai.OpenAI(api_key='sk-...')
def generate(role, company, audience, style, content_type, topic, word_count, urgency):
system_msg = SYSTEM_TEMPLATE.format(
role=role, company=company, audience=audience, style=style
)
user_msg = USER_TEMPLATE.format(
content_type=content_type, topic=topic,
word_count=word_count, urgency=urgency
)
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': system_msg},
{'role': 'user', 'content': user_msg}
]
)
return response.choices[0].message.contentالتحقق من صحة العناصر النائبة قبل تصيير القالب
تحقق دائمًا من ملء جميع العناصر النائبة المطلوبة قبل إرسال المطالبة. يعني غياب عنصر نائب أن النموذج سيتلقى نصًا حرفيًا مثل {{product}}، وقد ينتج مخرجات غريبة للغاية:
import re
def validate_template(template_str, provided_vars):
required = set(re.findall(r'\{\{(\w+)\}\}', template_str))
missing = required - set(provided_vars.keys())
if missing:
raise ValueError(f'Missing required template variables: {missing}')
return True
template = 'Write a {{word_count}}-word {{tone}} description of {{product}} for {{audience}}.'
vars_provided = {'word_count': 150, 'tone': 'friendly', 'product': 'TaskFlow'}
try:
validate_template(template, vars_provided)
except ValueError as e:
print(f'Template error: {e}')
# Output: Template error: Missing required template variables: {{'audience'}}كتل القالب الشرطية
ينبغي أحيانًا أن يظهر قسم من القالب فقط عند توفير متغير معين. يمكنك تنفيذ ذلك في Python من خلال بناء السلاسل النصية بشكل شرطي:
def build_report_prompt(topic, audience, word_count, include_recommendations=False, cta=None):
prompt = f'Write a report on {topic} for {audience}. Length: {word_count} words. Active voice.'
if include_recommendations:
prompt += ' End with a numbered list of 3 specific recommendations.'
if cta:
prompt += f' Close with this call to action: {cta}'
return prompt
# Without optional sections
print(build_report_prompt('cloud cost optimization', 'engineering managers', 400))
# With optional sections
print(build_report_prompt(
topic='cloud cost optimization',
audience='engineering managers',
word_count=600,
include_recommendations=True,
cta='Book a cost audit with our team at cloudcost.io'
))متغيرات الخيارات المحصورة
ينبغي تقييد بعض متغيرات القالب بمجموعة ثابتة من الخيارات الصالحة. افرض ذلك من خلال التحقق بأسلوب التعداد:
VALID_TONES = ['professional', 'casual', 'urgent', 'empathetic', 'enthusiastic']
VALID_FORMATS = ['prose', 'bullets', 'numbered', 'table']
def generate_content(topic, tone, format_style, word_count):
if tone not in VALID_TONES:
raise ValueError(f'Invalid tone: {tone}. Choose from: {VALID_TONES}')
if format_style not in VALID_FORMATS:
raise ValueError(f'Invalid format: {format_style}. Choose from: {VALID_FORMATS}')
format_map = {
'prose': 'continuous paragraphs, no lists',
'bullets': 'bullet points',
'numbered': 'numbered list',
'table': 'a markdown table'
}
prompt = (f'Write about {topic} in {tone} tone. '
f'Format: {format_map[format_style]}. '
f'Length: {word_count} words. Active voice.')
return promptاختبار المعرفة: أنماط ملء الفراغات
لديك هذا القالب: 'Write a {tone} email to {recipient} about {topic}. Length: {word_count} words.'
تستدعيه باستخدام: tone='formal', recipient='the team', word_count=100 — لكنك تنسى معامل topic.
ماذا يحدث؟
مراجعة: إنشاء أنماط ملء الفراغات
تستخدم أنماط المطالبات التي تملأ الفراغات عناصر نائبة ({{variable}} أو {variable} أو ما شابه ذلك) لتحديد الأجزاء المتغيرة من قالب قابل لإعادة الاستخدام. وتُعد .format() في Python وf-strings آليتي الاستبدال الأكثر شيوعًا.
أفضل الممارسات: تحقق من صحة جميع العناصر النائبة المطلوبة قبل تصيير القالب، واستخدم قيمًا افتراضية للمتغيرات الاختيارية، وقيّد المتغيرات المحصورة، وتعامل مع مدخلات الحالات الحدية، مثل السلاسل الفارغة والأحرف الخاصة، بحذر.
في الدرس التالي، ستستكشف Jinja2 وstring.Template في Python لتلبية احتياجات أكثر تقدمًا لاستبدال المتغيرات.
تعلم AI Prompt Engineering مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 53
- الدروس
- 199
الأسئلة الشائعة
هل درس «إنشاء أنماط ملء الفراغات» مجاني؟
نعم — نص درس «إنشاء أنماط ملء الفراغات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Prompt Engineering، انتقل إلى CoddyKit PRO. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
ماذا ستتعلم في «إنشاء أنماط ملء الفراغات»؟
استخدموا العناصر النائبة {{variable}} واستبدال السلاسل النصية في Python تتمرن على AI Prompt Engineering مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Prompt Engineering؟
لا تُشترط خبرة سابقة. AI Prompt Engineering على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «إنشاء أنماط ملء الفراغات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Prompt Engineering هذا؟
نعم. كل درس في AI Prompt Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما قالب المطالبة
- إنشاء أنماط ملء الفراغات
- تقنيات استبدال المتغيرات
- إعادة استخدام القوالب عبر المهام