0Pricing
AI Engineering Academy · Lekcja

Prompting zero-shot i few-shot

Uczestnicy poznają różnicę między bezpośrednim zadawaniem pytań modelowi a dostarczaniem przykładów oraz dowiedzą się, kiedy każda z tych metod daje lepsze wyniki w zadaniach klasyfikacji, ekstrakcji i generowania.

Prompting zero-shot i few-shot to bezpłatna lekcja AI Engineering Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Engineering Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.

Czym jest promptowanie zero-shot?

Promptowanie zero-shot oznacza poproszenie modelu o wykonanie zadania bez podawania przykładów pokazujących, jak je wykonać. Wystarczy opisać zadanie i pozwolić modelowi wykorzystać wiedzę zdobytą podczas wstępnego treningu. Ta metoda dobrze sprawdza się w zadaniach, z którymi model często spotykał się podczas treningu, takich jak tłumaczenie, streszczanie czy prosta klasyfikacja.

Przykładowo poproszenie modelu o zaklasyfikowanie tej opinii jako pozytywnej lub negatywnej jest promptem zero-shot. Podczas wstępnego treningu model przyswoił tysiące przykładów klasyfikacji sentymentu, dlatego może wykonać to zadanie bez pokazywania przykładów w samym prompcie.

Prosty przykład zero-shot

Prompty zero-shot są zwięzłe i opierają się na wbudowanej wiedzy modelu. Najlepiej działają, gdy zadanie jest typowe i jednoznaczne. Zwróć uwagę, że poniższy prompt jasno definiuje zadanie, nie pokazując przykładów prawidłowych wyników.

import openai

client = openai.OpenAI()

prompt = 'Classify the sentiment of the following customer review.\nRespond with only one word: Positive, Negative, or Neutral.\n\nReview: The delivery was fast but the packaging was damaged.\n\nSentiment:'

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': prompt}],
    max_tokens=5
)
print(response.choices[0].message.content)  # Expected: Negative

Kiedy zero-shot nie wystarcza

Promptowanie zero-shot może zawieść, gdy format zadania jest nietypowy, model musi stosować rzadko spotykany schemat wyników lub potrzebny jest spójny format, który model może interpretować inaczej przy każdym uruchomieniu. Proszenie modelu o wyodrębnienie danych do bardzo konkretnej struktury JSON z niestandardowymi nazwami pól jest ryzykowne w przypadku promptu zero-shot, ponieważ model musi odgadnąć dokładne intencje autora.

Zero-shot słabo sprawdza się również w przypadku żargonu dziedzinowego lub niszowych kategorii klasyfikacji, z którymi model mógł rzadko spotykać się podczas wstępnego treningu. W takich sytuacjach podanie przykładów znacznie poprawia dokładność.

Czym jest promptowanie few-shot?

Promptowanie few-shot polega na dostarczeniu modelowi 2–8 przykładów zadania (danych wejściowych i oczekiwanych wyników) przed przedstawieniem właściwego zapytania. Przykłady uczą model dokładnego formatu i schematu klasyfikacji, którego Państwo oczekują, bez konieczności dostrajania ani trenowania modelu.

To jedna z najskuteczniejszych, a zarazem najczęściej pomijanych technik inżynierii promptów. Model wykorzystuje przykłady do wywnioskowania wzorca i stosuje go do nowych danych wejściowych. Badania opisane w artykule na temat GPT-3 wykazały, że skuteczność w wielu zadaniach znacząco rosła wraz z liczbą przykładów — do około 8 przykładów; później wzrost się wypłaszcza, a Państwo jedynie marnują tokeny.

Struktura promptu few-shot

Prompt few-shot ma spójny schemat: należy pokazać N przykładów w postaci par danych wejściowych i wyników, a następnie przedstawić nowe dane wejściowe i pozwolić modelowi uzupełnić wynik. Formatowanie przykładów uczy model dokładnego formatu wyniku, którego Państwo oczekują.

import openai

client = openai.OpenAI()

prompt = ('Extract the product name and price from each sentence.\n'
          'Respond in the format: Product: <name> | Price: <price>\n\n'
          'Sentence: The blue headphones cost $79.99.\n'
          'Product: Blue Headphones | Price: $79.99\n\n'
          'Sentence: You can get the leather wallet for just $34.\n'
          'Product: Leather Wallet | Price: $34\n\n'
          'Sentence: Order the ergonomic keyboard for $129.99 today.\n')

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': prompt}],
    max_tokens=30
)
print(response.choices[0].message.content)

Wybór dobrych przykładów few-shot

Jakość przykładów jest równie ważna jak ich liczba. Należy wybierać przykłady, które:

  • Obejmują przypadki brzegowe — należy uwzględnić przykład z niejednoznacznymi danymi wejściowymi, aby model zobaczył, jak powinien je obsłużyć
  • Pokrywają przestrzeń wyników — jeśli mają Państwo trzy klasy, należy uwzględnić co najmniej jeden przykład każdej z nich
  • Są reprezentatywne — należy używać przykładów podobnych pod względem stylu i złożoności do rzeczywistych danych wejściowych w środowisku produkcyjnym
  • Mają spójny format — wszelkie niespójności formatu w przykładach zostaną przeniesione do wyników modelu

Nieodpowiednio dobrane przykłady mogą w rzeczywistości pogorszyć skuteczność, wprowadzając model w błąd co do rozkładu zadań.

Zero-shot a few-shot: kiedy stosować poszczególne podejścia

Tryb zero-shot należy stosować, gdy zadanie jest typowe i dobrze zdefiniowane, zależy Państwu na minimalnym koszcie tokenów lub szybko iterują Państwo nad rozwiązaniem, a zebranie przykładów jest jeszcze trudne. Zero-shot jest także lepszym wyborem, gdy nie chcą Państwo ograniczać ogólnej wiedzy modelu przykładami.

