آموزش ۳۰ اردیبهشت ۱۴۰۵ ۲۰ دقیقه مطالعه متین لب‌خندق

Few-shot Learning
یادگیری با چند مثال در پرامپت‌نویسی

چطور با چند مثال کوتاه، مدل زبانی را وادار کنیم دقیقاً همان خروجی‌ای را بدهد که می‌خواهید

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

Few-shot Learning چیست؟

Few-shot Learning در زمینه مهندسی پرامپت یعنی این که قبل از طرح سوال یا تسک واقعی، چند نمونه‌ی «ورودی → خروجی» را داخل پرامپت قرار می‌دهید تا مدل با دیدن آنها الگوی کار را پیدا کند. این کار بدون هیچ آموزش مجدد و فقط در همان جلسه‌ی گفت‌وگو رخ می‌دهد. به همین خاطر است که آن را گاهی In-Context Learning هم می‌نامند؛ یعنی یادگیری درون متن.

این مفهوم برای اولین بار به شکل گسترده در مقاله‌ی معروف «Language Models are Few-Shot Learners» از Brown و همکاران در سال ۲۰۲۰ معرفی شد. در آن مقاله نشان داده شد که مدل GPT-3 با ۱۷۵ میلیارد پارامتر، صرفاً با ۵ مثال (5-shot) می‌تواند در بسیاری از بنچمارک‌ها از مدل‌های کوچک‌تر اما fine-tune شده پیشی بگیرد. این یافته انقلابی در مسیر استفاده از LLMها به‌وجود آورد و باعث شد مهندسی پرامپت به یک مهارت کلیدی تبدیل شود.

تعریف دقیق‌تر

اصطلاح معنی
Zero-shot هیچ مثالی به مدل داده نمی‌شود؛ فقط دستور
One-shot یک مثال نمونه قبل از سوال اصلی
Few-shot چند مثال (معمولاً ۲ تا ۸) قبل از سوال اصلی
In-Context Learning نام علمی این رفتار در مدل‌های زبانی بزرگ
نکته کلیدی: Few-shot Learning در پرامپت‌نویسی با Few-shot Learning در یادگیری ماشین کلاسیک (مثل meta-learning) متفاوت است. اینجا هیچ گرادیانی محاسبه نمی‌شود؛ مدل صرفاً از روی مثال‌ها الگو می‌گیرد.

چرا Few-shot کار می‌کند؟

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

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

سه دلیل اصلی موفقیت Few-shot

  1. تثبیت فرمت خروجی: مدل دقیقاً می‌فهمد خروجی باید چه شکلی باشد؛ JSON، جدول، لیست، یا متن آزاد.
  2. کاهش ابهام معنایی: توضیح طولانی برای تعریف یک کلاس همیشه به اندازه‌ی نشان دادن سه نمونه از آن کلاس گویا نیست.
  3. کنترل سبک و لحن: مدل لحن، طول جملات و میزان رسمی بودن را از روی مثال‌ها تقلید می‌کند.
دیدگاه پژوهشی: طبق نتایج مقاله GPT-3، عملکرد مدل با افزایش تعداد پارامترها و تعداد مثال‌ها به‌صورت لگاریتمی بهبود می‌یابد. یعنی پرش از Zero-shot به Few-shot معمولاً بیشترین جهش را ایجاد می‌کند و بعد از آن بازدهی کاهش می‌یابد.

مقایسه: Zero-shot vs One-shot vs Few-shot

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

ویژگی Zero-shot One-shot Few-shot
تعداد مثال ۰ ۱ ۲ تا ۸
دقت در تسک‌های مبهم پایین متوسط بالا
کنترل فرمت خروجی ضعیف قابل قبول عالی
مصرف توکن حداقل کم متوسط
سرعت پاسخ بالا بالا کمی کندتر
مناسب برای تسک‌های ساده و عمومی تسک‌های نیمه‌اختصاصی تسک‌های دقیق و سازمانی

نمونه عینی از تفاوت

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

### نسخه Zero-shot
این ایمیل را به لحن دوستانه بازنویسی کن:
«جناب آقای محترم، با سلام و احترام، به استحضار می‌رسانم...»

### نسخه One-shot
این ایمیل را به لحن دوستانه بازنویسی کن.

