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

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

خلاصه آنچه پیش رو دارید

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

پرامپت کاربر چیست؟

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

تفاوت اساسی پرامپت کاربر با پرامپت سیستمی در آن است که پرامپت کاربر پویا و متغیر است، در حالی که پرامپت سیستمی ثابت و از پیش تعریف‌شده است. برای درک عمیق‌تر تفاوت این دو، نوشتار پرامپت سیستمی و نقش آن را ببینید.

نقش پرامپت کاربر در سیستم‌های LLM

پرامپت کاربر سه نقش اصلی ایفا می‌کند:

۱. انتقال نیت

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

۲. تعریف دامنه

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

۳. تعیین سطح جزئیات

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

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

اصول پایه نوشتن پرامپت کاربر

در تجربه‌های عملی، چند اصل پایه بیشترین تأثیر را بر کیفیت پرامپت کاربر داشته‌اند:

صراحت بر ابهام

یک پرامپت صریح، همیشه بهتر از یک پرامپت مبهم عمل می‌کند. به‌جای "چیزی درباره X بنویس"، بنویسید "سه نکته‌ی کلیدی X را با مثال عملی توضیح بده".

سادگی بر پیچیدگی

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

زمینه‌محوری بر عمومی‌گویی

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

ساختار بر پراکندگی

پرامپتی که ساختار دارد، هم برای مدل و هم برای کاربر قابل پردازش‌تر است. اگر درخواست چند بخش دارد، هر بخش را به‌صورت مشخص بنویسید.

پرامپت کاربر یک درخواست ساده نیست؛ یک مشخصات فنی است. اگر انتظار دارید مدل بهترین پاسخ را بدهد، باید بهترین درخواست را بنویسید.

ساختار یک پرامپت کاربر مؤثر

پرامپت کاربر مؤثر معمولاً از چند بخش تشکیل می‌شود که هر یک وظیفه مشخصی دارند:

بخشوظیفهمثال
هدفتعریف آنچه می‌خواهیدمی‌خواهم مفهوم X را بفهمم
زمینهارائه اطلاعات مرتبطسطح دانش من مقدماتی است
محدودیتتعریف مرزهای پاسخحداکثر ۵۰۰ کلمه
فرمتتعیین شکل خروجیدر قالب لیست مرتب
معیار موفقیتتعریف آنچه پاسخ باید داشته باشدشامل مثال عملی

نکته‌ی مهم این است که همیشه نیاز به همه‌ی این بخش‌ها نیست. برای درخواست‌های ساده، بخش هدف کافی است. برای درخواست‌های پیچیده، ترکیب چند بخش ضروری می‌شود.

وضوح و مشخص بودن در پرامپت

وضوح، مهم‌ترین خصیصه‌ی یک پرامپت کاربر است. برای افزایش وضوح:

پرهیز از ضمایر مبهم

به‌جای "آن را برایم توضیح بده"، بنویسید "مفهوم X را برایم توضیح بده". ضمایر مبهم، مدل را مجبور به حدس زدن می‌کنند.

تعریف اصطلاحات کلیدی

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

مشخص کردن مخاطب هدف

پاسخ مناسب برای یک مبتدی با پاسخ مناسب برای یک متخصص، تفاوت اساسی دارد. اگر مخاطب هدف را در پرامپت مشخص کنید، مدل می‌تواند سطح توضیح را تنظیم کند.

در نوشتار استفاده از ChatGPT برای یادگیری برنامه‌نویسی مثال‌های عملی زیادی از این تکنیک‌ها ارائه شده است.

تزریق زمینه در پرامپت کاربر

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

زمینه متنی

متن‌هایی که پاسخ باید بر اساس آن‌ها ساخته شود. این متن می‌تواند یک سند، چند پاراگراف، یا یک مثال باشد.

زمینه بافتاری

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

زمینه قبلی

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

استفاده از مثال در پرامپت کاربر

مثال‌ها یکی از مؤثرترین ابزارها در پرامپت نویسی هستند. سه نوع مثال کاربردی:

مثال ورودی-خروجی

