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

مهندسی پرامپت یک فرآیند سیستمی است، نه یک جمله‌ی جادویی#

مهندسی پرامپت (Prompt Engineering) یعنی طراحی، تست، ارزیابی و نسخه‌بندی سیستماتیک پرامپت‌ها برای رسیدن به خروجی قابل‌تکرار. این تعریف با «پرامپت‌نویسی» که صرفاً یک جمله‌ی خوب برای هوش مصنوعی نوشتن است، تفاوت بنیادین دارد.

در پروژه‌های واقعی، پرامپت‌نویسی بدون تست مثل کدنویسی بدون Unit Test است. ظاهراً کار می‌کند، ولی با اولین تغییر در مدل یا ورودی، خروجی از کنترل خارج می‌شود.

مهندسی پرامپت دقیقاً همین شکاف را پر می‌کند: فرآیند تکراری، اندازه‌گیری، و نسخه‌بندی.

جایگاه مهندسی پرامپت در چرخه‌ی توسعه‌ی کاربردهای هوش مصنوعی (AI Application Development) یک لایه‌ی باریک‌تر از AI Engineering است، نه کل آن. OpenAI در مستندات خود توصیه می‌کند وظایف پیچیده را به چند مرحله‌ی کوچک‌تر بشکنید. این شکستن، تست کردن، و دوباره ساختن — نه نوشتن یک جمله‌ی طولانی — ماهیت مهندسی پرامپت است.

تمایز پرامپت‌نویسی و مهندسی پرامپت در عمل#

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

این تمایز در پروژه‌های سازمانی حیاتی است. وقتی ده نفر روی یک محصول کار می‌کنند و هر کدام پرامپت را به سلیقه‌ی خود تغییر می‌دهد، خروجی قابل‌تکرار نیست. مهندسی پرامپت با قرارداد (Contract) و تست، این هرج‌ومرج را حذف می‌کند.

مستر پرامپت چیست و اجزای آن کدام‌اند؟#

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

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

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

  • System Role: هویت و تخصص مدل را مشخص می‌کند. حذفش باعث خروجی عمومی و بی‌شخصیت می‌شود.
  • Context: زمینه‌ی پروژه و مخاطب را تعریف می‌کند. بدون آن، مدل فرضیات اشتباه می‌سازد.
  • Instruction: وظیفه‌ی دقیق را بیان می‌کند. مبهم بودنش، خروجی مبهم می‌سازد.
  • Output Format: ساختار خروجی را مشخص می‌کند. بدون آن، مدل هر بار فرمت متفاوتی تولید می‌کند.
  • Constraints: مرزهای غیرقابل‌عبور را تعریف می‌کند. نبودش، خروجی را از کنترل خارج می‌سازد.
  • Examples: حداقل یک ورودی-خروجی نمونه ارائه می‌دهد. بدون آن، مدل لحن و سطح عمق را حدس می‌زند.

مثال عملی: مستر پرامپت تولید محتوای سئو#

این مستر پرامپت را می‌توانید مستقیماً کپی کنید و با تغییر متغیرها استفاده کنید:

[System Role]
تو یک متخصص سئوی فارسی‌زبان با 8 سال تجربه در تولید محتوای وبلاگ هستی.

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

[Instruction]
برای کلیدواژه‌ی «{{keyword}}» یک پاراگراف بلوک پاسخ بنویس که: در 40 تا 60 کلمه، پاسخ کامل سؤالات کاربر را بدهد، بدون مقدمه‌چینی شروع شود، و شامل یک عدد یا واقعیت قابل‌تأیید باشد.

[Output Format]
فقط خود پاراگراف، بدون عنوان و بدون توضیح اضافه.

[Constraints]
- از عبارت‌های «در دنیای امروز» و «بدون شک» استفاده نکن.
- عدد ساختگی ننویس.
- نیم‌فاصله را رعایت کن.

[Examples]
ورودی: «{{keyword}} = نرخ تبدیل ایمیل»
خروجی: «نرخ تبدیل ایمیل (Email Conversion Rate) درصد کسانی است که پس از دریافت ایمیل، اقدام موردنظر شما را انجام می‌دهند. در صنعت SaaS، نرخ تبدیل ایمیل‌های فعال‌سازی معمولاً بین {{rate_activation}} تا {{rate_activation_upper}} درصد است، در حالی که ایمیل‌های ریکارتی زیر {{rate_reactivation}} درصد عمل می‌کنند.»

نکته‌ی مدل‌محور: Anthropic تأکید می‌کند تگ‌های XML برای ساختاردهی دقت Claude را بالا می‌برد. OpenAI ساختار Markdown را ترجیح می‌دهد. اگر مستر پرامپت شما روی چند مدل اجرا می‌شود، از ساختار برچسبی ساده (مثل بالا) استفاده کنید که با هر دو سازگار است.