مثال:
ورودی: «جناب آقای دکتر، با سلام و احترام، خواهشمندم...»
خروجی: «سلام دکتر! یه خواهش ازت داشتم...»

حالا این را بازنویسی کن:
«جناب آقای محترم، با سلام و احترام، به استحضار می‌رسانم...»

### نسخه Few-shot
ورودی: «جناب آقای دکتر، با سلام و احترام، خواهشمندم...»
خروجی: «سلام دکتر! یه خواهش ازت داشتم...»

ورودی: «احتراماً به اطلاع می‌رسانم که جلسه فردا کنسل شده است.»
خروجی: «راستی، جلسه فردا کنسل شد.»

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

ورودی: «جناب آقای محترم، با سلام و احترام، به استحضار می‌رسانم...»
خروجی:

تفاوت کیفیت در عمل واضح است: نسخه Few-shot چون لحن دقیق هدف را در سه مثال دیده، با احتمال خیلی بالاتری همان سبک محاوره‌ای ساده را بازتولید می‌کند.

چند مثال مناسب است؟

یکی از پرتکرارترین سوال‌ها در دوره‌های مهندسی پرامپت همین است: «دقیقاً چند مثال بدهم؟» پاسخ کوتاه: بیشتر اوقات بین ۳ تا ۵ مثال نقطه‌ی شیرین است. اما این عدد به جنس تسک هم بستگی دارد.

راهنمای انتخاب تعداد مثال

تعداد مثال وقتی استفاده کنید هشدار
۱ مثال تسک ساده، فقط برای نشان دادن فرمت خروجی مدل ممکن است الگو را تعمیم ندهد
۳ مثال بیشتر تسک‌های طبقه‌بندی و تبدیل سبک حداقل تعداد توصیه‌شده برای سوگیری کم
۵ مثال (sweet spot) تسک‌های پیچیده‌تر مثل استخراج اطلاعات تعادل خوبی بین دقت و مصرف توکن
۸ تا ۱۰ مثال تسک‌های با کلاس‌های زیاد یا فرمت خیلی خاص بازدهی کاهشی؛ احتمال گرفتاری در recency bias
بیشتر از ۱۰ به‌ندرت لازم است اگر اینقدر مثال دارید، Fine-tuning را بررسی کنید
قانون تجربی: اگر بعد از ۵ مثال هنوز خروجی قابل قبول نیست، اضافه کردن مثال ششم و هفتم معمولاً کمک نمی‌کند. به‌جای آن سراغ بازنویسی خود مثال‌ها، اصلاح ترتیب، یا تغییر معماری پرامپت (مثل افزودن Chain of Thought) بروید.

چگونه مثال‌های خوب انتخاب کنیم؟

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

۱. تنوع (Diversity)

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

۲. توازن (Balance)

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

۳. ترتیب (Ordering)

مدل‌ها به مثال‌های انتهای پرامپت حساس‌ترند (recency bias). دو توصیه مهم:

۴. وضوح (Clarity)

هر مثال باید خودکفا باشد. یعنی ورودی و خروجی به‌وضوح از هم جدا و قابل تشخیص باشند. از جداکننده‌های ثابت مثل ###، --- یا تگ‌های XML مانند <input> و <output> استفاده کنید.

تمرین مفید: قبل از قطعی کردن مثال‌ها، فرض کنید یک انسان تازه‌وارد فقط همان چند مثال شما را می‌بیند. آیا می‌تواند الگو را تشخیص دهد؟ اگر برای انسان روشن است، برای مدل هم روشن خواهد بود.

مثال‌های عملی فارسی

تا اینجا تئوری بحث کردیم. حالا چهار مثال کاملاً عملی به زبان فارسی می‌بینیم که می‌توانید همین فردا در کار خودتان به کار ببرید.

۱) طبقه‌بندی نظرات کاربران

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

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

نظر: «کیفیت بسته‌بندی خیلی خوب بود و کالا سالم رسید. ممنون.»
کلاس: مثبت

نظر: «دو هفته معطل شدم تا فقط مشکی‌ش رو بفرستن، اونم اشتباه.»
کلاس: منفی

نظر: «قیمت متوسطی داره؛ نه ارزون نه گرون. کیفیتش هم در همین حد.»
کلاس: خنثی

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