نمایش یک نمونه ورودی و خروجی مطلوب. این تکنیک در نوشتار تأثیر مثال در پرامپت نویسی به تفصیل بررسی شده است.

مثال منفی

نمایش نمونه‌ای که پاسخ مطلوب نیست و توضیح اینکه چرا. این تکنیک در برخی کاربردها مؤثرتر از مثال مثبت است.

مثال ساختاری

نمایش ساختار پاسخ بدون ارائه‌ی محتوای کامل. این تکنیک برای کنترل فرمت مناسب است.

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

اصلاح تدریجی پرامپت کاربر

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

ساختار پیشنهادی برای اصلاح:

  1. پرامپت اولیه را بنویسید و پاسخ را بررسی کنید
  2. نقاط ضعف پاسخ را مشخص کنید
  3. پرامپت را با هدف رفع آن ضعف اصلاح کنید
  4. چرخه را تا رسیدن به کیفیت مطلوب ادامه دهید

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

اشتباهات رایج در نوشتن پرامپت کاربر

  • نوشتن درخواست‌های بسیار کوتاه و مبهم
  • ترکیب چند درخواست مستقل در یک پرامپت
  • نبود زمینه کافی برای مدل
  • استفاده از اصطلاحات تخصصی بدون توضیح
  • نادیده گرفتن مخاطب هدف در تنظیم سطح پاسخ
  • نداشتن معیار روشن برای پاسخ موفق
  • طولانی‌کردن بی‌دلیل پرامپت
  • تکرار بی‌هدف اطلاعات در پرامپت
  • عدم بررسی و اصلاح پرامپت پس از دریافت پاسخ
  • نادیده گرفتن قواعد زبان فارسی در نگارش پرامپت

سنجش کیفیت پرامپت کاربر

برای سنجش اینکه یک پرامپت کاربر چقدر مؤثر است، می‌توان از چند شاخص استفاده کرد:

شاخصتوضیح
Relevanceمرتبط بودن پاسخ با درخواست
Completenessکامل بودن پاسخ نسبت به درخواست
Concisenessمیزان پرهیز از توضیحات اضافی
Format Complianceرعایت فرمت درخواستی
Iteration Countتعداد چرخه‌های اصلاح تا رسیدن به پاسخ مطلوب

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

پرسش‌های پرتکرار درباره پرامپت کاربر

پرامپت کاربر چیست؟

پرامپت کاربر پیامی است که در هر نوبت با نقش user به مدل ارسال می‌شود و درخواست مشخص کاربر را در آن نوبت تعریف می‌کند.

چطور یک پرامپت کاربر مؤثر بنویسیم؟

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

آیا طول پرامپت مهم است؟

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

آیا استفاده از مثال در پرامپت مؤثر است؟

بله، مثال‌ها یکی از مؤثرترین ابزارها هستند، به شرطی که هدفمند و متناسب با نوع درخواست انتخاب شوند.

چطور پرامپت را برای زبان فارسی بهینه کنیم؟

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

نگاه معمارانه به پرامپت کاربر

از منظر معماری، پرامپت کاربر لایه‌ی ورودی سیستم است که کیفیت آن، کیفیت کل تعامل را تعیین می‌کند. در سیستم‌های بالغ، معمولاً یک لایه‌ی میانی بین کاربر و مدل وجود دارد که پرامپت خام کاربر را به یک پرامپت ساختاریافته تبدیل می‌کند. این لایه، مسئول موارد زیر است:

  • افزودن زمینه مرتبط از حافظه یا RAG
  • غنی‌سازی درخواست با اطلاعات ساختاری
  • تطبیق لحن و سطح جزئیات با پروفایل کاربر
  • اعتبارسنجی و پاک‌سازی ورودی

این لایه در نوشتار پرامپت نویسی برای عامل‌های هوش مصنوعی به تفصیل بررسی شده است. وجود آن، تفاوت بین سیستمی است که به کیفیت پرامپت کاربر متکی است و سیستمی که کیفیت را در سطح سیستم تضمین می‌کند.

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

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

تجربه شما

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