Обратно към блога

Few-shot срещу zero-shot промптинг: кога кое да използвате

Практическо ръководство за избор на правилния подход към промптовете, с готови примери и проста рамка за вземане на решения.

Few-shot срещу zero-shot промптинг: кога кое да използвате
Поставяте промпт в ChatGPT. Резултатът е... приемлив. Но сте виждали как други хора получават значително по-добри отговори, когато добавят „примери“ към своите промптове. Трябва ли и вие да го правите? Колко примера? И има ли изобщо значение за конкретната ви задача?
Тези въпроси изникват постоянно, а терминологията не помага. „Zero-shot“, „few-shot“, „one-shot“ — звучат повече като термини от фотографията, отколкото като практически насоки. Това ръководство ще ви преведе през жаргона и ще ви даде ясна рамка за избор на подход, плюс пълни промптове, които можете да копирате и тествате сами.

Какво всъщност означава zero-shot промптинг

Zero-shot промптинг означава да дадете на ИИ задача, без да му показвате каквито и да било примери за това какво искате. Описвате нуждата си, а моделът сам преценява как да я изпълни въз основа на обучението си.
Ето zero-shot промпт за обобщаване на бележки от среща:

Обобщи следните бележки от срещата в 3-5 пункта, отразяващи ключовите взети решения.

Бележки от срещата:
{{meeting_notes}}
Това е всичко. Без примери за „добри“ обобщения, без образци за входни и изходни данни. Разчитате на модела да разбере как изглежда едно резюме и какво означават „ключови решения“. За много задачи този подход работи изненадващо добре.

Какво всъщност означава few-shot промптинг

Few-shot промптинг означава да включите 2-5 примера в промпта си, които показват шаблона, който искате ИИ да следва. На практика казвате: „ето как искам да се справиш с това“, преди да дадете истинската задача.
Ето същата задача за обобщаване, но с примери:

Обобщавай бележки от срещи в 3-5 пункта, отразяващи ключовите решения.

Пример 1:
Вход: „Екипът обсъди целите за Q3. Сара предложи увеличаване на целта за продажби с 15%. Марк не се съгласи и предложи 10% като по-реалистично с оглед на текущия pipeline. Екипът гласува и се обединиха около 12%. Решихме също да отложим редизайна на сайта за Q4.“
Изход:
- Договорено увеличение на целта за продажби с 12% за Q3 (компромис между 15% и 10%)
- Редизайнът на сайта се отлага за Q4

Пример 2:
Вход: „Среща за преглед на бюджета. Текущите разходи са 8% над прогнозата. Финансовият директор препоръча намаляване на бюджета за пътувания с 50% и замразяване на новите назначения за 60 дни. Изпълнителният директор одобри и двете мерки със задна дата от днес.“
Изход:
- Намаление на бюджета за пътувания с 50% (в сила незабавно)
- Одобрено замразяване на наемането за 60 дни
- Реакция на 8% преразход по бюджета

Сега обобщи това:
{{meeting_notes}}
Забележете разликата. Примерите показват на модела точно какъв формат искате (пунктове с контекст в скоби), какво ниво на детайлност да включи и как да обработва множество решения. Моделът научава вашите предпочитания в самия контекст — без нужда от fine-tuning.

Основните разлики накратко

Ето как двата подхода се сравняват по факторите, които имат най-голямо значение:
  • Скорост: Zero-shot е по-бърз. По-малко токени за обработка означава по-кратки отговори.
  • Цена: Zero-shot е по-евтин. Плащате на токен, а примерите се натрупват.
  • Усилие за подготовка: Zero-shot почти не изисква никакво. Few-shot изисква да намерите или създадете добри примери.
  • Точност при прости задачи: Приблизително еднаква. Съвременните модели се справят добре с ясни заявки и в двата случая.
  • Точност при сложни/специфични задачи: Few-shot обикновено печели. Когато ви трябва конкретно форматиране или специализирана терминология, примерите носят осезаема разлика.
Компромисът е ясен: zero-shot е по-прост и евтин, но few-shot ви дава повече контрол върху изхода. Въпросът е кога допълнителният контрол си заслужава.

