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

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

چرا ساختار پرامپت اهمیت دارد؟

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

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

کاهش ابهام

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

هدایت رفتار مدل

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

افزایش پایداری خروجی

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

قابلیت ارزیابی و بهبود

پرامپت ساختاریافته، قابلیت ارزیابی و بهبود را نیز فراهم می‌کند. می‌توانید هر جزء را جداگانه آزمایش کنید و اثر آن را بر خروجی بسنجید. برای جزئیات، پست آزمون A/B برای پرامپت‌ها را ببینید.

ویژگیپرامپت بدون ساختارپرامپت ساختاریافته
پایداری خروجیپایینبالا
قابلیت ارزیابیضعیفقوی
هزینه بهینه‌سازیبالاپایین
دقت در وظایف پیچیدهمتوسطبالا

ساختار پرامپت، تفاوت میان یک پرسش ساده و یک قرارداد ارتباطی حرفه‌ای است.

اجزای اصلی یک پرامپت مؤثر

یک پرامپت مؤثر، معمولاً از شش جزء اصلی تشکیل می‌شود:

  1. نقش (Role): هویت و تخصصی که مدل باید ایفا کند.
  2. زمینه (Context): اطلاعات پس‌زمینه که به مدل کمک می‌کند موقعیت را درک کند.
  3. دستور (Instruction): وظیفه اصلی که مدل باید انجام دهد.
  4. قالب خروجی (Output Format): ساختار مورد انتظار برای پاسخ.
  5. محدودیت‌ها (Constraints): قواعد و مرزهایی که مدل باید رعایت کند.
  6. نمونه‌ها (Examples): نمونه‌های مرجع برای هدایت مدل.

هر یک از این اجزا، نقش مشخصی در هدایت مدل ایفا می‌کند. در ادامه، هر جزء را به‌تفصیل بررسی می‌کنیم.

تعریف نقش و هویت مدل

نقش (Role) یا پرسونا (Persona)، بخشی از پرامپت است که به مدل می‌گوید با چه هویت و تخصصی پاسخ دهد. این جزء، بر لحن، سطح جزئیات و دیدگاه مدل اثر می‌گذارد.

نمونه‌ای از تعریف نقش

You are a senior WordPress developer with 10 years of experience
in theme and plugin development.

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

چرا نقش مؤثر است؟

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

اشتباهات رایج در تعریف نقش

  • نقش‌های بسیار کلی مانند «تو یک دستیار هستی» که اثر محدودی دارند.
  • نقش‌های متناقض که مدل را سردرگم می‌کنند.
  • نقش‌های غیرواقعی که دانش مدل از آن‌ها محدود است.

برای درک بهتر نقش و مخاطب، پست نقش و مخاطب در پرامپت نویسی را ببینید.

زمینه و بافت در پرامپت

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

انواع زمینه

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

نمونه‌ای از زمینه

Context: The website is a Persian-language WooCommerce store
with over 10,000 products. The client is concerned about
checkout performance on mobile devices.

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

مالتی‌مولال کانتکست

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

دستور اصلی و صراحت آن

دستور (Instruction)، قلب پرامپت است. این بخش، وظیفه اصلی مدل را تعریف می‌کند. یک دستور خوب باید صریح، مشخص و بدون ابهام باشد.

ویژگی‌های دستور مؤثر

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

نمونه‌ای از دستور ضعیف و قوی

دستور ضعیف:

درباره وردپرس توضیح بده.

دستور قوی:

یک توضیح ۵۰۰ کلمه‌ای درباره معماری هسته وردپرس بنویس که
شامل بخش‌های wp-settings.php، فایل‌های mu-plugins و ترتیب
بارگذاری آن‌ها باشد. پاسخ را با ساختار H2 سازمان‌دهی کن.

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

چند دستور در یک پرامپت

در وظایف پیچیده، می‌توانید از چند دستور استفاده کنید، اما باید آن‌ها را شماره‌گذاری و از یکدیگر جدا کنید. برای جزئیات، پست افزایش وضوح در پرامپت را ببینید.

قالب خروجی و ساختاردهی

