Modele generatywnej sztucznej inteligencji (AI), takie jak modele z rodziny Gemini, mogą tworzyć treści na podstawie różnych typów danych wejściowych, w tym tekstu, obrazów i dźwięku. Na najbardziej podstawowym poziomie te modele działają jak zaawansowane aplikacje do autouzupełniania. Na podstawie tekstu wejściowego („Możesz prowadzić konia do wodopoju”) model generatywny może przewidzieć, że tekst wyjściowy, który statystycznie jest najbardziej prawdopodobny („ale nie możesz zmusić go do picia”), jest zgodny z wzorcami wyuczonymi na podstawie danych treningowych. Tej podstawowej właściwości modeli generatywnych możesz używać w różnych zastosowaniach:
- Twórz kreatywne teksty, takie jak poezja, opowiadania, metafory czy posty na blogu.
- Konwertowanie uporządkowanych danych na dowolny tekst
- Wyodrębnianie i podsumowywanie informacji z tekstu dowolnego
- Generowanie kodu
- Tłumacz teksty w różnych językach
Tworzenie tych funkcji przy użyciu modeli generatywnych nie wymaga żadnej wiedzy z zakresu systemów uczących się. Nie musisz zbierać dużego zbioru danych ani trenować modelu. Aby utworzyć pierwszy prototyp, wystarczy w kilku zdaniach opisać, co ma zrobić model.
Generatywne modele, które obsługują tylko dane wejściowe i wyjściowe tekstowe, są też nazywane dużymi modelami językowymi (LLM). Modele z rodziny Gemini mogą przetwarzać więcej niż tylko dane tekstowe. Chociaż mogą pełnić funkcje modelu LLM, bardziej właściwie nazywamy je modelami generatywnymi.
Przykładowe zastosowania
Poniższe przykłady pokazują typowe dane wejściowe i dane wyjściowe modelu generatywnego.
Wygeneruj wiersz
Dane wejściowe użytkownika: Write me a four-line poem about puppies and Android phones. Make
sure it rhymes.
Dane wyjściowe modelu:
Puppies are cute,
Android phones are neat,
They both bring joy,
And make life complete.
Generowanie listy
Dane wejściowe użytkownika: Generate a bulleted list of items I need to pack for a three-day
camping trip.
Dane wyjściowe modelu:
* Tent
* Sleeping bag
* Sleeping pad
* Camp stove
* Pots and pans
* Utensils
* Food
* Water
* First-aid kit
* Sunscreen
* Insect repellent
* ...
Modele generatywne mogą generować różne przydatne zachowania, takie jak to, wystarczy tylko utworzyć odpowiedni tekst wejściowy, zwany też promptem. Sztuka i nauka polegająca na znalezieniu odpowiedniego sformułowania, aby modele generatywne działały zgodnie z oczekiwaniami, to projektowanie promptów (nazywany też „inżynierią promptów” lub po prostu „promptowaniem”).
Podstawy projektowania promptów
W poprzedniej sekcji pokazaliśmy kilka przykładów promptów zawierających instrukcję, np. „Napisz wiersz”. Takie instrukcje mogą być przydatne w przypadku niektórych rodzajów zadań. W przypadku innych aplikacji lepiej może się jednak sprawdzić inna technika promptów, tzw. prompty jednorazowe. Prompty typu few-shot korzystają z tego, że duże modele językowe są niezwykle skuteczne w rozpoznawaniu i powtarzaniu wzorów w danych tekstowych. Chodzi o to, aby wysłać do modelu generatywnego wzór tekstowy, który będzie się uczyć uzupełniać. Załóżmy np., że chcesz utworzyć aplikację, która pobiera nazwę kraju i wyświetla jego stolicę. Oto prompt tekstowy, który ma to na celu:
Italy : Rome
France : Paris
Germany :
W tym promptzie ustalasz wzór: [country] : [capital]
. Jeśli wyślesz to promptowanie do dużego modelu językowego, zostanie ono automatycznie uzupełnione i zwróci coś takiego:
Berlin
Turkey : Ankara
Greece : Athens
Odpowiedź tego modelu może wyglądać nieco dziwnie. Model zwrócił nie tylko stolicę Niemiec (ostatni kraj w odręcznym promptie), ale też pełną listę dodatkowych par krajów i stołów. Wynika to z faktu, że model generatywny to „kontynuowanie wzorca”. Jeśli chcesz tylko zbudować funkcję, która podaje stolicę podanego kraju („Niemcy: Berlin”), prawdopodobnie nie interesuje Cię tekst generowany przez model po słowie „Berlin”. Jako projektant aplikacji prawdopodobnie zechcesz przyciąć te nieistotne przykłady. Co więcej, prawdopodobnie zechcesz skonfigurować dane wejściowe, aby Niemcy nie były stałym ciągiem znaków, lecz zmienną, którą poda użytkownik:
Italy : Rome
France : Paris
<user input here> :
Właśnie napisałeś prompt typu „few-shot” do generowania nazw stolic państw.
Możesz wykonać wiele zadań, korzystając z tego szablonu promptu z kilku zdjęć. Oto prompt typu „kilka czynności” w nieco innym formacie, który konwertuje kod Python na JavaScript:
Convert Python to JavaScript.
Python: print("hello world")
JavaScript: console.log("hello world")
Python: for x in range(0, 100):
JavaScript: for(var i = 0; i < 100; i++) {
Python: ${USER INPUT HERE}
JavaScript:
Możesz też użyć prompta „Odwróć słownik”. Na podstawie definicji zwraca słowo, które pasuje do tej definicji:
Given a definition, return the word it defines.
Definition: When you're happy that other people are also sad.
Word: schadenfreude
Definition: existing purely in the mind, but not in physical reality
Word: abstract
Definition: ${USER INPUT HERE}
Word:
Zauważysz, że wzór tych krótkich promptów jest nieco inny. Oprócz przykładów możesz w promptach umieszczać instrukcje. Jest to dodatkowa strategia, którą warto wziąć pod uwagę podczas pisania własnych promptów, ponieważ pomaga przekazać modelowi swoje intencje.
Prompting a tradycyjne tworzenie oprogramowania
W odróżnieniu od tradycyjnego oprogramowania, które jest tworzone zgodnie ze starannie napisanymi specyfikacjami, działanie modeli generatywnych jest w dużej mierze niejasne nawet dla osób trenujących modele. W efekcie często nie można przewidzieć z wyprzedzeniem, które typy struktur promptów sprawdzą się najlepiej w przypadku danego modelu. Co więcej, zachowanie modelu generatywnego zależy w dużej mierze od jego danych treningowych, a ponieważ są na bieżąco dostrajane na nowych zbiorach danych, czasami model zmienia się na tyle, że przypadkowo zmienia struktury promptów, które działają najlepiej. Co to oznacza dla Ciebie? Eksperymentuj! Wypróbuj różne formaty promptów.
Parametry modelu
Każdy prompt wysyłany do modelu zawiera wartości parametrów, które określają, jak model wygeneruje odpowiedź. Model może generować różne wyniki zależnie od tych wartości. Najczęstsze parametry modelu to:
Maksymalna liczba tokenów wyjściowych: określa maksymalną liczbę tokenów, które mogą zostać wygenerowane w odpowiedzi. Token ma około 4 znaków. 100 tokenów odpowiada około 60–80 słowom.
Temperatura: temperatura decyduje o stopniu losowości wyboru tokenów. Temperatura jest używana do próbkowania podczas generowania odpowiedzi, co ma miejsce, gdy stosujesz
topP
itopK
. Niższe temperatury są przydatne w przypadku promptów, na które oczekuje się bardziej deterministycznej lub mniej otwartej odpowiedzi, a wyższe mogą prowadzić do bardziej różnorodnych lub kreatywnych wyników. Temperatura o wartości 0 jest deterministyczna, co oznacza, że zawsze jest wybierana najbardziej prawdopodobna odpowiedź.topK
: parametrtopK
zmienia sposób, w jaki model wybiera tokeny w celu wygenerowania odpowiedzi.topK
o wartości 1 oznacza, że wybierany jest najbardziej prawdopodobny token spośród wszystkich tokenów w słowniku modelu (jest to też nazywane dekodowaniem zachłannym), natomiasttopK
o wartości 3 oznacza, że następny token jest wybierany spośród 3 najbardziej prawdopodobnych z użyciem temperatury. Na każdym etapie wyboru tokena próbkowane są tokenytopK
o najwyższym prawdopodobieństwie. Tokeny są następnie filtrowane na podstawie parametrutopP
, a ostateczny wybór tokena dokonywany jest przy pomocy próbkowania z użyciem temperatury.topP
: parametrtopP
zmienia sposób, w jaki model wybiera tokeny w celu wygenerowania odpowiedzi. Tokeny są wybierane od najbardziej do najmniej prawdopodobnego do momentu, aż suma ich prawdopodobieństw będzie równa wartościtopP
. Jeśli na przykład tokeny A, B i C mają prawdopodobieństwo 0,3, 0,2 i 0,1, a wartościątopP
jest 0,5, jako kolejny token model wybierze A lub B, używając temperatury i wykluczy C jako kandydata. Wartością domyślną parametrutopP
jest 0,95.stop_sequences
: ustaw sekwencję zatrzymania, aby zatrzymać generowanie treści przez model. Sekwencja zatrzymania może być dowolną sekwencją znaków. Unikaj sekwencji znaków, które mogą pojawić się w wygenerowanych treściach.
Typy promptów
W zależności od poziomu zawartych w nich informacji kontekstowych prompty dzielimy na 3 typy.
Prompty „zero-shot”
Te prompty nie zawierają przykładów, które model ma powielać. Prompty „zero-shot” pokazują, czy model jest w stanie wykonać prompt bez dodatkowych przykładów czy informacji. Oznacza to, że model musi bazować na swojej dotychczasowej wiedzy, aby wygenerować wiarygodną odpowiedź.
Oto kilka typowych wzorców promptów bez wstępnego uczenia:
- Instruction-content
<Overall instruction>
<Content to operate on>
Na przykład
Summarize the following into two sentences at the third-grade level:
Hummingbirds are the smallest birds in the world, and they are also one of the
most fascinating. They are found in North and South America, and they are known
for their long, thin beaks and their ability to fly at high speeds.
Hummingbirds are made up of three main parts: the head, the body, and the tail.
The head is small and round, and it contains the eyes, the beak, and the brain.
The body is long and slender, and it contains the wings, the legs, and the
heart. The tail is long and forked, and it helps the hummingbird to balance
while it is flying.
Hummingbirds are also known for their coloration. They come in a variety of
colors, including green, blue, red, and purple. Some hummingbirds are even able
to change their color!
Hummingbirds are very active creatures. They spend most of their time flying,
and they are also very good at hovering. Hummingbirds need to eat a lot of food
in order to maintain their energy, and they often visit flowers to drink nectar.
Hummingbirds are amazing creatures. They are small, but they are also very
powerful. They are beautiful, and they are very important to the ecosystem.
- Instruction-content-instruction
<Overall instruction or context setting>
<Content to operate on>
<Final instruction>
Na przykład
Here is some text I'd like you to summarize:
Hummingbirds are the smallest birds in the world, and they are also one of the
most fascinating. They are found in North and South America, and they are known
for their long, thin beaks and their ability to fly at high speeds. Hummingbirds
are made up of three main parts: the head, the body, and the tail. The head is
small and round, and it contains the eyes, the beak, and the brain. The body is
long and slender, and it contains the wings, the legs, and the heart. The tail
is long and forked, and it helps the hummingbird to balance while it is flying.
Hummingbirds are also known for their coloration. They come in a variety of
colors, including green, blue, red, and purple. Some hummingbirds are even able
to change their color! Hummingbirds are very active creatures. They spend most
of their time flying, and they are also very good at hovering. Hummingbirds need
to eat a lot of food in order to maintain their energy, and they often visit
flowers to drink nectar. Hummingbirds are amazing creatures. They are small, but
they are also very powerful. They are beautiful, and they are very important to
the ecosystem.
Summarize it in two sentences at the third-grade reading level.
- Kontynuacja. Czasami model może kontynuować tekst bez żadnych instrukcji. Oto przykład promptu bez uczenia zero-shot, w którym model ma kontynuować podany tekst:
Once upon a time, there was a little sparrow building a nest in a farmer's
barn. This sparrow
Używaj promptów zero-shot do generowania kreatywnych formatów tekstowych, takich jak wiersze, kod, skrypty, utwory muzyczne, e-maile czy listy.
Prompty jednoetapowe
Te prompty dostarczają modelowi pojedynczego przykładu, który można powielać i wykorzystywać do kontynuowania wzoru. Dzięki temu model może generować przewidywalne odpowiedzi.
Możesz na przykład wygenerować pary produktów takie jak:
Food: Apple
Pairs with: Cheese
Food: Pear
Pairs with:
Prompty na kilka rzutów
Te prompty dostarczają modelowi wiele przykładów do powielenia. Korzystaj z promptów typu few-shot do wykonywania skomplikowanych zadań, takich jak syntetyzowanie danych na podstawie wzoru.
Przykładowy prompt może brzmieć w ten sposób:
Generate a grocery shopping list for a week for one person. Use the JSON format
given below.
{"item": "eggs", "quantity": "6"}
{"item": "bread", "quantity": "one loaf"}
Modele generatywne
Celem tej sekcji jest udzielenie odpowiedzi na pytanie: Czy odpowiedzi modeli generatywnych są losowe, czy deterministyczne?
Krótka odpowiedź: tak na oba pytania. Gdy poprosisz o model generatywny, odpowiedź tekstowa będzie generowana w 2 etapach. Na pierwszym etapie model generatywny przetwarza prompt wejściowy i generuje rozkład prawdopodobieństwa na możliwe tokeny (słowa), które prawdopodobnie pojawią się w przyszłości. Jeśli na przykład podasz tekst wejściowy „Pies przeskoczył przez…”, model generatywny wygeneruje tablicę prawdopodobnych kolejnych słów:
[("fence", 0.77), ("ledge", 0.12), ("blanket", 0.03), ...]
Ten proces jest deterministyczny. Generatywny model będzie generować tę samą dystrybucję za każdym razem, gdy otrzyma ten sam tekst promptu.
Na drugim etapie model generatywny zamienia te rozkłady na rzeczywiste odpowiedzi tekstowe za pomocą jednej z kilku strategii dekodowania. Prosta strategia dekodowania może wybierać najbardziej prawdopodobny token na każdym kroku czasowym. Taki proces byłby zawsze deterministyczny. Możesz też wygenerować odpowiedź, stosując losowy dobór próby z rozkładu zwróconego przez model. Ten proces byłby losowy. Ustawienie temperatury pozwala kontrolować stopień losowości dozwolonej w tym procesie dekodowania. Temperatura 0 oznacza, że wybierane są tylko najbardziej prawdopodobne tokeny, a losowość nie jest uwzględniana. Z kolei wysoka temperatura powoduje, że model wybiera tokeny w większym stopniu losowo, co prowadzi do bardziej nieoczekiwanych i zaskakujacych odpowiedzi.
Więcej informacji
- Teraz, gdy masz już większą wiedzę na temat promptów i modeli generatywnych, spróbuj napisać własne prompty za pomocą Google AI Studio.
- Aby dowiedzieć się więcej o sprawdzonych metodach tworzenia promptów, zapoznaj się z wytycznymi dotyczącymi promptów.