پرش به محتوا
آموزش

دستور سیستمی (System Prompt) چیست؛ از دستیار همه‌کاره تا دستیار اختصاصی شما

با یک اسکلت پنج‌بخشی و سه نمونهٔ آماده، دستوری بنویسید که مدل در هر گفت‌وگو به آن پایبند بماند؛ در پروژه‌های گیسو یا با نقش system در API.

تیم گیسو ۱۱ دقیقه مطالعه
دستور سیستمی (System Prompt) چیست؛ از دستیار همه‌کاره تا دستیار اختصاصی شما

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

دستور سیستمی همان دستورهای پایدار شماست

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

پرامپت سیستم با پیام معمولی فرق دارد. پیام معمولی برای همان نوبت گفت‌وگوست، اما دستور سیستمی در شروع زمینهٔ مدل می‌نشیند و روی پاسخ‌های بعدی اثر می‌گذارد. با این حال، مرز امنیتی نیست و هیچ رفتاری را قطعی نمی‌کند. مدل‌ها هنوز ممکن است اشتباه بفهمند، با متن کاربر درگیر شوند یا در موضوعی که اطلاعات ندارند پاسخ نادرست بسازند.

دستور سیستمی در هر پیام دوباره همراه درخواست فرستاده می‌شود. پس بخشی از توکن‌های ورودی را مصرف می‌کند و روی هزینهٔ هر پیام اثر می‌گذارد. کوتاه‌تر و دقیق‌تر نوشتن آن، معمولاً بهتر از نوشتن یک سند طولانی است.

یک اسکلت پنج‌بخشی برای نوشتن system prompt کافی است

نوشتن system prompt را با یک متن کوتاه شروع کنید. لازم نیست تمام حالت‌های دنیا را پیش‌بینی کنید. اگر پنج بخش زیر روشن باشند، مدل رفتار قابل‌پیش‌بینی‌تری پیدا می‌کند.

بخشکار اصلینمونهٔ کوتاه
نقشمدل بداند از چه جایگاهی پاسخ می‌دهد.شما ویراستار فارسی فروشگاه ما هستید.
مخاطبلحن و سطح توضیح با خواننده هماهنگ شود.مخاطب، خریدار غیرمتخصص است.
دانش و مرزهامدل بداند به چه منابعی تکیه کند و کجا توقف کند.اگر موجودی یا شرایط ارسال در متن نبود، حدس نزنید.
قالب پاسخزبان، طول، ساختار و قالب خروجی مشخص شود.پاسخ را در سه بند کوتاه و به فارسی بنویسید.
ابهاممدل بداند سؤال بپرسد یا با فرض محدود جلو برود.اگر هدف کاربر نامشخص بود، یک سؤال روشن بپرسید.

نقش را مثل عنوان شغلی دقیق بنویسید

«دستیار خوب باشید» رفتار مشخصی نمی‌سازد. بهتر است نقش را نزدیک به کار واقعی بنویسید: «پشتیبان فروشگاه پوشاک»، «ویراستار فارسی برای متن‌های آموزشی»، یا «بازبین کد Laravel». نقش باید محدود باشد تا مدل کمتر به شاخه‌های بی‌ربط برود.

مخاطب را با جزئیات مفید معرفی کنید

مخاطب تعیین می‌کند مدل چقدر توضیح بدهد و از چه واژه‌هایی استفاده کند. برای دانشجوی تازه‌کار، مثال ساده لازم است. برای توسعه‌دهندهٔ باتجربه، پاسخ کوتاه با اشاره به فایل و تابع بهتر جواب می‌دهد.

مرز دانش را صریح بگذارید

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

قالب پاسخ را قابل‌اندازه‌گیری کنید

به‌جای «کوتاه و مرتب»، بگویید «حداکثر چهار بند»، «با تیترهای کوتاه»، یا «در JSON معتبر». اگر خروجی برای سایت، اکسل یا کد استفاده می‌شود، قالب را دقیق‌تر بنویسید. این بخش جلوی ویرایش‌های تکراری را می‌گیرد.

برای ابهام تصمیم بگیرید

گاهی بهتر است مدل سؤال بپرسد. گاهی هم باید با یک فرض کم‌خطر جواب بدهد و فرض خود را اعلام کند. این قانون کوچک، پاسخ‌های نامطمئن را کمتر می‌کند.

سه دستور سیستمی آماده که می‌توانید کپی کنید

نمونه‌های زیر را مستقیم کپی کنید و نام برند، کانال پشتیبانی، زبان خروجی یا چارچوب فنی خود را جایگزین کنید. هر نمونه عمداً کوتاه نوشته شده تا هر بار همراه پیام‌های شما بار اضافهٔ زیادی نسازد.

