تفاوت پرامپت صفر-نمونه (Zero-shot) و چند-نمونه (Few-shot) در تعداد مثال‌هایی است که به مدل ارائه می‌شود؛ در پرامپت صفر-نمونه، مدل فقط بر اساس دستور پاسخ می‌دهد، در حالی که در پرامپت چند-نمونه، چند نمونه ورودی-خروجی به مدل نشان داده می‌شود تا الگوی مورد انتظار را استخراج کند. این تفاوت ظاهراً ساده، تأثیر عمیقی بر دقت، پایداری و هزینه اجرا دارد. برای درک عمیق این تفاوت، ابتدا باید با استفاده از مثال در پرامپت آشنا باشیم و سپس لایه‌های تصمیم‌گیری را تحلیل کنیم.

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

تعریف صفر-نمونه و چند-نمونه

برای درک تفاوت این دو رویکرد، ابتدا باید هر یک را دقیق تعریف کنیم.

پرامپت صفر-نمونه (Zero-shot Prompting)

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

نمونه‌ای از پرامپت صفر-نمونه:

متن زیر را به انگلیسی ترجمه کن:
"وردپرس یک سیستم مدیریت محتوا است."

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

پرامپت چند-نمونه (Few-shot Prompting)

در پرامپت چند-نمونه، چند مثال ورودی-خروجی به مدل ارائه می‌شود. این مثال‌ها، الگوی مورد انتظار را نشان می‌دهند و مدل را به سمت پاسخ مطلوب هدایت می‌کنند.

نمونه‌ای از پرامپت چند-نمونه:

Example 1:
Input: "Hello"
Output: "سلام"

Example 2:
Input: "Thank you"
Output: "متشکرم"

Now translate: "Good morning"

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

انتخاب میان صفر-نمونه و چند-نمونه، یک تصمیم مهندسی است، نه یک ترجیح شخصی.

جایگاه پرامپت یک-نمونه

میان صفر-نمونه و چند-نمونه، رویکرد سومی نیز وجود دارد: یک-نمونه (One-shot). در این رویکرد، فقط یک مثال به مدل ارائه می‌شود.

مزایای یک-نمونه

  • هزینه کمتر: نسبت به چند-نمونه، هزینه توکن کمتری دارد.
  • سرعت بیشتر: زمان اجرا کوتاه‌تر است.
  • الگوی ساده: یک مثال می‌تواند الگوی پایه را منتقل کند.

معایب یک-نمونه

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

یک-نمونه، در وظایف ساده که الگوی پایه کافی است، مؤثر عمل می‌کند. اما در وظایف پیچیده، چند-نمونه معمولاً نتایج بهتری ارائه می‌دهد.

تفاوت‌های اصلی دو رویکرد

تفاوت‌های اصلی میان صفر-نمونه و چند-نمونه را می‌توان در چند محور خلاصه کرد:

تعداد مثال

صفر-نمونه: بدون مثال. چند-نمونه: با چند مثال (معمولاً ۳ تا ۱۰).

طول پرامپت

صفر-نمونه: پرامپت کوتاه. چند-نمونه: پرامپت طولانی‌تر به‌دلیل مثال‌ها.

هزینه توکن

صفر-نمونه: هزینه کمتر. چند-نمونه: هزینه بیشتر.

دقت

صفر-نمونه: دقت متغیر. چند-نمونه: دقت بالاتر در وظایف ساختاریافته.

پایداری خروجی

صفر-نمونه: پایداری پایین‌تر. چند-نمونه: پایداری بالاتر.

مناسب برای

صفر-نمونه: وظایف عمومی و ساده. چند-نمونه: وظایف ساختاریافته و تخصصی.

ویژگیصفر-نمونهچند-نمونه
تعداد مثال۰۳ تا ۱۰
طول پرامپتکوتاهطولانی
هزینه توکنکمزیاد
دقت در وظایف ساختاریافتهمتوسطبالا
پایداری خروجیمتوسطبالا
مناسب برای وظایف عمومیبلهنه لزوماً
مناسب برای وظایف تخصصینه لزوماًبله

تفاوت در دقت و پایداری

