مهندسی پرامپت (Prompt Engineering) یک فرآیند مهندسی با خروجی قابل‌سنجش است، نه مجموعه‌ای از ترفندهای کپی‌شده. هر پرامپت مبهم یک حلقه‌ی هزینه‌ای می‌سازد: خروجی ضعیف، تلاش مجدد، توکن بیشتر و فاکتور API بزرگ‌تر. مستر پرامپت (Master Prompt) این چرخه را می‌شکند — چارچوب ساختاریافته با متغیرهای مشخص که به‌جای نوشتن از صفر، فقط بخش‌های متغیرش را عوض می‌کنید.

مهندسی پرامپت چیست و چه تفاوتی با Fine-tuning و RAG دارد؟#

مهندسی پرامپت طراحی ساختار ورودی مدل زبانی بزرگ (Large Language Model) برای هدایت خروجی به سمت مطلوب است. Fine-tuning وزن‌های مدل را تغییر می‌دهد و RAG (Retrieval-Augmented Generation) دانش بیرونی به context اضافه می‌کند. این سه ابزار مکمل‌اند، نه جایگزین یکدیگر. انتخاب اشتباه بین این سه، شایع‌ترین خطای فنی در پروژه‌های هوش مصنوعی است که تیم‌های تازه‌کار مرتکبش می‌شوند.

مکانیزم کاری مدل زبانی و چرا ساختار پرامپت مهم است#

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

یک پرامپت بدون نقش، بدون زمینه و بدون محدودیت، مدل را در فضای بی‌کران پاسخ‌ها رها می‌کند. مدل «بهترین حدس» را می‌زند — و بهترین حدس معمولاً خروجی‌ای است که هیچ‌کس دقیقاً آن را نخواسته.

مرز مهندسی پرامپت: چه‌زمانی باید سراغ Fine-tuning یا RAG رفت#

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

Fine-tuning وقتی مناسب است که می‌خواهید سبک، لحن یا الگوی خروجی خاصی را در مدل تثبیت کنید و حجم کافی داده‌ی آموزشی دارید. RAG وقتی ضروری است که مدل باید به پایگاه دانش زنده و به‌روز دسترسی داشته باشد.

معیارمهندسی پرامپتFine-tuningRAG
هزینه‌ی شروعکم (فقط زمان نوشتن)بالا (داده + GPU)متوسط (زیرساخت جست‌وجو)
سرعت پیاده‌سازیدقیقه تا ساعتهفته تا ماهروز تا هفته
انعطاف‌پذیریبسیار بالا (تغییر فوری)پایین (نیاز به آموزش مجدد)متوسط (تغییر در پایگاه دانش)
نیاز به دادهنداردصدها تا هزاران نمونهپایگاه دانش ساختاریافته
به‌روز بودنوابسته به cutoff مدلثابت در لحظه‌ی آموزشلحظه‌ای و زنده

در عمل، پروژه‌های جدی معمولاً ترکیبی کار می‌کنند: RAG برای دانش حوزه‌ای، پرامپت ساختارمند برای هدایت رفتار، و در صورت نیاز Fine-tuning برای تثبیت سبک. این ترکیب در تیم‌هایی که محصول هوش مصنوعی (AI Product) می‌سازند، الگوی غالب است — نه یک انتخاب نظری، بلکه نتیجه‌ی عملی آزمون‌وخطا.

مستر پرامپت: چارچوب قابل‌بازاستفاده، نه پرامپت ثابت#

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

اجزای مستر پرامپت#

هر جزء نقش مشخصی در هدایت مدل دارد:

  • نقش (Role): هویت و تخصص مدل را تعریف می‌کند. نه فقط «Act as a...» بلکه حوزه‌ی دقیق و سطح تخصص.
  • زمینه (Context): اطلاعات پیش‌زمینه‌ای که مدل بدون آن خروجی درست نمی‌دهد — مخاطب، صنعت، محدودیت‌های پروژه.
  • دستور (Instruction): کاری که دقیقاً باید انجام شود. فعل مشخص، خروجی مشخص.
  • محدودیت (Constraint): چه‌کار نباید بکند، چه‌طول باشد، چه‌لحنی نداشته باشد.
  • فرمت خروجی (Output Format): ساختار نهایی — جدول، لیست، پاراگراف، JSON و غیره.

روش تکامل از نسخه‌ی ۱ به نسخه‌ی N#

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

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