Tryb few-shot należy stosować, gdy format wyniku jest nietypowy lub ściśle określony, mają Państwo kategorie specyficzne dla danej domeny, tryb zero-shot generuje niespójne formatowanie albo model musi konsekwentnie stosować określony styl lub ton. Few-shot jest szczególnie skuteczny w zadaniach związanych z ekstrakcją, klasyfikacją i generowaniem z ograniczeniami formatu.

Few-shot w zadaniach klasyfikacyjnych

Klasyfikacja jest jednym z najbardziej wartościowych zastosowań promptowania few-shot. Gdy mają Państwo niestandardowe etykiety, które nie odpowiadają typowym kategoriom, dostarczenie przykładów uczy model Państwa taksonomii. Poniższe przykłady dokładnie definiują znaczenie etykiet Bug, Feature Request i Question w kontekście zgłoszeń do pomocy technicznej.

import openai

client = openai.OpenAI()

prompt = ('Classify the support ticket into: Bug, Feature Request, or Question.\n\n'
          'Ticket: The login button does nothing when I click it.\n'
          'Category: Bug\n\n'
          'Ticket: Can you add dark mode to the dashboard?\n'
          'Category: Feature Request\n\n'
          'Ticket: How do I export my data to CSV?\n'
          'Category: Question\n\n'
          'Ticket: The export button crashes the app every time.\n'
          'Category:')

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': prompt}],
    max_tokens=10
)
print(response.choices[0].message.content)  # Bug

Promptowanie one-shot

Pomiędzy trybami zero-shot i few-shot znajduje się promptowanie one-shot, czyli dostarczenie dokładnie jednego przykładu. Często wystarcza to do rozwiązania problemów z formatowaniem lub wyjaśnienia niejednoznacznych zadań, a kosztuje znacznie mniej tokenów niż pełny prompt few-shot. One-shot jest dobrym pierwszym krokiem, gdy tryb zero-shot daje niewiarygodne wyniki.

W praktyce należy zacząć od trybu zero-shot, ocenić wyniki na próbce rzeczywistych danych wejściowych i dodawać przykłady tylko tam, gdzie model sobie nie radzi. Dzięki temu prompty pozostają zwięzłe i oszczędne pod względem tokenów, a usprawnienia są kierowane tam, gdzie mają największe znaczenie.

Dynamiczny wybór przykładów few-shot

W systemach produkcyjnych używanie tych samych kilku przykładów dla każdego zapytania nie jest optymalne. Dynamiczny wybór przykładów few-shot polega na pobieraniu z banku oznaczonych przykładów tych, które są najbardziej podobne do bieżących danych wejściowych, z wykorzystaniem podobieństwa embeddingów, a następnie umieszczaniu w prompcie tylko tych przykładów.

Dzięki temu model zawsze widzi demonstracje najbardziej trafne dla konkretnych danych wejściowych, zamiast ogólnych przykładów, które mogą nie pasować do ich stylu ani domeny. Technika ta łączy zalety promptowania few-shot ze skalowalnością systemu wyszukiwania i bywa nazywana promptowaniem rozszerzanym przez wyszukiwanie przykładów.

Ograniczenia formatu w promptach few-shot

Promptowanie few-shot jest najbardziej niezawodnym sposobem wymuszania ścisłego formatu wyników, zanim uzyskają Państwo dostęp do ustrukturyzowanych wyników lub trybu JSON. Pokazanie modelowi dokładnego oczekiwanego formatu — w tym nazw pól, separatorów i kolejności — znacznie zwiększa prawdopodobieństwo uzyskania wyniku możliwego do przeparsowania.

Prompt few-shot należy zawsze kończyć początkiem oczekiwanego wzorca wyniku (np. otwierającą klamrą obiektu JSON lub nazwą pierwszego pola). Ukierunkowuje to model na kontynuowanie wzorca, zamiast potencjalnego podsumowania lub komentowania zadania w pierwszej kolejności.

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat koncepcji inżynierii AI z tej lekcji.

Podsumowanie lekcji

W tej lekcji poznali Państwo następujące zagadnienia: promptowanie zero-shot polega na zleceniu modelowi wykonania zadania wyłącznie na podstawie opisu, promptowanie few-shot dostarcza 2–8 przykładów danych wejściowych i wyników, aby nauczyć model formatu i taksonomii, a dynamiczny wybór przykładów few-shot pobiera najbardziej trafne przykłady dla każdego zapytania na podstawie podobieństwa embeddingów. W następnej części omówimy promptowanie chain-of-thought w złożonych zadaniach wymagających rozumowania.

Często zadawane pytania

Czy lekcja „Prompting zero-shot i few-shot” jest bezpłatna?

Tak — pełny tekst „Prompting zero-shot i few-shot” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Engineering Academy, przejdź na CoddyKit PRO. Kurs AI Engineering Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Prompting zero-shot i few-shot”?

Uczestnicy poznają różnicę między bezpośrednim zadawaniem pytań modelowi a dostarczaniem przykładów oraz dowiedzą się, kiedy każda z tych metod daje lepsze wyniki w zadaniach klasyfikacji, ekstrakcji… Ćwiczysz AI Engineering Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Engineering Academy?

Nie wymagamy żadnego doświadczenia. AI Engineering Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Prompting zero-shot i few-shot”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Engineering Academy?

Tak. Każda lekcja AI Engineering Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Prompting zero-shot i few-shot
  2. Chain-of-thought i rozumowanie krok po kroku
  3. Prompty systemowe i definiowanie persony
  4. Iteracyjne doskonalenie i debugowanie promptów
← Powrót do AI Engineering Academy