Z promptami jest jak z tekstami sprzedażowymi: działają tylko te naprawdę dobre. A jak je tworzyć? Pokażę Ci parę sprawdzonych metod, które zebrałem i wypracowałem przez ostatnie miesiące. Będą też przykłady dot. SEO!
Spis treści:
- Słowo na początek
- Zacznij od polecenia
- Zadbaj o konkretność
- Nie zakładaj, wyjaśniaj
- Dodaj kontekst do promptu
- Podawaj przykłady
- Stosuj cudzysłowy
- Złożone zadanie? Rozpisz proces
- Sprawdzaj logikę swoich instrukcji
- Zastosuj odgrywanie ról
- Zaprojektuj odpowiedź AI
- Nie wszystko musi być rozwiązane jednym promptem
- Bonus: repozytorium z promptami
Zobacz też:
Słowo na początek
Przez ostatnie pół roku pracowałem między innymi nad chatbotem Top Online, który będzie pomagał SEO Samodzielnym w pozycjonowaniu. Miałem więc okazję opracować trochę złożonych promptów, a ten tekst to nic innego jak zebrane przeze mnie w tym czasie notatki. Tylko solidnie przefiltrowane i pokazane w dużo przyjaźniejszej formie :)
Przykłady na których wyjaśniam poszczególne tipy opracowałem z wykorzystaniem modeli OpenAI: GPT-3.5-turbo (ChatGPT) oraz GPT-4.
Same założenia/metody, które tu pokazuję, sprawdzą się jednak we wszystkich modelach językowych zoptymalizowanych pod konwersację. Również w tych open-source, jak GPT4All, Alpaca 7B czy GPT-J.
Uprzedzając pytania: o chatbocie napiszę następnym razem, gdy zakończymy wewnętrzne testy i udostępnimy go pierwszym użytkownikom. Jeszcze nie można z niego korzystać, ale zmieni się to lada moment.
Zacznij od polecenia
Zacznę od początku, czyli od pierwszego słowa w prompcie, jako które najlepiej sprawdza się czasownik w trybie rozkazującym.
Pierwsze słowo ma często spory wpływ na efekty generowane przez model. Z kolei zarówno ChatGPT, jak i GPT-4 czy inne modele językowe zwykle najlepiej interpretują instrukcje zaczynające się od wyraźnych poleceń.
Jeśli to tylko możliwe prompt zaczynam więc od czasownika w trybie rozkazującym.
Zamiast „Czy mógłbyś napisać” piszę „Napisz”. Zamiast „Chciałbym, żebyś wymyślił” piszę „wymyśl”. A zamiast „Historia powinna mieć takie i takie cechy, stwórz zarys scenariusza”, piszę „Stwórz zarys scenariusza, historia powinna [...]”.
Proste, a bardzo skuteczne (i często wcale nie takie oczywiste).
Żeby pokazać to na przykładzie, poprosiłem GPT o krótki opis produktu w którym każde słowo ma zaczynać się literą s lub głoską „sz”. Wiem, głupie, ale dobrze zilustruje zasadę :)
Różnicę widać nawet bez czytania. Przy drugiej próbie dostałem o wiele lepszy efekt, choć zmieniłem tylko „chciałbym, żebyś napisał” na „napisz”.
Zadbaj o konkretność
Jeśli chcemy uzyskać powtarzalny efekt, to najlepszym promptem będzie prompt konkretny. Mający minimum słów, a maksimum treści i co najważniejsze: maksymalnie jednoznaczny.
Wiadomo – łatwiej powiedzieć niż zrobić – dlatego gdy potrzebuję napisać takie polecenie, zawsze zadaję sobie pytanie: „co konkretnie chce zobaczyć w odpowiedzi”. Wypisuję to, a potem redaguję polecenie tak, by pozwalało odpowiedzieć tylko i wyłącznie w taki sposób.
Powiedzmy, że mam napisać o tym, co wpływa na zmiany pozycji strony w Google i chce dostać od AI jakiś poglądowy wykaz tematów, które powinienem zresearchować do tekstu.
Co konkretnie chcę wtedy zobaczyć w odpowiedzi?
Czynniki wpływające na pozycję strony.
Zamiast: „Dlaczego tekst opublikowany na stronie internetowej zmienia jej pozycję na liście wyników w Google?”
Pytam więc choćby: „Jakie czynniki mogą wpływać na to, że tekst opublikowany na stronie internetowej zmienia jej pozycję na liście wyników Google?”
Dzięki temu model wie, że ma wypisać konkretne czynniki, a nie tłumaczyć mi poszczególne procesy.
Do ideału oczywiście jeszcze daleko, bo oba polecenia są tylko przykładowe i nadal zbyt ogólne, ale jak widać: trochę konkretniejsze wyrażenie pytania dało już o wiele lepszą odpowiedź.
Zapamiętaj
Jeśli chce sprawdzić, czy prompt trzyma się tej zasady – czytam go i sprawdzam, czy sam potrafię na niego jednoznacznie odpowiedzieć.
Nie zakładaj, wyjaśniaj
Tak samo jak my w SEO nie zawsze dobrze rozczytujemy intencje użytkownika stojące za frazami, tak też GPT nie zawsze poprawnie rozczyta nasze intencje stojące za poleceniami. Stąd konstruując prompt staram się aktywnie unikać założeń i domysłów.
Najczęściej szkodliwe założenia wkradają się do promptów, gdy mimowolnie zapominam, że AI może czegoś nie wiedzieć.
Za przykład niech posłuży pytanie:
„Czy ukryte kategorie zaliczają się do praktyk Black Hat SEO?” – jego konstrukcja zakłada, że ChatGPT (czy inne AI) wie dokładnie, czym są ukryte kategorie oraz Black Hat SEO.
W praktyce widać jednak wyraźnie, że czat po prostu nie wie za bardzo, o czym mowa. W efekcie unika odpowiedzi, ale zakłada, że metoda ze słowem „ukryte” w nazwie polega na ukrywaniu czegoś przed użytkownikiem.
W takiej sytuacji powinienem zapytać, doprecyzowując od razu, co mam na myśli. Choćby tak:
„Czy ukryte kategorie rozumiane jako kategorie sklepu internetowego, które nie są widoczne w głównym menu, ale są dostępne poprzez linkowanie wewnętrzne zaliczają się do praktyk Black Hat SEO, czyli praktyk uznawanych za manipulację wynikami wyszukiwania i karanych przez Google?”
Jest różnica? Jest. I to znacząca.
Zapamiętaj
Potrzebuję konkretnej informacji = nie zakładam, że ChatGPT ma wiedzę potrzebną do jej udzielenia.
Tak na marginesie: pół biedy, jeśli znamy dobrze temat, bo wprowadzimy korektę. Pomyśl o tym, jak bardzo można się naciąć na takie przypadki gdy nie wiemy jaka powinna być odpowiedź albo nie znamy za bardzo tematu, o którym mowa.
Dodaj kontekst do promptu
Skoro już jestem w temacie, to błędnych założeń część dalsza. Tym razem kwestia kontekstu, który osadza sens promptu.
Warto wiedzieć
Do przetwarzania i generowania tekstu przez modele językowe najlepiej podchodzić z nastawieniem, że AI nie wie totalnie niczego (że wszystko musimy mu pokazać i wyjaśnić).
Ujmę to tak: AI nie wie kim jesteś i dlaczego zadajesz mu takie polecenie. W wielu przypadkach z kolei znacznie lepsze efekty uzyskasz dostarczając ten kontekst razem z promptem.
Przykładowy krótki prompt bez kontekstu:
Wymyśl 5 tematów na artykuły blogowe o meblach ogrodowych, wypisz same tematy, maksymalnie po jednym zdaniu.
I ten sam prompt, ale z dokładnym osadzeniem w kontekście:
Wymyśl 5 tematów na artykuły blogowe o meblach ogrodowych, wypisz same tematy, maksymalnie po jednym zdaniu. Prowadzę sklep internetowy z wyposażeniem ogrodów i tarasów. Mój asortyment to stylowe produkty wyższej jakości, skierowane do zamożnego Klienta. Czytelnicy mojego bloga to głównie kobiety w wieku 30-40 lat, chcące zaaranżować ogród/taras lub szukające produktów pasujących do gotowej już aranżacji.
Efekty mówią same za siebie:
Podawaj przykłady
O podawaniu przykładów w promptach wspominałem już w tekście na o tym co ChatGPT może zrobić dla copywritera (link w spisie treści), więc nie będę się tutaj bardzo powtarzać.
W skrócie: chodzi o to, że często zamiast tłumaczenia krok po kroku o wiele łatwiej jest pokazać. Na przykład wkleić gotowy artykuł o nietypowej formie na koniec polecenia, zamiast opisywać żmudnie, jak ma wyglądać wygenerowany tekst.
Jak z uczeniem. Teoria jest ważna, ale czasem o wiele szybciej jest po prostu pokazać coś komuś w praktyce.
Warto wiedzieć
Przykłady warto dodawać także do szczegółowych instrukcji – wtedy modele językowe lepiej rozumieją, o co konkretnie nam chodzi.
Stosuj cudzysłowy
Cudzysłów w prompcie działa trochę jak pogrubienie słowa w tekście SEO. Zaznacza, że jest ono istotniejsze niż reszta. Nadaje frazie wyższą wagę.
Cudzysłowem mogę położyć nacisk na najważniejsze fragmenty swoich poleceń. Pozwala to poprawiać złożone prompty i ratować sytuacje, w których model zaczyna „gubić wątek” naszego polecenia w którejś już iteracji (po wielu poprawkach i ulepszeniach). Miej tu jednak proszę na uwadze, że nie jest to metoda w żaden sposób oficjalna. Po prostu zdarza się, że to tak działa i potrafi uratować sytuację. I tak też to stosuję, prawie wyłącznie awaryjnie.
Zdarzyło mi się na przykład zaznaczać w taki sposób w promptach fragmenty takie jak „w formie listy”, czy „w dwóch zdaniach”, gdy model usilnie ignorował takie instrukcje.
Złożone zadanie? Rozpisz proces
Jeśli chcesz zlecić AI coś złożonego, to napisz instrukcję, która odzwierciedli proces wykonania tego czegoś.
Mówiąc prościej, jeśli model nie radzi sobie za dobrze z zadaniem, to tworzę szczegółową listę czynności, jakie należy przeprowadzić krok po kroku, by je wykonać.
Przykładowo:
Zamiast:
Wygeneruj listę 30 słów kluczowych dla wpisu blogowego na temat tworzenia skutecznych promptów dla modeli językowych.
Lepiej zadziała:
Wygeneruj listę 30 słów kluczowych dla wpisu blogowego na temat tworzenia skutecznych promptów dla modeli językowych.
1. Wypisz, co może chcieć zrobić użytkownik, dla którego przydatny będzie wpis blogowy o zadanym temacie.
2. Przekształć czynności te (intencje użytkowników) we frazy kluczowe, jakie może wpisywać użytkownik.
3. Usuń z listy frazy różniące się wyłącznie szykiem słów.
4. Jeśli lista jest krótsza niż 30 fraz, ponów punkty 1-3 unikając duplikacji czynności (intencji).
5. Jeśli lista jest pełna, zwróć odpowiedź, wypisując tylko słowa kluczowe.
Screenshoty odpowiedzi były trochę za długie, żeby je tu wstawiać, ale jeśli chcesz, sprawdź efekty samodzielnie :)
Sprawdzaj logikę swoich instrukcji
Niby prosta i oczywista sprawa, ale z doświadczenia wiem, że im dłuższy prompt, tym łatwiej coś w nim sknocić.
Pisząc bardziej złożone polecenie sprawdzam więc zdanie po zdaniu, czy polecenie które napisałem ma sens i nie zawiera wewnętrznych sprzeczności lub niejasności.
Zapamiętaj
Jeśli GPT nie radzi sobie z Twoją instrukcją, spróbuj wykonać ją samodzielnie – podążając za nią krok po kroku.
Przykład z życia? Zdarzyło mi się na przykład prosić ChatGPT, by najpierw usuwał cały HTML z podanego mu kodu, a potem, w kolejnych krokach, podstawiał za wskazane znaczniki HTML inne obiekty.
Prompt miał naście podpunktów i uwierz mi, trochę zeszło, zanim wykryłem co w nim nie gra i dlaczego Chat „nie ogarnia podmieniania HTML-a”.
Sporo frustracji później zorientowałem się, że AI robiło wszystko wzorowo. Po prostu przez moją nielogiczną instrukcję na etapie podstawiania wskaźników nie było już czego podmieniać :P
Zastosuj odgrywanie ról
Chcesz stworzyć prompt do jednego, powtarzalnego zadania i zależy Ci na tym, by był on stabilny (bo np. chcesz wdrożyć go jako automatyzację z API)? Rozwiązaniem może być tzw. prompt Act As, czyli narzucenie AI przyjęcia konkretnej roli.
Taka metoda świetnie sprawdza się jako wiadomość systemowa przy korzystaniu z GPT-3.5-turbo/GPT-4. SystemMessage modyfikować możemy jednak tylko w zapytaniach wysyłanych do API lub w zakładce Playground na platformie OpenAI. Nie znajdziesz go w apce na stronie chatu.
Przykład promptu Act As:
Jesteś słownikiem wyrazów bliskoznacznych. Twoja rola polega na podawaniu listy 20 najbliższych znaczeniowo synonimów do słowa lub wyrażenia otrzymanego w poleceniu. Podawane synonimy grupuj w osobne listy według kontekstów i znaczeń – jeśli dla danego słowa występuje więcej niż jedno.
Po wpisaniu go w danej konwersacji możemy podawać już tylko pojedyncze słowa i otrzymywać w odpowiedzi listy synonimów.
Więcej ciekawych przykładów takich promptów znajdziesz na końcu tekstu.
Zaprojektuj odpowiedź AI
Projektowanie odpowiedzi AI jest bardzo podobne do zawierania przykładów w poleceniach. Różnica polega na tym, że zamiast pokazać przykład, wskazuję parametry. Dodaje na koniec instrukcję na temat tego, jakiej odpowiedzi się spodziewam.
Na przykład, że odpowiedź powinna mieć X znaków, być w formie tabeli, być w czasie przeszłym, składać się z listy pojedynczych zdań, unikać przypuszczeń, skupiać się na faktach…
Odpowiedź powinna mieścić się w zakresie 800-1000 znaków ze spacjami. Powinna zawierać podział na akapity oraz min. 3 śródnagłówki. Pogrub w tekście słowa wskazane jako frazy kluczowe.
Warto wiedzieć
Jeśli mimo podania wytycznych co do odpowiedzi efekt dalej nie jest idealny, to spróbuj dodać też przykład (i wicewersa: jeśli nie wystarcza przykład, dodaj wytyczne).
Nie wszystko musi być rozwiązane jednym promptem
Na koniec mam jeszcze tip, który parę miesięcy temu oszczędziłby mi mnóstwo czasu.
Bardzo złożone czynności zwykle bardzo trudno jest załatwić jednym promptem… ale wcale nie trzeba wszystkiego pakować w jedno polecenie.
Gdy dostaniesz niezłą odpowiedź, która np. potrzebuje tylko zmienić parę detali, ale nie udaje Ci się tego osiągnąć za jednym zamachem, to zmień je w kolejnym poleceniu.
Nic nie stoi przecież na przeszkodzie zapisania sobie zamiast jednego to serii promptów.
Jeśli pracujesz z API to jedno zadanie rozwiązywane poprzez serię kilku poleceń można nawet całkiem łatwo zautomatyzować. Co więcej, potrzebny do tego kod może napisać Ci nawet ChatGPT :)
Bonus: repozytorium z promptami
Na koniec jako bonus zostawiam Ci ciekawe repozytorium pełne zaawansowanych promptów Act as. W sam raz do czerpania inspiracji albo po prostu pobawienia się AI.
Znajdziesz je tutaj: https://github.com/f/awesome-chatgpt-prompts.
Wszystkie prompty są po angielsku, ale język czatu możesz łatwo zmienić. Wystarczy, że wkleisz na koniec skopiowanego stąd polecenia zdanie w stylu:
Conversation takes place only in Polish language.
Podsumowując w paru punktach
- Prompty dobrze jest zaczynać czasownikiem w trybie rozkazującym, np. „napisz”, „wymyśl”, „wypisz”.
- Warto też postarać się, żeby nie zawierały one sformułowań pozwalających na różne interpretacje.
- Oraz nie zakładały w swojej treści, że model językowy rozumie i zna definicję jakichś specjalistycznych pojęć.
- Brak wiedzy lub problemy z wykonaniem niektórych poleceń rozwiązać można poprzez zamieszczenie w nich kontekstu.
- Na podobnej zasadzie stosować można też przykłady, po prostu pokazując AI, jakich zachowań oczekujemy.
- Dodatkowa sztuczka pozwalająca wzmocnić znaczenie danego słowa w poleceniu: wzięcie go w cudzysłów.
- Jeśli piszemy wieloetapową instrukcję, to wykonajmy ją też samodzielnie, żeby sprawdzić logikę poleceń.
- Gdy prompt ma pozwalać na wykonywanie złożonej czynności, najlepiej zacząć tworzenie go od rozpisania procesu.
- Często w osiągnięciu dobrego efektu pomaga też rozbicie złożonego polecenia na listę punktów krok po kroku.
- Jeśli zadanie normalnie wymaga pracy np. tłumacza, to zamiast wyjaśniania krok po kroku metody lepiej jest zacząć prompt poleceniem odgrywania roli tłumacza.
- Nie zapominajmy też, że polecenie kierowane do AI może zawierać dowolne instrukcje na temat tego jak ma wyglądać odpowiedź.
- No i na koniec: nie każde zadanie musi być wykonane w jednym prompcie – zastosowanie kilku etapów też jest okej!