قالب خروجی (Output Format)، بخشی از پرامپت است که ساختار مورد انتظار پاسخ را تعیین می‌کند. تعریف صریح قالب، خروجی را قابل‌پردازش‌تر و پایدارتر می‌کند.

انواع قالب خروجی

  • متن آزاد: مناسب برای پاسخ‌های توصیفی.
  • JSON: مناسب برای پردازش برنامه‌نویسی. برای جزئیات، پست درخواست خروجی JSON را ببینید.
  • Markdown: مناسب برای مستندسازی. برای جزئیات، پست پرامپت نویسی با Markdown را ببینید.
  • XML: مناسب برای کاربردهای خاص. برای جزئیات، پست پرامپت نویسی با XML را ببینید.
  • جدول: مناسب برای مقایسه‌ها.
  • لیست: مناسب برای مراحل.

نمونه‌ای از تعریف قالب

پاسخ خود را در قالب JSON زیر ارائه کن:
{
  "summary": "خلاصه ۲ جمله‌ای",
  "steps": ["مرحله ۱", "مرحله ۲", "مرحله ۳"],
  "warnings": ["هشدار ۱", "هشدار ۲"]
}

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

Schema و اعتبارسنجی

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

محدودیت‌ها و قواعد

محدودیت‌ها (Constraints)، مرزهایی هستند که مدل باید در پاسخ خود رعایت کند. این محدودیت‌ها، دامنه پاسخ را کنترل و از خروجی‌های نامطلوب جلوگیری می‌کنند.

انواع محدودیت‌ها

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

نمونه‌ای از تعریف محدودیت

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

برای کنترل لحن و سبک، پست کنترل لحن و سبک در پرامپت را ببینید.

نمونه‌ها و الگوهای مرجع

نمونه‌ها (Examples)، بخشی از پرامپت هستند که الگوی مورد انتظار را به مدل نشان می‌دهند. این تکنیک که Few-shot Prompting نامیده می‌شود، در وظایف با ساختار مشخص بسیار مؤثر است. برای جزئیات، پست تفاوت پرامپت صفر-نمونه و چند-نمونه را ببینید.

نمونه‌ای از Few-shot Prompting

Example 1:
Input: "وردپرس کند است"
Output: {"category": "performance", "severity": "high"}

Example 2:
Input: "افزونه با قالب تداخل دارد"
Output: {"category": "compatibility", "severity": "medium"}

Now classify: "دیتابیس بهینه نیست"

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

تعداد نمونه‌ها

تعداد نمونه‌ها به نوع وظیفه بستگی دارد. در وظایف ساده، ۱ تا ۳ نمونه کافی است. در وظایف پیچیده، تعداد بیشتری ممکن است لازم باشد. برای جزئیات، پست تأثیر مثال در پرامپت را ببینید.

ترتیب و چیدمان اجزا

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

چیدمان پیشنهادی

  1. نقش: ابتدا هویت مدل را تعریف کنید.
  2. زمینه: سپس اطلاعات پس‌زمینه را ارائه دهید.
  3. دستور: وظیفه اصلی را مشخص کنید.
  4. نمونه‌ها: الگوهای مرجع را نشان دهید.
  5. قالب خروجی: ساختار پاسخ را تعیین کنید.
  6. محدودیت‌ها: مرزها را در پایان مشخص کنید.

تفکیک بخش‌ها

برای تفکیک بخش‌ها، می‌توان از جداکننده‌ها، تگ‌های XML یا Markdown استفاده کرد. برای جزئیات، پست استفاده از Delimiter در پرامپت را ببینید.

نمونه‌ای از چیدمان کامل

Role: You are a senior SEO consultant.

Context: The client runs a Persian e-commerce store
with 5000 products and wants to improve organic traffic.

Task: Provide a prioritized list of 5 technical SEO
improvements that will have the highest impact.

Format:
1. Issue: ...
   Impact: High/Medium/Low
   Fix: ...

Constraints:
- Focus only on technical SEO, not content.
- Use Persian language.
- Keep each item under 100 words.

Examples:
1. Issue: Missing XML sitemap
   Impact: High
   Fix: Generate and submit sitemap...

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

الگوهای غلط رایج در پرامپت نویسی

