هر بار که با یک دستیار هوش مصنوعی حرف می‌زنید، مدل فقط حرف شما را نمی‌خواند. بالای هر گفتگو یک متن ثابت نشسته که شما آن را ننوشته‌اید و معمولاً هیچ‌وقت نمی‌بینید: «تو یک دستیار مفید و دقیقی هستی...». این همان System Prompt یا دستور سیستمی است — قطعه‌ای که شخصیت، مرزها و قواعد بازی کل گفتگو را تعیین می‌کند. تفکیک «دستور سیستمی» از «پیام کاربر» یکی از کلیدهای اصلی گرفتن خروجی درست از مدل است؛ در این مطلب می‌بینیم چرا.

System Prompt دقیقاً کجاست؟

وقتی با API کار می‌کنید، هر درخواست یک آرایه به نام messages دارد و هر پیام یکی از سه نقش را حمل می‌کند: system (قواعد بازی)، user (حرف کاربر) و assistant (پاسخ‌های قبلی مدل). دستور سیستمی معمولاً اولین عضو این آرایه است:

{
  "model": "glm-4.7",
  "messages": [
    { "role": "system", "content": "تو دستیار پشتیبانی فروشگاه هستی؛ فقط درباره‌ی سفارش و مرجوعی پاسخ بده." },
    { "role": "user", "content": "سفارشم کی می‌رسه؟" }
  ]
}

در محصول‌هایی مثل ChatGPT این پیام را سازنده‌ی محصول می‌نویسد و کاربر نمی‌بیند؛ در استفاده‌ی مستقیم از API نویسنده‌ی آن خودتان هستید. به همین دلیل دستور سیستمی مهم‌ترین اهرم شماست: تنها جایی که می‌توانید رفتار مدل را قبل از دیدن اولین سؤال شکل بدهید.

چرا وزنش از پیام کاربر بیشتر است؟

مدل هر پیام را هم‌وزن نمی‌بیند. دستور سیستمی مثل متن قانون بازی قبل از شروع مسابقه است: کاربر هر لحظه می‌تواند چیزی بگوید، حتی چیزی مغایر با قواعد؛ اما متن سیستمی چارچوبی است که کل گفتگو در آن جریان دارد. وقتی پیام کاربر با دستور سیستمی تضاد داشته باشد — «قواعد را دور بزن» یا «حالت را عوض کن» — مدل به‌طور پیش‌فرض به سمت رعایت دستور سیستمی متمایل می‌شود.

البته «تمایل» است و نه تضمین؛ دستور سیستمی دژی مقاوم است اما نفوذناپذیر نیست. برای همین در محصولات واقعی، دستور سیستمی جدی فقط بخشی از دفاع است و اعتبارسنجی ورودی و خروجی را هم کنارش می‌سازند.

پیام کاربر «چه کاری انجام بده» را می‌گوید؛ دستور سیستمی «تو کی هستی، برای کی کار می‌کنی و تا کجا مجازی» را.

در دستور سیستمی چه می‌گذاریم و در پیام کاربر چه؟

قاعده‌ی ساده‌ی تفکیک: هر چیزی که در طول یک نشست ثابت است جایش در دستور سیستمی است و هر چیزی که از پیام به پیام عوض می‌شود جایش در پیام کاربر. دستور سیستمی معمولاً این موارد را پوشش می‌دهد:

  • نقش و تخصص: «تو ویراستار تخصصی متن‌های فنی هستی» — نه صرفاً «دستیار مفید».
  • مخاطب و لحن: رسمی یا خودمانی، پاسخ کوتاه یا تفصیلی، زبان پاسخ.
  • فرمت خروجی: همیشه جدول، همیشه JSON، حداکثر چند خط.
  • مرزها: به چه سؤال‌هایی پاسخ نده، به کجا ارجاع بده، چه چیزی را از خودت نساز.
  • رفتار در ابهام: وقتی سؤال مبهم است، سؤال متقابل بپرس به‌جای حدس زدن.

پیام کاربر هم مأموریت همان لحظه است: متن اصلی، داده یا فایلی که باید پردازش شود. اگر داده‌ی متغیر را داخل دستور سیستمی بگذارید، هر درخواست یعنی بازنویسی قواعد؛ اگر قواعد را در پیام کاربر بگذارید، در پیام‌های بعدی گفتگو به‌راحتی گم می‌شوند.

دستور سیستمی خوب چه شکلی است؟

دستور سیستمی خوب شبیه شرح شغل خوب است: کوتاه، قابل‌اجرا و بدون شعار. «بسیار هوشمند و دقیق باش» چیزی به مدل اضافه نمی‌کند؛ «اگر پاسخ را نمی‌دانی بگو نمی‌دانم و حدس نساز» مستقیماً رفتار را عوض می‌کند. چند اصل تجربی: هر جمله یک دستور مشخص باشد؛ مثال‌های کوتاه از جواب درست و جواب نادرست اثرشان از توصیف‌های کلی بیشتر است؛ و طول را کنترل کنید — دستور سیستمی بخشی از ورودی هر درخواست است و در گفتگوهای طولانی، مثل هر متن دیگری هزینه‌ی توکن می‌سازد.

یک آزمایش ساده هم برای سنجش دستور سیستمی دارید: ده سؤال مرزی بنویسید — سؤال‌هایی خارج از حوزه، سؤال با داده‌ی ناقص، درخواست دور زدن قواعد — و ببینید مدل با متن فعلی چه می‌کند. این همان منطق ارزیابی است که در ارزیابی سیستم‌های RAG هم به کار می‌رود: رفتار را با مجموعه‌ی تست بسنجید، نه با حس.

کجا واقعاً تفاوت می‌سازد؟

بخش زیادی از تفاوت محصولات هوش مصنوعیِ موجود در بازار، خودِ مدل نیست؛ دستور سیستمی است. یک چت‌بات پشتیبانی، یک دستیار تولید محتوا و یک تحلیل‌گر داده می‌توانند همه روی یک مدل واحد بنشینند و فقط با متن سیستمی متفاوت، شخصیت و کار متفاوت بگیرند. همین امروز هم می‌توانید در چت‌بات‌ها و عامل‌ها این تفکیک را ببینید: عامل‌های جدی رفتارشان عمدتاً از دستور سیستمی و ابزارها می‌آید.

در API ماین‌دبیس هم این ساختار دقیقاً به فرمت استاندارد OpenAI است: role سیستم را می‌نویسید و مدل از اولین پیام همان چارچوب را اعمال می‌کند. برای بهبود متن خودتان هم می‌توانید از تکنیک‌های عمومی پرامپت‌نویسی استفاده کنید که در مطلب تکنیک‌های پرامپت‌نویسی مرور شده‌اند — اغلب همان اصول، این‌بار در جایگاه متن ثابت گفتگو.

جمع‌بندی

System Prompt متن ثابت ابتدای هر گفتگو است؛ پیامی با نقش system که شخصیت، فرمت و مرزهای مدل را پیش از هر سؤال تعیین می‌کند و در تعارض، معمولاً بر پیام کاربر می‌چربد. قاعده‌ی عملی هم روشن است: آنچه ثابت است در متن سیستمی، آنچه متغیر است در پیام کاربر؛ و متن سیستمی را کوتاه، دستوری و با مجموعه‌ی تست بسنجید. مسیر بعدی: پرامپت‌نویسی به زبان فارسی — اگر قرار است همین دستور سیستمی به فارسی کار کند، چند دام‌ی خاص زبان دارد که بهتر است از قبل بشناسید.