مستر پرامپت تولید محتوا — قابل کپی و شخصی‌سازی: [نقش]: تو یک محتوانویس متخصص در حوزه‌ی {{حوزه_کاری}} با ۱۰ سال تجربه هستی. [زمینه]: مخاطب این محتوا {{مخاطب_هدف}} است. سطح دانش آن‌ها {{سطح_دانش}} است. هدف محتوا: {{هدف}}. [دستور]: یک مقاله‌ی {{نوع_محتوا}} درباره‌ی {{موضوع}} بنویس. روی {{نکته‌ی_کلیدی}} تمرکز کن. [محدودیت]: از کلیشه‌های رایج پرهیز کن. طول: {{تعداد_کلمات}} کلمه. لحن: {{لحن}}. از اعداد بدون منبع استفاده نکن. [فرمت خروجی]: ساختار شامل H2 و H3 باشد. هر بخش با یک پاراگراف خلاصه شروع شود.

اشتباه رایج: کپی پرامپت‌های انگلیسی بدون بومی‌سازی ساختاری#

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

هزینه‌ی پنهان پرامپت‌های ضعیف: زنجیره‌ی توکن، زمان و دلار#

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

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

آناتومی زنجیره‌ی هزینه#

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

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

نقش Temperature و پارامترهای inference در کنار ساختار پرامپت#

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

پارامترهای inference — شامل top_p، max_tokens و presence_penalty — مکمل ساختار پرامپت‌اند، نه جایگزین آن. پرامپت بدون ساختار با هر تنظیمی خروجی بی‌هدف می‌دهد.

  • پرامپت بدون زمینه: مدل حدس می‌زند. هزینه: یک یا دو تلاش مجدد.
  • پرامپت چندمنظوره: مدل بین دو خروجی ممکن گیر می‌کند. هزینه: خروجی‌ای که هیچ‌کدام را نمی‌خواهید.
  • «Act as a...» برای همه‌ی موارد: نقش کلی بدون محدودیت، خروجی متوسط تولید می‌کند. هزینه: ویرایش دستی بعدی.

توصیه‌ی OpenAI در راهنمای رسمی: پرامپت‌ها باید دستورالعمل‌های واضح و زمینه‌ی کافی داشته باشند و از ابهام پرهیز کنند. این یک توصیه‌ی کیفی نیست — مستقیماً هزینه‌ی API شما را کم می‌کند.

فریمورک‌های ساختاری: CRISPE، RTF و کاربرد عملی هرکدام#

CRISPE (Capacity, Role, Insight, Statement, Personality, Experiment) برای پرامپت‌های نقش‌محور مناسب است. RTF (Role, Task, Format) برای پرامپت‌های ساده‌تر با خروجی ساختاریافته کارآمدتر است. انتخاب فریمورک به نوع خروجی موردنظر بستگی دارد، نه به سلیقه. کسی که RTF را برای تولید محتوای برند استفاده می‌کند، خروجی خشک و بی‌شخصیت می‌گیرد؛ کسی که CRISPE را برای استخراج داده به‌کار می‌برد، پرامپت بیش‌ازحد پیچیده می‌نویسد.

CRISPE — مناسب پرامپت‌هایی که نیاز به هویت و لحن مشخص دارند#

CRISPE شش جزء دارد: ظرفیت (Capacity)، نقش (Role)، بینش (Insight)، صورت‌مسئله (Statement)، شخصیت (Personality) و آزمایش (Experiment). این فریمورک وقتی مناسب است که خروجی نیاز به لحن، هویت و زاویه‌دید مشخص دارد — مثلاً تولید محتوای برند یا شبیه‌سازی شخصیت.

RTF — مناسب پرامپت‌های ساده‌تر با خروجی ساختاریافته#

RTF سه جزء دارد: نقش (Role)، تکلیف (Task) و فرمت (Format). سبک‌تر است و برای کارهای مشخص مثل استخراج داده، تبدیل فرمت یا تولید کد مناسب‌تر است.

مستر پرامپت کدنویسی با ساختار RTF — قابل کپی: [Role]: تو یک مهندس نرم‌افزار ارشد با تخصص در Python و معماری microservices هستی. [Task]: تابع {{نام_تابع}} را بنویس که {{ورودی}} را بگیرد و {{خروجی}} برگرداند. Edge caseهای {{حالات_خاص}} را مدیریت کن. [Format]: فقط کد با docstring فارسی. بدون توضیح اضافه. اگر وابستگی خارجی لازم است، در کامنت بالای تابع ذکر کن.

توصیه‌ی Anthropic: استفاده از XML تگ‌ها برای ساختاردهی پرامپت در مدل Claude کیفیت خروجی را بهبود می‌دهد. تگ‌ها به مدل کمک می‌کنند مرزهای بخش‌های مختلف پرامپت را دقیق‌تر تشخیص دهد.