تکنیک‌های مهندسی پرامپت: از Few-Shot تا ReAct#

چهار تکنیک اصلی مهندسی پرامپت — Few-Shot Prompting، Chain-of-Thought، Self-Consistency و ReAct — هر کدام مشکل متفاوتی را حل می‌کنند. انتخاب بین آن‌ها به نوع وظیفه بستگی دارد، نه به ترند بودن.

Few-Shot و Chain-of-Thought: پایه‌های استدلال#

Few-Shot Prompting یعنی دادن 2 تا 5 مثال ورودی-خروجی قبل از درخواست اصلی. این تکنیک برای وظایف طبقه‌بندی و فرمت‌دهی مؤثر است چون الگوی موردنظر را بدون توضیح اضافه به مدل نشان می‌دهد.

Chain-of-Thought (CoT) یعنی افزودن راهنمای «قدم‌به‌قدم فکر کن» به پرامپت. پژوهش Wei و همکاران در سال 2022 نشان داد که CoT دقت مدل‌ها را در وظایف استدلالی به‌طور محسوسی بالا می‌برد.

اما یک هشدار مهم: مدل‌های reasoning-focused مثل o1 و Claude Extended Thinking با پرامپت‌های کوتاه و شفاف بهتر از پرامپت‌های مفصل CoT عمل می‌کنند. اگر روی این مدل‌ها کار می‌کنید، زورِ CoT را کم کنید.

یک مثال ترکیبی Few-Shot + CoT:

[Instruction]
متن زیر را به دسته‌ی «فنی»، «بازاری» یا «عمومی» طبقه‌بندی کن. ابتدا دلیل خود را در یک جمله بنویس، سپس دسته را بگو.

[Examples]
ورودی: «با استفاده از Docker Compose می‌توانید چندین سرویس را هم‌زمان بالا بیاورید.»
دلیل: این جمله یک ابزار توسعه‌ی نرم‌افزار را معرفی می‌کند. → فنی

ورودی: «محصول جدید ما با 30 درصد تخفیف عرضه شد.»
دلیل: هدف این جمله تبلیغ و فروش است. → بازاری

[Task]
ورودی: «{{user_text}}»

Self-Consistency و ReAct: از پاسخ واحد تا ایجنت#

Self-Consistency یعنی تولید چند پاسخ از مدل و رأی‌گیری اکثریت. این تکنیک برای مسائل ریاضی و منطقی مؤثر است چون خطای تصادفی هر پاسخ را خنثی می‌کند.

ReAct (Reasoning + Acting) ترکیب استدلال و اقدام در حلقه‌ی تکراری است. ReAct پایه‌ی ایجنت‌های هوش مصنوعی (AI Agent) محسوب می‌شود و در چارچوب‌هایی مثل LangChain و CrewAI به‌طور گسترده استفاده می‌شود.

مقایسه‌ی مهندسی پرامپت با فاین‌تیونینگ و RAG#

مهندسی پرامپت مدل را تغییر نمی‌دهد و فقط ورودی را بهینه می‌کند. فاین‌تیونینگ (Fine-Tuning) وزن‌های مدل را بازنویسی می‌کند. و RAG (بازیابی‌محور تولید) دانش بیرونی را در لحظه به پرامپت تزریق می‌کند. این سه روش مکمل‌اند، نه جایگزین.

معیارمهندسی پرامپتفاین‌تیونینگRAG
هزینه‌ی شروعتقریباً صفرنیاز به داده و GPUنیاز به پایگاه دانش
قابلیت بازگشتآنی و کاملسخت و پرهزینهمیان‌مدت (حذف سند)
مقیاس‌پذیریمحدود به طول پرامپتمحدود به داده‌ی آموزشمقیاس‌پذیر با پایگاه دانش
بهترین کاربردرفتار و فرمت خروجیسبک و تخصص عمیقدانش اختصاصی و لحظه‌ای

الگوی ترکیبی در پروژه‌های واقعی: پرامپت برای رفتار، RAG برای دانش، و فاین‌تیونینگ برای سبک. خطای رایج این است که مهندسی پرامپت را با هوش مصنوعی مولد (Generative AI) به‌طور عام خلط کنند. مهندسی پرامپت فقط یکی از لایه‌های یک سیستم کامل است.

اشتباهات رایجی که پرامپت شما را مرگبار می‌کنند#

رایج‌ترین اشتباه، «پرامپت مرگبار» است: پرامپتی که با تغییر مدل یا نسخه‌ی API کاملاً از کار می‌افتد چون مبتنی بر رفتار مدل نوشته شده، نه مبتنی بر نیت (Intent). نیت پایدار است؛ رفتار مدل متغیر.

