موجّه النظام (system prompt) مجموعة تعليمات يتلقاها نموذج الذكاء الاصطناعي قبل بدء المحادثة، وتنطبق على كل رسالة بعدها. يحدد دور النموذج وجمهوره وقواعده وصيغة إجاباته الافتراضية، فلا تحتاج إلى تكرارها في كل رسالة. المستخدم يكتب الموجّهات، وموجّه النظام يشكّل طريقة إجابة النموذج عنها كلها.
كل تطبيق محادثة يستخدم واحدًا بالفعل. عندما تفتح ChatGPT أو Claude أو Gemini، يكون لدى النموذج مسبقًا تعليمات من الشركة التي تقف خلفه، ولا تعرضها لك نافذة المحادثة. وعندما يبني المطوّرون تطبيقًا فوق نموذج، يكون موجّه النظام هو المكان الذي يحوّلون فيه نموذجًا عامًا إلى مدرّس برمجة أو مساعد دعم أو كاتب رسائل commit.
ماذا يفعل موجّه النظام
لمُدخل النموذج في المحادثة بنية: موجّه النظام أولًا، ثم المحادثة على شكل رسائل متبادلة بين المستخدم والمساعد. يقع موجّه النظام فوق التبادل كله، فيكون أمام النموذج عند كل رد مهما طالت المحادثة.
هذا الموقع يجعله المكان المناسب لكل ما يجب أن يسري دائمًا: من يخاطب النموذج، وما المسموح له وما الممنوع، وكيف تبدو الإجابة افتراضيًا. كما تُدرَّب النماذج على إعطائه وزنًا أكبر من رسالة المستخدم عندما يتعارضان. هذا ميل، وليس قفلًا. قد ينجح مستخدم مصمّم أحيانًا في إقناع النموذج بتجاهل موجّه النظام، ولهذا يجب ألا يكون وسيلة الحماية الوحيدة لديك.
موجّه النظام مقابل رسالة المستخدم
| موجّه النظام | رسالة المستخدم | |
|---|---|---|
| من يكتبه | المطوّر، أو أنت في إعدادات التطبيق | أنت، في مربع المحادثة |
| النطاق | المحادثة كلها | طلب واحد |
| المحتوى المعتاد | الدور، والجمهور، والقواعد، والحقائق، والصيغة الافتراضية | المهمة والمادة الخاصة بها |
| متى يتغير | نادرًا | في كل دور |
| الوزن عند التعارض | أعلى عادةً | أقل عادةً |
اختبار مفيد: إذا كانت الجملة صحيحة لكل رسالة في المحادثة، فمكانها موجّه النظام. وإذا كانت تخص هذا الطلب بعينه، فمكانها رسالة المستخدم. عبارة "أجب في أقل من 100 كلمة" قد تصلح في أي منهما، أما "لخّص البريد التالي" فهي دائمًا رسالة مستخدم.
أين تضبط موجّه النظام
في واجهة API، موجّه النظام مُدخل منفصل. في مكتبة Python من OpenAI يكون الرسالة الأولى في القائمة، بالدور system. وتستخدم وثائق OpenAI أيضًا اسم رسالة المطوّر (developer message) للنوع نفسه من التعليمات في النماذج الأحدث.
from openai import OpenAI
client = OpenAI()
MODEL = "your-model-id" # e.g. from your provider's model list
response = client.chat.completions.create(
model=MODEL,
messages=[
{"role": "system", "content": "You are a patient Python tutor. Give hints, not full solutions."},
{"role": "user", "content": "Why does my loop stop at 9?"},
],
)
print(response.choices[0].message.content)
وفي مكتبة Python من Anthropic يكون معامل system في المستوى الأعلى، وتحتوي قائمة messages على المحادثة فقط:
import anthropic
client = anthropic.Anthropic()
MODEL = "your-model-id" # e.g. from your provider's model list
message = client.messages.create(
model=MODEL,
max_tokens=500,
system="You are a patient Python tutor. Give hints, not full solutions.",
messages=[{"role": "user", "content": "Why does my loop stop at 9?"}],
)
print(message.content[0].text)
وتسمّيه واجهة Gemini من Google تعليمات النظام (system instruction). الاسم مختلف والفكرة واحدة.
في تطبيقات المحادثة، لا تحصل على حقل النظام الخام، لأن للتطبيق حقله الخاص مسبقًا. ما تحصل عليه مكان تضيف فيه تعليمات دائمة يضمّنها التطبيق نيابة عنك. في ChatGPT هي التعليمات المخصصة، وتعليمات المشروع، وتعليمات GPT المخصص. وفي Claude هي تعليمات المشروع والتفضيلات في ملفك الشخصي. وفي Gemini هي تعليمات Gem. الطريقة الدقيقة التي يدمج بها كل تطبيق نصك مع تعليماته غير موثّقة بالكامل، لكنها عمليًا تتصرف كموجّه نظام تتشاركه مع التطبيق.
ماذا تضع في موجّه النظام
- الدور والجمهور. عبارة "أنت مدرّس لطلاب في شهرهم الأول من تعلّم البرمجة" تحدد المفردات ومستوى كل إجابة. تشرح صفحة موجّه الدور ما يغيّره الدور وما لا يغيّره.
- قواعد تسري في كل دور. ما يجب على النموذج فعله دائمًا أو عدم فعله أبدًا: إعطاء تلميحات بدلًا من الحلول الكاملة، والإجابة عن أسئلة المنتج فقط، والرد بلغة المستخدم.
- ماذا يفعل عند الشك. عبارة "إذا لم تكن الإجابة في الحقائق التالية، فقل إنك لا تعرف" تفعل ضد الإجابات المختلقة أكثر مما تفعله عبارة عامة مثل "كن دقيقًا".
- الحقائق التي يحتاجها النموذج. تفاصيل المنتج، والسياسات، والتاريخ الحالي، وخطة المستخدم. لا يستطيع النموذج الإجابة عن أسئلة تطبيقك من بيانات تدريبه.
- الصيغة الافتراضية. الطول، والبنية، واستخدام كتل الكود أو عدمه. إذا كان برنامج سيقرأ المخرجات، فحدد الشكل بدقة، وراجع المخرجات المنظمة.
ما لا تضعه فيه
الأسرار. موجّه النظام ليس خاصًا. يستطيع المستخدمون أن يطلبوا من النموذج تكرار تعليماته أو يخدعوه ليفعل، والنماذج لا ترفض بشكل موثوق. مفاتيح API وكلمات المرور وكل ما لا تريد نشره لا مكان لها هناك. تعامل مع موجّه النظام على أنه نص قد يقرؤه المستخدم يومًا ما، وراجع حقن الموجّهات لتعرف كيف تُتجاوز التعليمات.
مهمة رسالة واحدة. إذا قال موجّه النظام "لخّص هذا المقال"، فلن يجد الطلب الثاني في المحادثة مكانًا يذهب إليه.
أكوام القواعد المتداخلة. عشرون قاعدة كُتبت في أوقات مختلفة تميل إلى التناقض، ويضطر النموذج إلى تخمين أيها يغلب. جمّع القواعد، واحذف المكرر، وحدد الأولويات عندما يمكن أن تتصادم قاعدتان.
الحشو. موجّه النظام يُرسل مجددًا مع كل طلب ويُحسب من نافذة السياق الخاصة بالنموذج، فكل فقرة غير ضرورية تدفع ثمنها في كل دور.
أمثلة على موجّه النظام
المثال الأول مساعد داخل منتج. يحدد موجّه النظام نطاقًا وطولًا وقاعدة للأسئلة التي لا يستطيع الإجابة عنها، ويحمل الحقائق التي يحتاجها النموذج. تنقّل بين التبويبات لترسل إليه رسائل مختلفة: موجّه النظام نفسه يشكّل الردود الثلاثة.
افتح المشترى في معاملاتك واضغط تقسيم. ثم اختر الفئتين، البقالة ومستلزمات المنزل، وأدخل المبلغ الخاص بكل منهما.
المثال الثاني من نوع النص الذي قد تضعه في التعليمات المخصصة أو تعليمات المشروع في تطبيق محادثة. يصفك أنت والطريقة التي تريد بها الإجابات، فتبدأ كل محادثة من هناك.
import { readFile } from "node:fs/promises";
const config = JSON.parse(await readFile("config.json", "utf8"));
تمرير الترميز يجعل readFile تُرجع نصًا، وتحوّله JSON.parse إلى كائن. الكلمة await في المستوى الأعلى تعمل فقط في وحدة ES (أي "type": "module" في package.json أو ملف .mts)، وإلا فضع الاستدعاء داخل دالة async. أضف try/catch إذا كان الملف قد يكون مفقودًا أو تالفًا.
من دون موجّه النظام، يترك سؤال قصير مثل "كيف أقرأ ملف JSON؟" النموذج يخمّن اللغة، وكثيرًا ما يأتي الرد بلغة Python أو JavaScript عادية مع فقرة عن ماهية JSON. ومع موجّه النظام، يختار الرد اللغة وبيئة التشغيل الصحيحتين، ويتجاوز الأساسيات، ويتبع الشكل المطلوب.
البنية نفسها تصلح لأي مساعد تُعدّه: من يخدم، والقواعد، وماذا يفعل عند الشك، والحقائق التي يحتاجها، وصيغة الإجابة. اكتبه مرة واحدة، واختبره بسؤال عادي، وسؤال خارج الموضوع، وسؤال يحاول كسر قاعدة، وعدّله حتى تصبح الردود الثلاثة كما تريد.
الأسئلة الشائعة
ما هو موجّه النظام؟
موجّه النظام (system prompt) مجموعة تعليمات يتلقاها نموذج الذكاء الاصطناعي قبل بدء المحادثة، وتنطبق على كل رسالة بعدها. يحدد عادةً الدور والجمهور والقواعد وصيغة الإجابة الافتراضية. في واجهة API يكون حقلًا أو رسالة نظام منفصلة، وفي تطبيقات المحادثة تؤدي التعليمات المخصصة وتعليمات المشروع الغرض نفسه.
ما الفرق بين موجّه النظام وموجّه المستخدم؟
موجّه النظام يحمل تعليمات دائمة للمحادثة كلها، ويكتبه عادةً المطوّر أو يُضبط مرة واحدة في الإعدادات. أما موجّه المستخدم فرسالة واحدة تطلب شيئًا واحدًا. وعندما يتعارضان، تُدرَّب النماذج على إعطاء موجّه النظام وزنًا أكبر، مع أن ذلك ميل لا ضمان.
هل يمكنني ضبط موجّه نظام في ChatGPT أو Claude أو Gemini؟
ليس حقل النظام الخام، لكن شيئًا قريبًا منه. في ChatGPT توجد التعليمات المخصصة، وتعليمات المشروع، وتعليمات GPTs المخصصة. وفي Claude توجد تعليمات المشروع وتفضيلات الملف الشخصي. وفي Gemini توجد تعليمات Gems. يدمج التطبيق ما تكتبه هناك مع تعليمات النظام الخاصة به ويطبّقه على محادثاتك.
هل يستطيع المستخدمون رؤية موجّه النظام أو استخراجه؟
غالبًا نعم. يستطيع المستخدم أن يطلب من النموذج تكرار تعليماته أو يخدعه ليفعل ذلك، والنماذج لا تحفظها سرًّا بشكل موثوق. لا تضع أبدًا كلمات مرور أو مفاتيح API أو تفاصيل عمل سرية في موجّه النظام، ولا تعتمد عليه حاجزًا أمنيًا.
كم يجب أن يكون طول موجّه النظام؟
بالقدر الذي يغطي ما ينطبق على كل رسالة لا أكثر. قد يكون الموجّه الشخصي ثلاث جمل أو أربعًا. أما موجّه النظام لمنتج ما فيصل غالبًا إلى صفحة، فيها الدور والقواعد والحقائق وصيغة المخرجات. كل كلمة تُرسل مع كل طلب، فهي تكلّف توكنات في كل مرة أيضًا.