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, оценете резултата и добавете примери само ако е необходимо
Кога 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 промпт, който сте написали преди три седмици.
Започнете просто. Добавяйте сложност при нужда. Запазвайте това, което работи. Това е цялата стратегия.