در تجربه کار با پرامپت‌های متنوع، الگوهای غلطی را دیده‌ام که به‌طور مکرر تکرار می‌شوند:

ابهام در دستور

دستورهایی مانند «خوب بنویس» یا «حرفه‌ای توضیح بده» هیچ معیار مشخصی ندارند. مدل، بر اساس برداشت خود از «خوب» یا «حرفه‌ای» پاسخ می‌دهد که ممکن است با انتظار ما هم‌خوان نباشد.

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

ارائه زمینه بسیار طولانی، می‌تواند مدل را از دستور اصلی دور کند. زمینه باید مرتبط، کوتاه و هدفمند باشد.

چندین دستور متناقض

دستورهایی مانند «مختصر بنویس» و «همه جزئیات را پوشش بده» متناقض هستند و مدل را سردرگم می‌کنند. برای حل این تناقض، پست مدیریت تناقض در دستورها را ببینید.

عدم تعریف قالب خروجی

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

نبود معیار موفقیت

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

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

بهبود تدریجی پرامپت

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

مراحل بهبود

  1. نسخه اولیه: یک پرامپت ساده بنویسید و خروجی را بررسی کنید.
  2. شناسایی نقص: نقاط ضعف خروجی را در یک لیست یادداشت کنید.
  3. افزودن اجزا: بر اساس نقاط ضعف، اجزای جدیدی مانند قالب یا محدودیت اضافه کنید.
  4. آزمون A/B: دو نسخه را با یکدیگر مقایسه کنید.
  5. تثبیت نسخه نهایی: نسخه برتر را به‌عنوان نسخه پایه ذخیره کنید.

ثبت تاریخچه تغییرات

برای حفظ قابلیت ردیابی، همه تغییرات پرامپت را ثبت کنید. این کار، به تحلیل اثر هر تغییر و بازگشت به نسخه‌های قبلی کمک می‌کند. برای جزئیات، پست نسخه‌بندی پرامپت را ببینید.

حاکمیت پرامپت

در سازمان‌های بزرگ، پرامپت‌ها باید در یک چارچوب حاکمیتی مدیریت شوند. برای جزئیات، پست حاکمیت پرامپت را ببینید.

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

آیا همه اجزای پرامپت برای هر وظیفه لازم است؟

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

آیا نقش (Role) واقعاً مؤثر است؟

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

زمینه چقدر باید طولانی باشد؟

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

چند نمونه برای Few-shot Prompting کافی است؟

در وظایف ساده، ۱ تا ۳ نمونه کافی است. در وظایف پیچیده، ۵ تا ۱۰ نمونه ممکن است لازم باشد. تعداد بهینه، جایی است که افزودن نمونه بیشتر، بهبود معناداری ایجاد نکند.

آیا تعریف قالب خروجی ضروری است؟

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

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

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

آیا ساختار پرامپت برای همه مدل‌ها یکسان است؟

اصول کلی مشابه است، اما مدل‌های مختلف ممکن است به برخی ساختارها حساس‌تر باشند. توصیه می‌شود پرامپت خود را برای هر مدل، جداگانه تنظیم کنید. برای جزئیات، پست پرامپت نویسی برای GPT-4 را ببینید.

آیا می‌توان از یک پرامپت برای چند وظیفه استفاده کرد؟

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

آیا می‌توان ساختار پرامپت را خودکار تولید کرد؟

بله. با استفاده از تکنیک Meta-Prompting، می‌توان از یک مدل خواست برای وظیفه خاصی، یک پرامپت ساختاریافته تولید کند. برای جزئیات، پست Meta-Prompting چیست را ببینید.

آیا ساختار پرامپت بر هزینه اجرا اثر دارد؟

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

آیا ساختار پرامپت بر امنیت اثر دارد؟

بله. پرامپت‌های ساختاریافته، در برابر حملات تزریق مقاوم‌تر هستند. برای جزئیات، پست دفاع در برابر تزریق پرامپت را ببینید.

نتیجه‌گیری کاربردی

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

یک پرامپت خوب، تنها یک پرسش نیست؛ یک قرارداد ارتباطی است که مرزهای وظیفه، زمینه و انتظار را برای مدل روشن می‌کند.

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