دقت و پایداری، دو معیار اصلی در ارزیابی عملکرد مدل هستند. تفاوت صفر-نمونه و چند-نمونه در این دو معیار، به نوع وظیفه بستگی دارد.

وظایف عمومی

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

وظایف ساختاریافته

در وظایف ساختاریافته مانند طبقه‌بندی با قالب خاص، استخراج اطلاعات در قالب JSON یا تولید متن با لحن مشخص، چند-نمونه عملکرد بهتری ارائه می‌دهد. مثال‌ها، ساختار مورد انتظار را منتقل می‌کنند.

وظایف تخصصی

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

پایداری خروجی

پایداری خروجی در چند-نمونه به‌طور چشمگیری بالاتر است. مدل در اجراهای مختلف، به همان الگویی که در مثال‌ها دیده، پایبند می‌ماند. این ویژگی، در سامانه‌های تولیدی حیاتی است.

در وظایف ساختاریافته، چند-نمونه نه یک انتخاب، بلکه یک ضرورت است.

تفاوت در هزینه و تأخیر

هزینه و تأخیر، دو محدودیت اصلی در انتخاب میان صفر-نمونه و چند-نمونه هستند.

هزینه توکن

هر مثال، تعداد توکن‌های پرامپت را افزایش می‌دهد. اگر n مثال با میانگین m توکن داشته باشید، هزینه اضافی n×m توکن است. در سامانه‌های پرترافیک، این هزینه می‌تواند قابل‌توجه باشد.

تأخیر

پرامپت طولانی‌تر، زمان پردازش بیشتری نیاز دارد. این تأخیر اضافی، در سامانه‌های Real-Time می‌تواند مسئله‌ساز باشد.

بهینه‌سازی هزینه

برای بهینه‌سازی هزینه چند-نمونه، می‌توان از راهکارهای زیر استفاده کرد:

  • کاهش تعداد مثال‌ها به حداقل لازم.
  • استفاده از مثال‌های کوتاه‌تر.
  • استفاده از Prompt Caching برای مثال‌های تکراری.
  • استفاده از مدل‌های ارزان‌تر با چند-نمونه.
  • انتخاب پویا مثال‌ها بر اساس ورودی. برای جزئیات، پست بهینه‌سازی هزینه در پرامپت نویسی را ببینید.
معیارصفر-نمونهچند-نمونه
هزینه توکنپایینبالا
تأخیرکمبیشتر
مقیاس‌پذیریبالامتوسط
مناسب برای Real-Timeبلهمحدود

چه زمانی صفر-نمونه بهتر است؟

پرامپت صفر-نمونه در شرایط زیر گزینه بهتری است:

  • وظایف عمومی و شناخته‌شده: ترجمه ساده، خلاصه‌سازی، پاسخ به پرسش‌های عمومی.
  • محدودیت هزینه شدید: زمانی که بودجه توکن محدود است.
  • محدودیت تأخیر: در سامانه‌های Real-Time که تأخیر حیاتی است.
  • وظایف خلاقانه: در تولید محتوای خلاقانه، مثال‌ها ممکن است خلاقیت را محدود کنند. برای جزئیات، پست پرامپت نویسی برای خلاقیت را ببینید.
  • مدل‌های بسیار قوی: مدل‌های بزرگ‌تر، در وظایف عمومی حتی بدون مثال عملکرد خوبی دارند.
  • وظایف با تنوع بالا: اگر وظیفه تنوع بسیار بالایی دارد، پوشش همه حالت‌ها با مثال دشوار است.

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

چه زمانی چند-نمونه بهتر است؟

پرامپت چند-نمونه در شرایط زیر گزینه بهتری است:

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

در این شرایط، چند-نمونه می‌تواند دقت و پایداری خروجی را به‌طور چشمگیری افزایش دهد.

رویکرد ترکیبی و پویا

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

Dynamic Few-shot Prompting

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

Adaptive Few-shot

در این رویکرد، تعداد مثال‌ها بر اساس پیچیدگی ورودی تنظیم می‌شود. برای ورودی‌های ساده، صفر-نمونه یا یک-نمونه استفاده می‌شود؛ برای ورودی‌های پیچیده، چند-نمونه.

Self-Adaptive Prompting