دقت کنید چطور هر کلاس یک نمونه دارد و مثال آخر هم کمی چندپهلو است تا توانایی مدل را بسنجد. این الگو در عمل دقتی بالای ۹۰ درصد در مدل‌های روز می‌دهد.

۲) استخراج اطلاعات از متن آزاد

یکی از کاربردهای پرتکرار Few-shot، استخراج فیلدهای ساختاریافته از متن غیرساختاریافته است. مثلاً استخراج نام، شغل و شهر از یک معرفی کوتاه:

متن: «سلام، من رضا هستم، برنامه‌نویس بک‌اند و ساکن مشهد.»
خروجی: نام=رضا | شغل=برنامه‌نویس بک‌اند | شهر=مشهد

متن: «من مریم احمدی هستم، طراح UX، الان تهران زندگی می‌کنم.»
خروجی: نام=مریم احمدی | شغل=طراح UX | شهر=تهران

متن: «اسمم علی‌رضاست، معلم ریاضی دبیرستان، اهل اصفهان.»
خروجی: نام=علی‌رضا | شغل=معلم ریاضی دبیرستان | شهر=اصفهان

متن: «سلام من نگارم، روزنامه‌نگار آزاد، شیراز هستم فعلاً.»
خروجی:

این الگو پایه‌ی بسیاری از پایپ‌لاین‌های پردازش زبان طبیعی است؛ از CRM گرفته تا تحلیل رزومه و دسته‌بندی پیام‌های پشتیبانی.

۳) تبدیل سبک نوشتاری: رسمی به محاوره‌ای

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

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

رسمی: «احتراماً به اطلاع می‌رسانم که جلسه فردا به دلیل تعطیلی رسمی، لغو گردید.»
محاوره‌ای: «راستی، جلسه فردا چون تعطیل رسمیه، کنسل شد.»

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

رسمی: «به استحضار می‌رساند که هزینه‌های جانبی بر عهده مشتری خواهد بود.»
محاوره‌ای: «هزینه‌های فرعی به عهده‌ی خود مشتریه.»

رسمی: «جناب آقای مدیر، خواهشمندم نسبت به بررسی موضوع اقدام لازم را مبذول فرمایید.»
محاوره‌ای:

۴) تولید JSON ساختاریافته از متن آزاد

اگر در حال ساخت یک محصول AI هستید و خروجی مدل را به یک سیستم دیگر می‌فرستید، تولید JSON تمیز اهمیت حیاتی دارد. Few-shot دقیق‌ترین راه برای رسیدن به این هدف است:

دستور: متن سفارش را به JSON ساختاریافته تبدیل کن.

متن: «می‌خوام دو تا پیتزا مارگاریتا متوسط و یک نوشابه کوکا بدون قند سفارش بدم.»
JSON:
{
  "items": [
    {"name": "پیتزا مارگاریتا", "size": "متوسط", "quantity": 2},
    {"name": "نوشابه کوکا", "options": ["بدون قند"], "quantity": 1}
  ]
}

متن: «یک برگر دوبل با سیب‌زمینی بزرگ و یک آب‌میوه پرتقال.»
JSON:
{
  "items": [
    {"name": "برگر دوبل", "quantity": 1},
    {"name": "سیب‌زمینی", "size": "بزرگ", "quantity": 1},
    {"name": "آب‌میوه پرتقال", "quantity": 1}
  ]
}

متن: «سه تا کیک شکلاتی کوچیک و دو تا قهوه اسپرسو لطفاً.»
JSON:

توجه کنید که در این الگو، فرمت دقیق JSON، نام فیلدها و حتی نحوه‌ی هندل کردن گزینه‌های اختیاری (مثل options) را با مثال نشان دادیم. این کار اعتبارسنجی خروجی را تا بیش از ۹۵ درصد بالا می‌برد.

