Prompt Engineering

از shakiba
پرش به ناوبری پرش به جستجو

پرامپت‌نویسی چیست؟

پرامپت‌نویسی (Prompt Engineering) هنر و مهارت نوشتن دستورات (prompt) برای مدل‌های هوش مصنوعی زبانی (مثل ChatGPT، Claude، Gemini) به‌گونه‌ای است که بهترین، دقیق‌ترین و مفیدترین خروجی ممکن را دریافت کنیم. یک پرامپت خوب می‌تواند تفاوت بزرگی بین یک پاسخ ضعیف و یک پاسخ عالی ایجاد کند.

مفاهیم پایه

  • Prompt: متن یا دستوری که به مدل هوش مصنوعی داده می‌شود.
  • Context (زمینه): اطلاعات پس‌زمینه‌ای که به مدل کمک می‌کند پاسخ دقیق‌تری بدهد.
  • System Prompt: دستورالعمل کلی که رفتار و شخصیت مدل را در طول یک گفتگو تعیین می‌کند.
  • Token: کوچک‌ترین واحد متنی که مدل پردازش می‌کند (تقریباً معادل بخشی از یک کلمه).
  • Temperature: پارامتری که میزان خلاقیت/تصادفی بودن پاسخ مدل را کنترل می‌کند (عدد پایین = دقیق‌تر و قابل‌پیش‌بینی‌تر، عدد بالا = خلاقانه‌تر).
  • Few-shot Prompting: دادن چند مثال به مدل قبل از درخواست اصلی تا الگوی پاسخ را یاد بگیرد.
  • Zero-shot Prompting: درخواست مستقیم از مدل بدون دادن هیچ مثالی.
  • Chain of Thought (زنجیرهٔ فکری): درخواست از مدل برای فکر کردن قدم‌به‌قدم قبل از رسیدن به پاسخ نهایی.
  • Hallucination: وقتی مدل اطلاعات نادرست یا ساختگی را با اعتمادبه‌نفس بیان می‌کند.

اصول یک پرامپت خوب

اصل توضیح
وضوح (Clarity) دقیق و واضح بگویید چه می‌خواهید؛ از ابهام پرهیز کنید.
زمینه (Context) اطلاعات لازم (هدف، مخاطب، محدودیت‌ها) را در پرامپت بگنجانید.
مشخص کردن فرمت خروجی بگویید پاسخ به چه شکلی باشد (لیست، جدول، کد، مقاله و...).
تعیین نقش (Role) از مدل بخواهید نقش خاصی ایفا کند، مثلاً «به‌عنوان یک برنامه‌نویس ارشد پاسخ بده».
مثال دادن (Examples) با ارائهٔ یک یا چند نمونه، الگوی موردنظر را روشن‌تر کنید.
محدودیت طول اگر پاسخ کوتاه یا بلند می‌خواهید، آن را مشخص کنید (مثلاً «در حد ۲۰۰ کلمه»).
تکرار و اصلاح (Iteration) اگر پاسخ اول رضایت‌بخش نبود، پرامپت را اصلاح و دوباره امتحان کنید.

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

۱. تعیین نقش (Role Prompting)

به مدل بگویید چه نقشی دارد تا لحن و محتوای پاسخ متناسب شود.

مثال: «تو یک متخصص سئو با ۱۰ سال سابقه هستی. یک استراتژی سئو برای یک فروشگاه آنلاین لباس پیشنهاد بده.»

۲. زنجیرهٔ فکری (Chain of Thought)

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

مثال: «این مسئله را قدم‌به‌قدم حل کن و برای هر مرحله توضیح بده که چرا آن کار را انجام می‌دهی.»

۳. Few-shot Prompting

چند مثال از الگوی موردنظر بده تا مدل سبک پاسخ را یاد بگیرد.

مثال:
ورودی: خوشحالم
خروجی: مثبت

ورودی: از این وضعیت خسته شدم
خروجی: منفی

ورودی: هوا امروز عالیه
خروجی: ؟

۴. مشخص کردن فرمت خروجی

مثال: «پاسخ را به‌صورت جدول با سه ستون (نام، مزیت، معایب) بنویس.»

۵. محدود کردن دامنهٔ پاسخ

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

۶. درخواست خودارزیابی (Self-critique)

مثال: «پاسخ را بنویس، سپس آن را نقد کن و نسخهٔ بهتری ارائه بده.»

ساختار پیشنهادی یک پرامپت کامل

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

نمونهٔ کامل با این ساختار:

تو یک مربی تناسب‌اندام حرفه‌ای هستی (نقش).
یک برنامهٔ تمرینی ۳ روزه برای یک فرد مبتدی که فقط دمبل در خانه دارد طراحی کن (هدف).
فرد ۲۵ سال دارد و هدفش افزایش حجم عضلانی است (زمینه).
از تمرینات پرخطر یا نیازمند دستگاه باشگاه استفاده نکن (محدودیت).
خروجی را به‌صورت جدول با ستون‌های روز، حرکت، تعداد ست و تکرار بنویس (فرمت خروجی).

اشتباهات رایج

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

نکات و بهترین شیوه‌ها

  • پرامپت را مثل صحبت با یک همکار باهوش ولی بدون اطلاعات زمینه‌ای بنویسید؛ هرچه بیشتر و دقیق‌تر توضیح دهید، پاسخ بهتری می‌گیرید.
  • برای وظایف پیچیده، پرامپت را به چند مرحلهٔ کوچک‌تر بشکنید.
  • از علامت‌های واضح (مثل شماره‌گذاری، خط تیره، یا برچسب‌های XML) برای جدا کردن بخش‌های مختلف پرامپت استفاده کنید.
  • همیشه خروجی مدل را بازبینی و در صورت نیاز پرامپت را اصلاح کنید (Prompt Iteration).
  • برای کارهای تکراری، پرامپت‌های موفق خود را ذخیره و به‌عنوان الگو (Template) دوباره استفاده کنید.