پاسخ‌گویی به پرسش‌های مشتریان فروشگاه کوچک

شما دستیار پاسخ‌گویی فروشگاه اینترنتی [نام فروشگاه] هستید.
مخاطب شما خریدار فارسی‌زبان است. لحن شما محترمانه، روشن و نزدیک به زبان نوشتاری باشد.
فقط از اطلاعاتی استفاده کنید که در پیام کاربر، متن محصول یا اطلاعاتی که مدیر فروشگاه داده است وجود دارد.
اگر موجودی، زمان ارسال، قیمت، کد تخفیف یا شرایط مرجوعی در اطلاعات داده‌شده نبود، حدس نزنید. صریح بگویید این اطلاعات را ندارید و کاربر را به کانال پشتیبانی [آدرس یا شمارهٔ پشتیبانی] ارجاع بدهید.
پاسخ را در حداکثر سه بند کوتاه بنویسید. اگر لازم بود، یک سؤال تکمیلی بپرسید.
قول قطعی، وعدهٔ ارسال یا تخفیف جدید نسازید.

ویراستار فارسی برای متن‌های برند یا وبلاگ

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

بازبین کد برای Pull Requestهای PHP و Laravel

شما بازبین کد برای پروژه‌های PHP و Laravel هستید.
پاسخ را به فارسی بنویسید، اما نام کلاس‌ها، متدها، فایل‌ها، متغیرها و قطعه‌کدها را انگلیسی نگه دارید.
روی امنیت، خوانایی، خطاهای احتمالی، کارایی و سازگاری با Laravel تمرکز کنید.
اگر برای قضاوت به فایل یا توضیح بیشتری نیاز دارید، اول سؤال بپرسید و حکم قطعی ندهید.
خروجی را با این قالب بدهید: «مشکل»، «اثر»، «پیشنهاد»، «نمونهٔ کد در صورت نیاز».
برای تغییرهای سلیقه‌ای، شدت را «پیشنهاد سبک» بنویسید. برای باگ یا ریسک امنیتی، شدت را «مهم» یا «بحرانی» مشخص کنید.

در گیسو آن را در پروژه، تنظیمات یا همان چت می‌نویسید

اگر می‌خواهید یک دستیار اختصاصی هوش مصنوعی برای کار تکرارشونده بسازید، بهترین جا در گیسو معمولاً پروژه است. در پروژه‌های گیسو برای هر پروژه می‌توانید دستور سیستمی، مدل پیش‌فرض و تنظیمات پیش‌فرض جدا بگذارید. هر چتی که داخل آن پروژه شروع شود، همان تنظیمات را همراه خود دارد.

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

در حالت حرفه‌ای چت هم می‌توانید برای همان گفت‌وگو دستور سیستمی بنویسید و تنظیمات فنی را تغییر دهید. این روش وقتی خوب است که یک کار موقت دارید؛ مثلاً می‌خواهید فقط برای بررسی یک فایل، مدل مثل حسابرس محتوا رفتار کند.

گیسو حافظهٔ خودکار بین چت‌ها ندارد. اگر چیزی را در پروژه یا تنظیمات ننویسید، مدل از چت‌های قبلی آن را به خاطر نمی‌آورد.

در API پیام اول را با نقش system بفرستید

در وب‌سرویس گیسو، دستور سیستمی همان پیام اول با نقش system است. قالب درخواست با OpenAI سازگار است، پس می‌توانید با کتابخانهٔ رسمی openai کار کنید و فقط نشانی پایه را روی https://gisoo.pro/api/v1 بگذارید. جزئیات بیشتر را در مستندات چت API می‌بینید.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GISOO_API_KEY"],
    base_url="https://gisoo.pro/api/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[
        {
            "role": "system",
            "content": "شما ویراستار فارسی هستید. متن را روان، دقیق و رسمیِ نزدیک به مخاطب ویرایش کنید. معنا را تغییر ندهید.",
        },
        {
            "role": "user",
            "content": "این متن را ویرایش کنید: ارسال سفارشات با سرعت انجام میشه و مشتری میتونه پیگیری کنه.",
        },
    ],
)

print(response.choices[0].message.content)

کلید API را از متغیر محیطی GISOO_API_KEY بخوانید و آن را در کد فرانت‌اند یا اپ موبایل نگذارید. پیام سیستمی هم مثل بقیهٔ متن درخواست برای تولید پاسخ به ارائه‌دهندهٔ مدل فرستاده می‌شود، پس اطلاعات محرمانه را داخل آن ننویسید.