نکته حرفه‌ای: همیشه آخرین مثال را با همان فرمتی شروع کنید که مدل باید ادامه دهد. در مثال JSON بالا، خط آخر JSON: تمام می‌شود و مدل آن را با براکت { ادامه می‌دهد. این کار ثبات خروجی را تضمین می‌کند.

ترکیب Few-shot با Chain of Thought

یکی از قدرتمندترین تکنیک‌های مهندسی پرامپت، ترکیب Few-shot با Chain of Thought است. ایده ساده است: در هر مثال، علاوه بر ورودی و خروجی نهایی، مسیر استدلال را هم نشان می‌دهید. مدل یاد می‌گیرد که برای رسیدن به جواب درست، باید مرحله به مرحله فکر کند.

این تکنیک به‌خصوص در تسک‌های منطقی، ریاضی، تصمیم‌گیری و حل مسئله بازدهی شگفت‌انگیزی دارد. مقاله‌ی Wei و همکاران (۲۰۲۲) نشان داد که Few-shot + CoT می‌تواند دقت مدل‌های بزرگ را در تسک‌های ریاضی از حدود ۱۸ درصد به بالای ۵۰ درصد برساند.

مثال عملی: محاسبه تخفیف

دستور: قیمت نهایی بعد از تخفیف را محاسبه کن. مرحله به مرحله توضیح بده.

سوال: محصول ۲۰۰,۰۰۰ تومان است با ۲۰٪ تخفیف. قیمت نهایی چقدر است؟
استدلال: مبلغ تخفیف = ۲۰۰,۰۰۰ × ۰.۲ = ۴۰,۰۰۰ تومان. قیمت نهایی = ۲۰۰,۰۰۰ − ۴۰,۰۰۰ = ۱۶۰,۰۰۰ تومان.
جواب: ۱۶۰,۰۰۰ تومان

سوال: محصول ۸۵۰,۰۰۰ تومان است با ۱۵٪ تخفیف بعلاوه ۹٪ مالیات. قیمت نهایی؟
استدلال: تخفیف = ۸۵۰,۰۰۰ × ۰.۱۵ = ۱۲۷,۵۰۰. بعد از تخفیف = ۸۵۰,۰۰۰ − ۱۲۷,۵۰۰ = ۷۲۲,۵۰۰. مالیات = ۷۲۲,۵۰۰ × ۰.۰۹ = ۶۵,۰۲۵. قیمت نهایی = ۷۲۲,۵۰۰ + ۶۵,۰۲۵ = ۷۸۷,۵۲۵ تومان.
جواب: ۷۸۷,۵۲۵ تومان

سوال: محصول ۱,۲۰۰,۰۰۰ تومان است با ۳۰٪ تخفیف و سپس ۱۰٪ تخفیف اضافی روی مبلغ بعد از تخفیف. قیمت نهایی؟
استدلال:

مدل با دیدن دو مثال قبلی یاد می‌گیرد که باید ابتدا تخفیف اول، بعد تخفیف دوم را روی نتیجه‌ی قبلی اعمال کند؛ و این کار را به‌جای صرفاً جمع کردن درصدها انجام دهد. این تفاوت در عمل بین «جواب درست» و «جواب اشتباه» را تعیین می‌کند.

توصیه: اگر تسک شما نیاز به استدلال چند‌مرحله‌ای دارد، حتماً Few-shot را با Chain of Thought ترکیب کنید. این ترکیب تقریباً همیشه بهتر از هرکدام به‌تنهایی عمل می‌کند.

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

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

۱. سوگیری ترتیب (Ordering Bias)

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

۲. سوگیری تازگی (Recency Bias)

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

۳. مثال‌های متناقض

گاهی پیش می‌آید که دو مثال شما الگوهای متناقضی نشان می‌دهند؛ مثلاً در یکی «خنثی» را به نظری مثبت‌گرا نسبت می‌دهید و در دیگری همان نوع را «مثبت» می‌نامید. این تناقض مدل را دچار سردرگمی می‌کند.

۴. مثال‌های خیلی پیچیده

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

۵. فراموش کردن جداکننده

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

۶. نشت داده (Data Leakage)

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

هشدار: مطالعات نشان داده‌اند که تغییر صرفاً ترتیب مثال‌ها می‌تواند دقت یک سیستم Few-shot را تا ۳۰ درصد بالا یا پایین کند. این یکی از دلایلی است که آزمایش سیستماتیک پرامپت‌ها اهمیت دارد.

چه زمانی Few-shot استفاده نکنیم؟

Few-shot ابزار قدرتمندی است، اما همیشه بهترین انتخاب نیست. در سه حالت زیر بهتر است سراغ روش‌های دیگر بروید:

۱. وقتی Zero-shot کافی است

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

۲. وقتی داده‌ی آموزش زیاد دارید

اگر صدها یا هزاران نمونه از تسک خود در اختیار دارید، احتمالاً Fine-tuning مدل گزینه‌ی اقتصادی‌تر و دقیق‌تری است. Few-shot برای ۳ تا ۸ مثال طراحی شده، نه برای پایگاه‌داده‌های بزرگ.

۳. وقتی پنجره‌ی متن (context) محدود است

در پرامپت‌های با اسناد طولانی (مثل خلاصه‌سازی یک قرارداد ۵۰ صفحه‌ای)، اضافه کردن مثال‌های متعدد ممکن است فضای لازم برای خود سند را بگیرد. در این موارد یا از مدل‌های با context بلندتر استفاده کنید، یا تعداد مثال‌ها را کم کنید و توضیحات ساختار را تقویت کنید.

تصمیم‌گیری سریع: اگر تسک ساده است و Zero-shot کار می‌کند → از مثال صرف‌نظر کنید. اگر تسک پیچیده‌تر است و کمتر از ۱۰ نمونه دارید → Few-shot. اگر صدها نمونه دارید و دقت بسیار مهم است → Fine-tuning. اگر کسب‌وکار شما به پرامپت تخصصی نیاز دارد، قالب‌های پرامپت برای کسب‌وکار راهنمای خوبی است.

Few-shot در اکوسیستم بزرگ‌تر مهندسی پرامپت

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

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

چک‌لیست یک پرامپت Few-shot حرفه‌ای

  1. دستور (instruction) شفاف در ابتدای پرامپت آمده است.
  2. تعداد مثال‌ها بین ۳ تا ۵ است.
  3. هر کلاس یا حالت ممکن حداقل یک مثال دارد.
  4. توازن بین کلاس‌ها رعایت شده است.
  5. ترتیب مثال‌ها متنوع و غیر تکراری است.
  6. جداکننده‌ی ثابت بین ورودی و خروجی استفاده شده.
  7. مثال آخر یک نمونه‌ی نماینده‌ی معمولی است.
  8. سوال نهایی با همان فرمت مثال‌ها تمام می‌شود.
  9. پرامپت با چند ورودی متفاوت تست شده است.

مطالعه موردی: تشخیص قصد کاربر در چت‌بات پشتیبانی

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

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

پیام: «سلام، سفارشم رو ۳ روز پیش ثبت کردم هنوز خبری نشده. کد سفارش ۱۲۳۴۵»
کلاس: پیگیری_سفارش

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

پیام: «آیا این لپ‌تاپ از ویندوز ۱۱ پشتیبانی می‌کنه؟»
کلاس: سوال_محصول

پیام: «خیلی بد بود پشتیبانیتون، یک ساعت معطل شدم!»
کلاس: شکایت

پیام: «ساعت کاری شما چیه؟»
کلاس: سایر

پیام: «من دیروز یک گوشی خریدم و الان می‌خوام بدونم چقدر طول می‌کشه به دستم برسه.»
کلاس:

این پرامپت با ۵ مثال متعادل (هر کلاس یک نمونه) معمولاً دقت بالای ۹۲ درصد در مدل‌های روز می‌دهد. مهم‌ترین نکات: هر کلاس دقیقاً یک نمونه دارد، ترتیب کلاس‌ها تصادفی است، و مثال آخر یک نمونه‌ی روشن از کلاس «سایر» است تا مدل بفهمد سوالات عمومی هم باید جایی برود.

جمع‌بندی نکات کلیدی

  • Few-shot یعنی ارائه چند مثال در پرامپت برای آموزش الگو در همان جلسه.
  • عدد جادویی معمولاً ۳ تا ۵ مثال متنوع و متوازن است.
  • کیفیت مثال‌ها مهم‌تر از کمیت آنهاست.
  • ترتیب مثال‌ها می‌تواند تا ۳۰ درصد در دقت تأثیر بگذارد.
  • ترکیب Few-shot با Chain of Thought در تسک‌های منطقی فوق‌العاده است.
  • اگر داده‌ی زیاد دارید، Fine-tuning را در نظر بگیرید.
  • یک پرامپت خوب همیشه قبل از استفاده تست و ارزیابی می‌شود.

می‌خواهید Few-shot و سایر تکنیک‌های پرامپت‌نویسی را حرفه‌ای یاد بگیرید؟

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

مشاهده سرفصل‌های دوره

سوالات متداول

Few-shot Learning چیست؟
Few-shot Learning به معنای ارائه چند مثال (معمولاً ۲ تا ۸ نمونه) درون متن پرامپت است تا مدل زبانی الگوی کار را یاد بگیرد و خروجی مشابه تولید کند. این کار بدون آموزش مجدد مدل و فقط در زمان استنتاج انجام می‌شود.
تفاوت Zero-shot و One-shot و Few-shot در چیست؟
در Zero-shot هیچ مثالی به مدل داده نمی‌شود و فقط دستور توضیح می‌شود. در One-shot یک مثال ارائه می‌گردد. در Few-shot چند مثال (معمولاً ۳ تا ۵ نمونه) به مدل نشان داده می‌شود تا الگو را بهتر تشخیص دهد.
چند مثال در Few-shot مناسب است؟
در اغلب کاربردها ۳ تا ۵ مثال نقطه شیرین محسوب می‌شود. مثال‌های کمتر از ۲ نمونه الگو را شفاف نمی‌کنند و بیشتر از ۸ نمونه معمولاً بازدهی کاهشی دارد و فقط توکن مصرف می‌کند.
چرا Few-shot Learning کار می‌کند؟
مدل‌های زبانی بزرگ توانایی In-Context Learning دارند؛ یعنی با دیدن چند نمونه در پنجره ورودی، الگوی نگاشت ورودی به خروجی را در همان جلسه می‌آموزند. این پدیده در مقاله GPT-3 توسط Brown و همکاران (۲۰۲۰) به‌صورت رسمی معرفی شد.
آیا Few-shot Learning نیاز به آموزش مدل دارد؟
خیر. در Few-shot هیچ تغییری در وزن‌های مدل رخ نمی‌دهد. مدل فقط در زمان پاسخ‌دهی و درون همان پرامپت، الگو را از مثال‌ها استخراج می‌کند. این یکی از مزیت‌های بزرگ آن نسبت به Fine-tuning است.
چه زمانی Few-shot استفاده نکنیم؟
اگر تسک واقعاً ساده باشد و مدل با Zero-shot به خوبی پاسخ بدهد، اضافه کردن مثال فقط توکن هدر می‌دهد. همچنین اگر مثال‌های شما با هم تناقض دارند یا توزیع نامتعادل دارند، بهتر است به‌جای Few-shot روی Fine-tuning یا Chain-of-Thought سرمایه‌گذاری کنید.
ترتیب مثال‌ها در Few-shot مهم است؟
بله. مدل‌ها به مثال‌های انتهای پرامپت حساس‌ترند (Recency Bias). اگر مثال‌های یک کلاس را پشت سر هم بچینید، احتمال سوگیری زیاد می‌شود. توصیه می‌شود مثال‌ها را ترکیبی و متنوع چینش کنید.
Few-shot را با Chain of Thought ترکیب کنیم؟
بله. ترکیب Few-shot با Chain of Thought (نمایش مرحله به مرحله استدلال در مثال‌ها) به‌خصوص در تسک‌های منطقی و ریاضی بازدهی را به‌شدت بالا می‌برد و یکی از قوی‌ترین تکنیک‌های مهندسی پرامپت است.

قدم بعدی

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

شروع دوره مهندسی پرامپت
متین لب‌خندق

متین لب‌خندق

برنامه‌نویس ارشد و متخصص هوش مصنوعی

مهندس هوش مصنوعی با ۱۰ سال تجربه برنامه‌نویسی و ۵ سال تخصص در AI. مدرس دوره جامع مهندسی پرامپت.

نویسنده: متین لب‌خندق — مهندس هوش مصنوعی با ۱۰ سال برنامه‌نویسی و ۵ سال تمرکز روی مدل‌های زبانی (LLM)؛ سازنده‌ی سیستم‌های واقعیِ production با ChatGPT، Claude و Gemini و بنیان‌گذار آکادمی متین لب‌خندق. مقاله‌ی پایه: راهنمای جامع مهندسی پرامپت.