Кога zero-shot работи най-добре

Zero-shot промптингът блести, когато задачата е нещо, което моделът вече „разбира“ от обучението си. Това включва:
Въпроси с обща информация: Когато искате обяснения, дефиниции или фактически данни. Моделът знае как изглежда добро обяснение.

Творческо генериране на идеи: Измисляне на идеи, писане на първи чернови или генериране на варианти. Тук искате разнообразие, а не следване на конкретен шаблон.

Стандартно обобщаване: Съкращаване на статии, имейли или документи, когато не ви трябва специфичен формат.

Превод: Преобразуване на текст между езиците, на които е обучен моделът.

Проста класификация: Сортиране на елементи в общи категории (положителен/отрицателен, спешен/неспешен), когато категориите се разбират от само себе си.
Полезно правило: ако можете да опишете какво искате с обикновен език и човек би ви разбрал без да види примери, zero-shot вероятно ще свърши работа.
Блок-схема, показваща процеса на вземане на решение: започнете със zero-shot, оценете резултата и добавете примери само ако е необходимо
Блок-схема, показваща процеса на вземане на решение: започнете със zero-shot, оценете резултата и добавете примери само ако е необходимо

Кога few-shot си заслужава допълнителните токени

Few-shot промптингът се отплаща, когато изходът трябва да следва шаблони, които моделът не може да изведе само от инструкции:
Персонализирано форматиране: Когато ви трябват изходи в специфична структура — JSON с конкретни полета, таблици с точно определени колони, пунктове в определен стил. Примерите показват формата по-добре, отколкото описанията го обясняват.

Вашите категории за класификация: Ако сортирате имейли от клиенти в категории като „въпрос за фактуриране“, „заявка за функционалност“, „доклад за бъг“ и „общо запитване“, показването на примери за всяка от тях помага на модела да разбере вашите дефиниции.

Съответствие с тона на марката: Искате ли ИИ да пише като съществуващото съдържание на компанията ви? Покажете му 2-3 примера от този стил. Инструкции като „пиши в професионален, но приятелски тон“ са твърде неясни; примерите са конкретни.

Терминология, специфична за областта: Ако индустрията ви използва жаргон или съкращения, които имат различни значения другаде, примерите учат модела на вашия контекст.

Гранични случаи и нюанси: Засичане на сарказъм, ирония или фини разграничения, които спъват zero-shot подходите. Изследвания показват, че few-shot промптингът подобрява значително справянето с гранични случаи на сентимент като отрицание и сарказъм.
Едно проучване установи, че при класификация на сентимент в Twitter, few-shot промптинг само с 20-50 примера се доближава до представянето на модели, fine-tuned върху над 10 000 примера. Това е силата на добре подбраните демонстрации.
Ако се хванете, че изграждате библиотека от few-shot промптове за различни задачи, инструмент като PromptNest ви помага да ги запазите с вградени променливи като {{meeting_notes}} — попълвате празните полета при копиране и пълният промпт е готов за поставяне.

Подходът „започни от нулата, надгради при нужда“

Ето практическият подход, който спестява и време, и токени:
Стъпка 1: Опитайте първо zero-shot. Напишете ясен промпт, който описва какво искате. Бъдете конкретни за задачата, но засега не включвайте примери.

Стъпка 2: Оценете резултата. Дава ли ви това, от което имате нужда? Ако да, готови сте. Ако не — определете какво не е наред. Форматът? Тонът? Липсващи детайли? Пълно неразбиране на задачата?

Стъпка 3: Добавете целеви примери. Създайте 2-3 примера, които конкретно демонстрират това, което моделът е разбрал погрешно. Ако форматът е бил грешен, покажете правилния. Ако тонът е бил нелогичен, покажете правилния тон.
Този работен процес е важен, защото не гадаете дали ви трябват примери — реагирате на реални пропуски. Понякога добавянето на „Нека помислим стъпка по стъпка“ към zero-shot промпт решава проблеми с разсъжденията, без изобщо да ви трябват примери. Изследванията потвърждават, че zero-shot chain-of-thought често превъзхожда few-shot при задачи, изискващи разсъждение.