اشتباه‌های رایج، دستور سیستمی را بی‌اثر یا پرریسک می‌کنند

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

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

سومین اشتباه، گذاشتن راز داخل پرامپت سیستم است. کلید API، کدهای تخفیف داخلی، قیمت‌های پنهان، قراردادها و اطلاعاتی از این جنس را آنجا نگذارید. کاربر گاهی می‌تواند با پرسش‌های پیاپی مدل را وادار کند بخشی از دستورها را بازگو کند. پس دستور سیستمی را دیوار امنیتی حساب نکنید.

چهارمین اشتباه، انتظار دانش از متنی است که هرگز به مدل نداده‌اید. اگر مدل باید دربارهٔ شرایط ارسال، سیاست مرجوعی یا ساختار دیتابیس شما پاسخ دهد، آن اطلاعات باید در پیام، فایل، پروژه یا سیستم شما وجود داشته باشد. برای شناخت بهتر خطای ساختن پاسخ از روی حدس، راهنمای توهم هوش مصنوعی را بخوانید.

با سؤال‌های واقعی آن را تست و کوتاه‌تر کنید

برای آزمون، ۸ تا ۱۰ سؤال واقعی جمع کنید؛ همان‌هایی که مشتریان، همکاران یا کاربران شما می‌پرسند. بعد از هر تغییر در دستور سیستمی، همان سؤال‌ها را دوباره اجرا کنید و پاسخ‌ها را کنار هم بگذارید. اگر فقط با یک سؤال تست کنید، ممکن است یک اصلاح کوچک در جای دیگر رفتار مدل را خراب کرده باشد.

هنگام تست، اگر مدل شما دما را می‌پذیرد، آن را پایین نگه دارید تا تغییرها کمتر از تصادف مدل اثر بگیرند؛ در مدل‌های استدلالی مثل gpt-5-mini این کنترل نیست. اگر نمی‌دانید دما و Top-P چه تغییری در پاسخ می‌سازند، راهنمای تنظیمات دما و Top-P نقطهٔ شروع خوبی است.

بعد از هر دور تست، جمله‌های اضافه را حذف کنید. اگر یک قانون در هیچ سؤال واقعی اثری ندارد، احتمالاً لازم نیست در دستور سیستمی بماند. متن کوتاه‌تر هم خواناتر است و هم چون هر بار در پنجرهٔ زمینه فرستاده می‌شود، توکن ورودی کمتری مصرف می‌کند. برای فهمیدن جای دستورها در پنجرهٔ مدل، توضیح پنجرهٔ زمینه را ببینید.

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

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

امتحان در گیسو چت با هوش مصنوعی حساب رایگان است؛ برای استفاده از مدل‌ها اعتبار لازم دارید. برای برنامه‌نویس‌ها مستندات وب‌سرویس (API) یک کلید و یک نشانی برای صدها مدل از شرکت‌های مختلف، سازگار با کتابخانهٔ OpenAI.

پرسش‌های پرتکرار

دستور سیستمی را کجا بنویسم؟

در گیسو می‌توانید آن را داخل پروژه، تنظیمات عمومی یا حالت حرفه‌ای هر چت بنویسید. در API هم پیام اول را با نقش system می‌فرستید. اگر رفتار ثابت برای چند چت می‌خواهید، پروژه انتخاب مناسب‌تری است.

system prompt با پرامپت معمولی چه فرقی دارد؟

system prompt قبل از پیام‌های عادی قرار می‌گیرد و نقش و قانون‌های پایدار گفت‌وگو را مشخص می‌کند. پرامپت معمولی معمولاً درخواست همان نوبت است. با این حال، دستور سیستمی هم قطعی نیست و باید تست شود.

می‌شود رمز یا کلید API را در دستور سیستمی گذاشت؟

نه، دستور سیستمی جای اطلاعات محرمانه نیست. کاربر ممکن است با روش‌های مختلف مدل را به بازگویی بخشی از دستورها نزدیک کند. کلیدها، کدهای داخلی و اطلاعات حساس را فقط در سمت سرور نگه دارید.

دستور سیستمی طولانی بهتر جواب می‌دهد؟

نه لزوماً. متن طولانی اگر متناقض یا پر از قانون‌های کم‌اثر باشد، رفتار مدل را بدتر می‌کند و هر بار توکن ورودی بیشتری مصرف می‌کند. معمولاً یک متن کوتاه با نقش، مخاطب، مرز دانش، قالب پاسخ و رفتار در ابهام نتیجهٔ پایدارتر می‌دهد.

نوشتهٔ تیم گیسو همهٔ مطالب وبلاگ خوراک RSS