Menu

Few-shot prompting: przykłady i kiedy go używać

Few-shot prompting to umieszczenie w prompcie kilku rozwiązanych przykładów, każdy z wejściem i oczekiwaną odpowiedzią, żeby model skopiował wzorzec. To najszybszy sposób, by nauczyć go formatu, zestawu etykiet albo stylu, którego sam by nie odgadł.

Każdy prompt poniżej możesz edytować: zmień go, a potem otwórz w ChatGPT, Claude lub innej aplikacji AI.

Few-shot prompting polega na pokazaniu modelowi kilku rozwiązanych przykładów zadania, każdy jako wejście w parze z oczekiwaną odpowiedzią, zanim podasz mu właściwe wejście. Model odczytuje wzorzec i go kontynuuje. Przykłady to najszybszy sposób, żeby ustalić rzeczy trudne do opisania słowami: gdzie przebiega granica między dwiema kategoriami, jaki dokładnie kształt ma wynik albo jakim głosem pisze twój zespół.

Jak działa few-shot prompting

Brown i współautorzy w pracy z 2020 roku "Language Models are Few-Shot Learners" pokazali, że GPT-3 potrafi przyswoić nowe zadanie z kilku demonstracji umieszczonych w prompcie, bez ponownego trenowania. Nazywa się to in-context learning: w samym modelu nic się nie zmienia, a przykłady wpływają tylko na odpowiedź na ten jeden prompt. Następnym razem przykłady znów muszą się w nim znaleźć.

Nazwy biorą się od liczby przykładów. Prompt zero-shot nie ma żadnego, prompt one-shot ma jeden, a prompt few-shot ma kilka, zwykle od dwóch do kilku.

Zero-shot i few-shot obok siebie

Obie poniższe zakładki proszą o to samo tym samym poleceniem. Jedyna różnica polega na tym, że druga zakładka dodaje cztery opisane etykietami przykłady przed właściwym zgłoszeniem.

Sklasyfikuj zgłoszenie do supportu jako bug, billing, account albo feature_request. Zgłoszenie: Po zresetowaniu hasła nowe hasło nie działa, ciągle pojawia się komunikat o nieprawidłowych danych logowania.
Try it
Example replyReplies vary between models and runs.

Kategoria: bug

Użytkownik zresetował hasło, ale nowe hasło jest odrzucane przy logowaniu. To wskazuje na problem w procesie resetowania hasła, więc najpewniej jest to bug w systemie uwierzytelniania.

Przykłady zmieniły dwie rzeczy. Pierwsza to format: odpowiedź zero-shot dodała pogrubiony nagłówek i wyjaśnienie, a odpowiedź few-shot dopasowała się do przykładów i podała jedno słowo, które skrypt może od razu odczytać. Druga to decyzja. "Bug" to rozsądne odczytanie zgłoszenia i większość ludzi by je wybrała. Ale ten zespół kwalifikuje problemy z logowaniem jako account, a trzeci przykład mówi to bez jednego słowa wyjaśnienia. Żadne polecenie nie wspominało o tej regule; przenosiły ją przykłady.

Ile przykładów użyć

Zacznij od dwóch do pięciu. To wystarcza przy większości zadań z formatowaniem i klasyfikacją, a prompt pozostaje krótki.

  • Jeden przykład pokazuje format, ale model ma skłonność do zbyt wiernego kopiowania go. Jeśli jedyny przykład to 30-wyrazowe streszczenie zmiany cennika, następne streszczenie może mieć 30 wyrazów i dziwnie skupiać się na pieniądzach.
  • Dwa albo trzy różne przykłady pozwalają modelowi zobaczyć, co mają wspólnego (wzorzec), a co się zmienia (szczegóły).
  • Przy klasyfikacji dołącz co najmniej jeden przykład dla każdej etykiety, a potem dodaj przypadki graniczne, które bez przykładów wychodziły źle.
  • Powyżej kilku zyski zwykle maleją, a każde zapytanie się wydłuża, co kosztuje tokeny i czas. Jeśli do poprawnego wyniku potrzebujesz dziesiątek przykładów, zadanie może wymagać jaśniejszego polecenia albo zupełnie innego podejścia.

Jak dobrać dobre przykłady

Model uczy się ze wszystkiego, co twoje przykłady mają wspólnego, a nie tylko z tego, czego chcesz go nauczyć.

  • Uwzględnij trudne przypadki. Łatwe przykłady uczą niewiele. Najbardziej przydatne leżą na granicy, jak zgłoszenie o logowaniu powyżej.
  • Różnicuj powierzchnię. Mieszaj krótkie i długie wejścia, różne tematy i różne sformułowania. Jeśli każda pozytywna recenzja w przykładach jest krótka, model może uznać długość za sygnał.
  • Równoważ etykiety i mieszaj kolejność. Modele mają skłonność do przechylania się w stronę etykiety, która pojawia się w przykładach najczęściej, i tej, która pojawia się ostatnia.
  • Sprawdź każdy przykład. Błąd w przykładzie to polecenie, żeby ten błąd popełnić.
  • Używaj prawdziwych wejść. Przykłady wzięte z twoich rzeczywistych danych znacznie lepiej odpowiadają temu, co zobaczy model, niż wymyślone.