معیارCRISPERTF
تعداد اجزا۶۳
مناسب برایخروجی خلاقانه، لحن‌محورخروجی ساختاریافته، فنی
پیچیدگی نوشتنبالاترساده‌تر
انعطاف در بازاستفادهمتغیرهای بیشترمتغیرهای کمتر

چرا Chain-of-Thought و Few-shot واقعاً کار می‌کنند؟#

Chain-of-Thought، Few-shot و Self-Consistency صرفاً ترفند نیستند. هرکدام یک مکانیزم تولیدی در مدل‌های autoregressive را فعال می‌کنند و دلیل کارکردشان از ساختار مدل زبانی قابل‌استخراج است. کسی که این تکنیک‌ها را بدون درک مکانیزم زیرین به‌کار می‌گیرد، در اولین موردی که خروجی مطلوب نمی‌گیرد، دست به تغییرات تصادفی می‌زند.

Chain-of-Thought — هدایت مسیر تولید مرحله‌به‌مرحله#

مدل‌های autoregressive توکن‌به‌توکن تولید می‌کنند. وقتی در پرامپت مراحل استدلال را می‌نویسید، توکن‌های تولیدشده‌ی خود مدل، مسیر تولید بعدی را هدایت می‌کنند. Wei و همکاران در Google Research نشان دادند که اضافه‌کردن جملات راهنمای مرحله‌ای، دقت مدل‌ها را در مسائل پیچیده بالا می‌برد.

این تکنیک در مدل‌های reasoning-محور مثل o1 و Claude با extended thinking به‌صورت داخلی فعال است، ولی در مدل‌های عمومی همچنان نوشتن مراحل در پرامپت تأثیر مستقیم دارد.

Few-shot Prompting — تثبیت الگو در فضای context#

نمونه‌های کم‌تعداد (سه تا پنج مورد) الگوی خروجی را در فضای context مدل تثبیت می‌کنند. مدل الگو را از نمونه‌ها استخراج می‌کند و خروجی جدید را بر همان اساس تولید می‌کند. این روش به‌ویژه برای کارهایی مؤثر است که توصیف‌کردن آن‌ها با کلمات سخت است — مثلاً تشخیص لحن یک ایمیل یا دسته‌بندی تیکت پشتیبانی.

پرامپت نقش‌محور (Role Prompting) — محدودسازی فضای پاسخ#

تعریف نقش، فضای پاسخ را محدود می‌کند. «Act as a senior copywriter specializing in B2B SaaS» فضای پاسخ را نسبت به «Act as a writer» بسیار باریک‌تر می‌کند. اما نقش‌محور بودن فقط نام‌بردن از شغل نیست — باید سطح تخصص، حوزه‌ی دقیق و سبک خروجی هم مشخص شود.

مهندسی پرامپت فرآیند تکرارشونده (iterative) است، نه مجموعه‌ای از نکات یک‌باره. پرامپت‌های ساختارمند و بلندتر با زمینه‌ی کافی، خروجی بهتری تولید می‌کنند — برخلاف توصیه‌ی کهنه‌ی «کوتاه بنویسید». این توصیه در دوره‌ی مدل‌های اولیه‌ی GPT-3 معتبر بود؛ با مدل‌های فعلی، context window بزرگ‌تر است و پرامپت مفصل‌تر، خروجی دقیق‌تر.

ابزارها و روش‌های ارزیابی: از A/B Testing تا Prompt Versioning#

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

ابزارهای مدیریت پرامپت#

  • PromptLayer: ثبت نسخه‌ها، مقایسه‌ی خروجی‌ها و تحلیل هزینه‌ی توکن.
  • LangSmith: tracing کامل درخواست‌ها، ارزیابی خودکار و مقایسه‌ی A/B.
  • نسخه‌بندی دستی با Git: برای تیم‌های کوچک، ذخیره‌ی پرامپت‌ها در فایل‌های جداگانه و commit کردن تغییرات کافی است.

روش A/B Testing پرامپت#

مراحل عملی:

  1. یک پرامپت مبنا (baseline) بنویسید و خروجی‌هایش را ثبت کنید.
  2. یک بخش از پرامپت را تغییر دهید — فقط یک متغیر.
  3. معیار موفقیت تعریف کنید: دقت، لحن، طول، یا هر متریک قابل‌سنجش دیگر.
  4. هر دو نسخه را روی مجموعه‌ی تست یکسان اجرا کنید.
  5. خروجی‌ها را مقایسه کنید و نسخه‌ی برنده را به‌عنوان مبنا ثبت کنید.

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

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