Колко примера всъщност ви трябват?

Изследванията последователно сочат към оптимална зона от 2-5 примера за повечето задачи. Ето какво показват данните:
- Първите 2-3 примера дават най-голямото подобрение в точността - След 4-5 примера ползата рязко намалява - Повече примери понякога влошават представянето, защото внасят противоречиви шаблони - Качеството на примерите е по-важно от количеството — три отлични примера побеждават десет посредствени
Има и още един важен извод за реда на примерите: проучванията показват, че последователността им влияе на резултата, като оптималното подреждане понякога прави разликата между добро и слабо представяне. Ако вашият few-shot промпт не работи добре, опитайте първо да пренаредите примерите, преди да добавяте нови.
Илюстрация, показваща как примерни карти се добавят към промпт, с намаляваща полза след първите няколко
Илюстрация, показваща как примерни карти се добавят към промпт, с намаляваща полза след първите няколко
За повечето случаи започнете с 2 примера. Ако точността не е там, където я искате, добавете трети, който покрива различен вариант. Рядко ще ви трябват повече от 4.

Chain-of-thought: средният път за разсъждаване

Има и трети вариант, който работи особено добре за математика, логика и многоетапни задачи: chain-of-thought промптинг. Вместо да показвате примери вход-изход, искате от модела да „мисли стъпка по стъпка“.
Zero-shot chain-of-thought изглежда така:

Един магазин има 45 ябълки. Сутринта продават 12 и получават доставка от още 30. После следобед продават 18. Колко ябълки имат при затварянето?

Нека решим това стъпка по стъпка.
Тази проста фраза — „Нека решим това стъпка по стъпка“ — кара модела да покаже разсъжденията си, вместо да скочи направо към отговора. При сложни разсъждения това често превъзхожда както zero-shot, така и few-shot подходите.
Скорошно изследване от arXiv установи, че при силни модели като GPT-4 и Claude, zero-shot chain-of-thought често превъзхожда few-shot промптинга при задачи, изискващи разсъждение. Примерите всъщност могат да ограничат мисленето на модела, вместо да го подпомогнат.
Използвайте chain-of-thought, когато:
  • Задачата изисква няколко логически стъпки
  • Имате нужда моделът да обясни разсъжденията си (полезно за откриване на грешки)
  • Става дума за математика, логика на код или аналитични проблеми
  • Искате да проверите подхода на модела, а не само отговора му

Готови примери за промптове, които можете да копирате

Нека видим трите подхода един до друг върху реални задачи. Всички промптове са тествани с GPT-4 и Claude и са готови за употреба.

Задача 1: Класификация на тона на имейл

Zero-shot версия:

Класифицирай тона на този имейл от клиент като: разочарован, удовлетворен, неутрален или спешен.

Имейл:
{{email_text}}

Тон:
Few-shot версия (по-добра за гранични случаи):

Класифицирай тона на имейли от клиенти като: разочарован, удовлетворен, неутрален или спешен.

Имейл: „Чакам поръчката си вече 3 седмици. Това е нелепо. Искам възстановяване на сумата ВЕДНАГА.“
Тон: разочарован

Имейл: „Просто исках да благодаря — продуктът пристигна по-рано и работи чудесно!“
Тон: удовлетворен

Имейл: „Здравейте, можете ли да потвърдите, че поръчката ми е изпратена? Поръчка #12345.“
Тон: неутрален

Имейл: „Системата ни не работи и ни трябва резервната част ДНЕС, иначе губим договора.“
Тон: спешен

Имейл: {{email_text}}
Тон:
Few-shot версията помага на модела да разбере вашите конкретни дефиниции. Разликата между „спешен“ и „разочарован“ може да е размита — примерите ясно очертават границите.

Задача 2: Пренаписване на продуктово описание

Zero-shot версия:

Пренапиши това продуктово описание така, че да е по-ангажиращо и фокусирано върху ползите. Запази до 100 думи.

Оригинал: {{product_description}}

Пренаписана версия:
Few-shot версия (по-добра за консистентност на марковия тон):