Zachowaj identyczny format

Każdy przykład powinien używać tych samych etykiet, separatorów i wielkości liter, a właściwe wejście powinno wyglądać dokładnie jak wejścia z przykładów. W prompcie ze zgłoszeniami każdy przykład to "Zgłoszenie:", a potem "Etykieta:", a prompt kończy się otwartą linią "Etykieta:", po której naturalnie da się napisać tylko jedno.

Dłuższe przykłady otaczaj wyraźnymi znacznikami, na przykład tagami <example>, żeby model widział, gdzie jeden się kończy, a następny zaczyna; zobacz delimitery i tagi XML. W API możesz też podać przykłady jako wcześniejsze tury rozmowy: wiadomość użytkownika z przykładowym wejściem, a potem wiadomość asystenta z odpowiedzią, powtórzone dla każdego przykładu.

Prompty few-shot to dobre szablony promptów wielokrotnego użytku: polecenie i przykłady pozostają stałe, a zmienia się tylko wejście. Poniższy blok przepisuje wiadomość commita w stylu zespołu. Wpisz w polu własną wiadomość i wyłącz część z przykładami, żeby zobaczyć, ile stylu przenoszą.

Wiadomości commitów w stylu zespołu
Fill in
Parts
Przepisz wiadomość commita w stylu naszego zespołu. Odpowiedz tylko przepisaną wiadomością.
Przed: dodany ten eksport csv na stronie raportów Po: feat(reports): dodaj eksport do CSV Przed: podbicie lodash przez ostrzeżenie bezpieczeństwa Po: chore(deps): zaktualizuj lodash z powodu alertu bezpieczeństwa Przed: Naprawiony crash przy pustym koszyku!! Po: fix(cart): zapobiegaj crashowi przy pustym koszyku Przed: literówka w readme Po: docs(readme): popraw literówkę
Przed: pole wyszukiwania ma nie rozróżniać wielkich i małych liter Po:
Try it
Example replyReplies vary between models and runs.

feat(search): spraw, żeby pole wyszukiwania nie rozróżniało wielkości liter

Żadna z reguł nie jest zapisana: typ małymi literami, zakres w nawiasie, tryb rozkazujący, brak kropki na końcu. Przykłady pokazują wszystkie cztery, a odpowiedź się do nich stosuje. Po wyłączeniu przykładów model nadal poprawia wiadomość, ale musi zgadywać styl i nic nie sprawia, że jego domysł pokryje się z twoim.

Przykłady few-shot mogą też demonstrować rozumowanie, a nie tylko odpowiedzi. Rozwiązane przykłady pokazujące swoje kroki to sposób, w jaki pierwotnie przedstawiono chain of thought prompting. Przy modelach, które rozumują wewnętrznie przed odpowiedzią, ograniczaj przykłady do wejść, odpowiedzi i formatu: rozpisane kroki rozumowania mogą odciągnąć je od lepszej drogi, a niektórzy dostawcy radzą, żeby przy takich modelach najpierw spróbować zero-shot.

Najczęściej zadawane pytania

Czym jest few-shot prompting?

Few-shot prompting to dołączenie do promptu kilku przykładów zadania, każdy jako wejście w parze z poprawnym wyjściem, przed właściwym wejściem. Model kontynuuje wzorzec wyznaczony przez przykłady. Najbardziej przydaje się przy własnych kategoriach, nietypowych formatach i stylach firmowych, które łatwiej pokazać niż opisać.

Ile przykładów powinien mieć prompt few-shot?

Od dwóch do pięciu to dobry punkt wyjścia dla większości zadań. Przy klasyfikacji dołącz co najmniej jeden przykład na etykietę oraz przypadki graniczne, w których model mylił się bez przykładów. Powyżej kilku każdy kolejny przykład zwykle pomaga mniej, a wydłuża każde zapytanie.

Czym jest one-shot prompting?

One-shot prompting daje modelowi dokładnie jeden przykład. To wystarcza, żeby pokazać format, ale model ma skłonność do zbyt wiernego kopiowania tego jednego przykładu, łącznie z długością, sformułowaniami, a nawet tematem. Drugi, inny przykład mówi modelowi, które cechy są wzorcem, a które przypadkiem.

Czy model uczy się z moich przykładów?

Tylko na potrzeby bieżącego zapytania. Przykłady kształtują odpowiedź, bo są w kontekście; wagi modelu się nie zmieniają i nic nie zostaje zapamiętane na następną rozmowę. Nazywa się to in-context learning i właśnie dlatego prompt few-shot musi zawierać swoje przykłady przy każdym użyciu.

Czy złe przykłady mogą pogorszyć wynik?

Tak. Model kopiuje wszystko, co przykłady mają wspólnego, także błędy, długość i ton, których nie zamierzasz przekazać. Jeśli większość przykładów ma tę samą etykietę, model też ma skłonność do przechylania się w jej stronę. Sprawdź, czy przykłady są poprawne, zróżnicowane i zrównoważone.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