پنج اشتباه و یک جمله‌ی راه‌حل برای هر کدام#

  1. پرامپت مبتنی بر رفتار مدل: مثلاً «همیشه با عدد شروع کن چون GPT-4o این‌طور بهتر کار می‌کند». راه‌حل: نیت را بنویسید («خروجی را با عدد شروع کن»)، نه دلیل مدل‌محور.
  2. تغییر پشت‌سرهم بدون تست سیستماتیک: تجربه‌ی میدانی در پروژه‌های واقعی نشان می‌دهد بیشترین هزینه در همین چرخه‌ی کور است. هر تغییر بدون تست، یک نسخه‌ی شکست‌خورده‌ی پنهان می‌سازد. راه‌حل: قبل از تغییر، ورودی‌های تست را ثبت کنید.
  3. «مثل صحبت با انسان بنویس»: مدل‌ها با ساختار صریح بهتر از لحن محاوره‌ای عمل می‌کنند. راه‌حل: ساختار برچسبی یا تگ‌دار استفاده کنید.
  4. Persona Prompting بدون توجه به مدل: الگوی تکرارشونده در پروژه‌های اعضا نشان می‌دهد در مدل‌های جدید اثر Persona کمتر شده و گاهی خروجی را به کلیشه می‌برد. راه‌حل: Persona را با محدودیت‌های رفتاری ترکیب کنید، نه جایگزین آن.
  5. پرامپت‌های طولانی بدون توجه به Lost in the Middle: مدل‌ها بخش میانی پرامپت‌های بلند را با دقت کمتری پردازش می‌کنند. راه‌حل: اطلاعات حیاتی را در ابتدای پرامپت یا انتهای آن قرار دهید.

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

تست، دیباگ و نسخه‌بندی پرامپت: گام‌به‌گام#

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

گام‌های تست و نسخه‌بندی پرامپت#

  1. پرامپت اولیه را بنویسید و آن را v1 بنامید.
  2. 3 تا 5 ورودی تست تعریف کنید که طیف وسیعی از حالت‌ها را پوشش دهد.
  3. پرامپت را روی هر ورودی اجرا کنید و خروجی را ثبت کنید.
  4. هر خروجی را با انتظار مقایسه کنید. اگر خطا دارد، مشخص کنید کدام لایه (نقش، دستور، فرمت، محدودیت، مثال) مشکل‌دار است.
  5. فقط همان لایه را اصلاح کنید و نسخه‌ی جدید (v2) بسازید.
  6. مجدداً روی همان ورودی‌های تست اجرا کنید. اگر ثبات داشت، نسخه را نهایی کنید.

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

ابزارهای کمکی: OpenAI Playground و Anthropic Console امکان مقایسه‌ی هم‌زمان نسخه‌ها را می‌دهند. در پروژه‌های بزرگ‌تر، ذخیره‌ی پرامپت‌ها در Git با تاریخ و پیام commit، حداقل‌های لازم را فراهم می‌کند.

فریم‌ورک‌های پرامپت‌نویسی: RTF، CRISPE و BROKE#

فریم‌ورک‌های پرامپت‌نویسی قالب‌های ساختاری‌اند که اجزای پرامپت را نام‌گذاری و مرتب می‌کنند. هیچ فریم‌ورکی «بهترین» نیست؛ هر کدام برای نوع وظیفه‌ی متفاوتی بهینه‌اند و انتخاب بین آن‌ها به پیچیدگی و خروجی مورد انتظار بستگی دارد. در عمل، اکثر توسعه‌دهندگان ترکیبی از اجزای چند فریم‌ورک استفاده می‌کنند.

  • RTF (Role-Task-Format): ساده‌ترین فریم‌ورک. مناسب وظایف تک‌مرحله‌ای و سریع مثل خلاصه‌سازی یا ترجمه.
  • CRISPE (Capacity-Role-Insight-Statement-Personality-Experiment): مناسب وظایف خلاقانه و تحلیلی که به زمینه‌ی غنی نیاز دارند.
  • BROKE (Background-Role-Objectives-KeyResults-Evolve): مناسب وظایف پروژه‌محور با بازخورد تکراری و نیاز به بهبود مداوم.
  • CREATE (Character-Request-Examples-Adjustments-Type-Extras): مناسب وظایف نیازمند مثال و تنظیم دقیق.

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

چه‌موقعی پرامپت‌نویسی کافی نیست و باید به سمت RAG یا فاین‌تیونینگ رفت؟#

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

سه نشانه‌ی «پرامپت کافی نیست»:

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

الگوی ترکیبی در پروژه‌های واقعی: پرامپت + RAG برای اکثر کاربردهای سازمانی، پرامپت + فاین‌تیونینگ برای وظایف با سبک خاص. اگر بودجه‌ی محدود دارید، مهندسی پرامپت + RAG معمولاً نتیجه‌ی بهتری از فاین‌تیونینگ با داده‌ی کم می‌دهد.

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