در این رویکرد، مدل خودش تصمیم می‌گیرد که به مثال نیاز دارد یا نه. اگر مدل مطمئن باشد، صفر-نمونه عمل می‌کند؛ در غیر این صورت، از مثال‌ها استفاده می‌کند.

ترکیب با RAG

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

ارزیابی و مقایسه عملی

برای انتخاب میان صفر-نمونه و چند-نمونه، باید ارزیابی عملی انجام شود. مراحل ارزیابی:

تعریف معیار

معیارهای ارزیابی را تعریف کنید: دقت، پایداری، هزینه، تأخیر. برای معیارهای ارزیابی، پست معیارهای ارزیابی پرامپت را ببینید.

ساخت مجموعه تست

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

اجرای آزمون A/B

دو نسخه از پرامپت (صفر-نمونه و چند-نمونه) را روی مجموعه تست اجرا کنید. برای جزئیات، پست آزمون A/B برای پرامپت‌ها را ببینید.

تحلیل نتایج

نتایج را بر اساس معیارها تحلیل کنید. تصمیم نهایی باید بر اساس تعادل بین دقت و هزینه باشد.

تکرار دوره‌ای

این ارزیابی را به‌صورت دوره‌ای تکرار کنید، زیرا عملکرد مدل ممکن است با نسخه‌های جدید تغییر کند.

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

اشتباهات رایج در انتخاب میان صفر-نمونه و چند-نمونه:

استفاده از چند-نمونه در همه وظایف

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

نادیده گرفتن هزینه

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

مثال‌های نامرتبط

اگر مثال‌ها به وظیفه اصلی مربوط نباشند، چند-نمونه می‌تواند عملکرد را کاهش دهد.

نبود حالت‌های مرزی در مثال‌ها

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

مثال‌های نادرست

اگر یک مثال شامل خطا باشد، مدل ممکن است همان خطا را تکرار کند. مثال‌ها باید دقیق باشند.

عدم ارزیابی

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

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

پرسش‌های پرتکرار درباره صفر-نمونه و چند-نمونه

آیا چند-نمونه همیشه بهتر از صفر-نمونه است؟

خیر. در وظایف ساده و عمومی، صفر-نمونه می‌تواند عملکرد مشابهی با هزینه کمتر ارائه دهد. در وظایف ساختاریافته و تخصصی، چند-نمونه معمولاً بهتر عمل می‌کند.

چند مثال برای چند-نمونه کافی است؟

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

آیا تفاوت صفر-نمونه و چند-نمونه در هزینه قابل‌توجه است؟

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

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

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

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

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

آیا انتخاب میان صفر-نمونه و چند-نمونه بر امنیت اثر دارد؟

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

آیا Dynamic Few-shot Prompting همیشه بهتر است؟

نه همیشه. Dynamic Few-shot Prompting هزینه و پیچیدگی را افزایش می‌دهد. در وظایف ساده، این رویکرد ممکن است ضروری نباشد.

آیا تفاوت میان صفر-نمونه و چند-نمونه در همه مدل‌ها یکسان است؟

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

آیا چند-نمونه می‌تواند جایگزین Fine-tuning شود؟

در برخی وظایف، بله. In-context Learning با مثال‌های خوب می‌تواند عملکردی مشابه Fine-tuning ارائه دهد. اما در وظایف پیچیده، Fine-tuning ممکن است همچنان لازم باشد.

چطور بفهمم در پروژه‌ام کدام رویکرد بهتر است؟

با ارزیابی عملی. دو نسخه از پرامپت (صفر-نمونه و چند-نمونه) را روی یک مجموعه تست مشترک اجرا کنید و نتایج را بر اساس معیارهای دقت، پایداری، هزینه و تأخیر مقایسه کنید.

آیا چند-نمونه در سامانه‌های Real-Time قابل استفاده است؟

بله، اما با محدودیت. پرامپت طولانی‌تر، تأخیر بیشتری ایجاد می‌کند. راهکارهایی مانند Prompt Caching و انتخاب پویا مثال‌ها می‌تواند تأخیر را کاهش دهد.

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

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

انتخاب درست میان صفر-نمونه و چند-نمونه، تفاوت میان یک سامانه کارآمد و یک سامانه پرهزینه است.

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

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