Пренаписвай продуктови описания така, че да са ангажиращи и фокусирани върху ползите. Спазвай този стил:

Оригинал: „Бутилка за вода от неръждаема стомана. Капацитет 24oz. Запазва напитките студени до 24 часа.“
Пренаписано: „Останете хидратирани цял ден с нашата елегантна стоманена бутилка от 24oz. Сутрешното ви кафе остава топло през цялото пътуване до работа. Следобедната вода стои ледено студена във фитнеса. Една бутилка, безкрайни възможности.“

Оригинал: „Безжични слушалки. 8 часа батерия. Шумоизолация.“
Пренаписано: „Осем часа любими подкасти, без прекъсвания. Нашите безжични слушалки блокират шума, за да можете да се съсредоточите върху това, което има значение — независимо дали е дълбока работа, плейлистът ви за тренировка или най-после довършване на онази аудиокнига.“

Оригинал: {{product_description}}
Пренаписано:
Few-shot версията учи модела на специфичен copywriting стил — водещи ползи, разговорен език, конкретни случаи на употреба. Zero-shot би ви дал някакво пренаписване, но не непременно с вашия глас.

Задача 3: Структуриране на доклад за бъг

Zero-shot версия:

Преобразувай този доклад за бъг в структуриран формат с: Резюме, Стъпки за възпроизвеждане, Очаквано поведение и Реално поведение.

Доклад за бъг: {{bug_report}}
Few-shot версия (по-добра за консистентно форматиране):

Преобразувай доклади за бъгове в структуриран формат.

Вход: „Приложението се срива, когато опитам да кача PDF. Бях на таблото, кликнах върху качване, избрах PDF от 5MB, и просто се затвори. Трябваше да покаже файла в моите качвания, но вместо това цялото приложение умира.“

Изход:
**Резюме:** Приложението се срива при качване на PDF файлове
**Стъпки за възпроизвеждане:**
1. Отидете на таблото
2. Кликнете върху бутона за качване
3. Изберете PDF файл (тествано с файл от 5MB)
**Очаквано:** Файлът се появява в секцията за качвания
**Реално:** Приложението се срива/затваря неочаквано

---

Вход: {{bug_report}}

Изход:
За техническа документация консистентността има значение. Few-shot версията гарантира, че всеки доклад за бъг следва една и съща структура с едно и също ниво на детайлност.

Бърза рамка за решение

Когато сте изправени пред нова задача, минете през тези въпроси:
1. Задачата ясна и добре дефинирана ли е? → Започнете със zero-shot 2. Нужен ли ви е специфичен формат, който моделът може да не отгатне? → Използвайте few-shot 3. Задачата изисква ли многоетапно разсъждаване? → Опитайте първо zero-shot chain-of-thought 4. Имате ли нужда от консистентен глас на марката или специализирана терминология? → Използвайте few-shot с примери в този стил 5. Zero-shot ви даде ли 80% от това, от което имате нужда? → Спрете дотам. Перфекционизмът не си заслужава 3 пъти повече токени.
Целта не е да използвате най-сложната техника — а да получите добри резултати ефективно. Zero-shot е стандартът. Добавяйте сложност само когато по-простите подходи не достигат.

Превръщаме теорията в практика

Най-добрият начин да усвоите това е чрез експерименти. Вземете задача, която вършите редовно — обобщаване на доклади, писане на имейли, категоризиране на обратна връзка — и опитайте и двата подхода. Забележете къде zero-shot не достига. Забележете къде few-shot носи реална разлика.
След като намерите промптове, които работят, ги запазете на място, където реално ще можете да ги намерите отново. Ако изграждате колекция от промптове с примери и променливи, PromptNest е нативно Mac приложение ($19.99 еднократно в Mac App Store, без абонамент, без акаунт, работи локално), което ги държи подредени, търсими и достъпни с клавишна комбинация от всяко приложение. Край на ровенето из разпръснати бележки за онзи перфектен few-shot промпт, който сте написали преди три седмици.
Започнете просто. Добавяйте сложност при нужда. Запазвайте това, което работи. Това е цялата стратегия.