Komendy, polecenia, prompty… no to w końcu jak?

Sugerując się dopiero budowaną, polską, nomenklaturą, według Wikipedii, powinniśmy nazywać nasze polecenia wydawane botowi (w tym wypadku ChatGPT) „podpowiedziami”. Budowa złożonych i coraz bardziej wydajnych poleceń, tudzież podpowiedzi, to „inżynieria podpowiedzi”. Cytując Wiki:

Inżynieria podpowiedzi polega na procesie optymalizacji, opracowywania i dostosowywania pytań, poleceń lub sugestii wejściowych (zwanych także „promptami”) w celu uzyskania bardziej precyzyjnych, użytecznych i zgodnych z oczekiwaniami wyników.

Reasumując, w przypadku wydawania poleceń naszym chatbotom, powinniśmy mówić o budowaniu podpowiedzi, lecz używanie zamiennie słów: komendy, polecenia, propmpty, nie powinno być wielkim grzechem 😉 Inne stosowane określenia to np. „inżynieria zapytań” czy „inżynieria bodźców”. Dobrze jednak wiedzieć, że nagły wzrost zainteresowania tematami AI i LLM, szczególnie u osób mniej lub nietechnicznych, przyczynił się do boomu w temacie, a same narzędzia są dużo prostsze w obsłudze, tak że mogą być programowalne zwykłym, codziennym językiem. Ale i to trzeba robić poprawnie, by uzyskać satysfakcjonujący wynik! A ja w tym pomogę 🙂

Podstawy podpowiadania („promptingu”)

Podstawowe komendy

Prostymi poleceniami można wiele osiągnąć, ale jakość wyników zależy od tego, jak wiele informacji podajesz i jak dobrze są one skonstruowane.

Komenda może zawierać informacje takie jak konkretna instrukcja lub pytanie, które przekazujesz modelowi, a także inne szczegóły, takie jak kontekst, dane wejściowe lub przykłady. Możesz użyć tych elementów, aby lepiej poinstruować model i w rezultacie uzyskać lepsze wyniki.

Model zachowa się zupełnie różnie dla choćby prostego polecenia „Trawa jest”, gdy zostawisz je w takiej formie, lub gdy dodatkowo, każesz mu „dokończyć zdanie”. W pierwszym wypadku, możesz spodziewać się nawet barwnego opisu dotyczącego definicji trawy w kontekście biologiczno-chemicznym, na 20 zdań, a w drugim, chatbot może uraczyć Cię choćby jednym słowem – „zielona”. Poeksperymentuj, żeby wyczuć jak zachowuje się model gdy jest prowadzony na tak niskim poziomie, a gdy zostawiasz mu „wolną rękę”.

Takie podejście, polegające na projektowaniu optymalnych podpowiedzi w celu uzyskania konkretnej, zadowalającej nas odpowiedzi, określane jest właśnie mianem inżynierii podpowiedzi 😉

Dzisiejsze modele LLM są w stanie wykonać wszystkie rodzaje zaawansowanych zadań, od streszczania tekstu, przez wyprowadzanie dowodów matematycznych, po generowanie kodu. Wraz z nadchodzącymi premierami od OpenAI, jak obsługa wtyczek czy dostęp bota do Internetu, jego możliwości tylko rosną i to od nas zależy, czy będziemy potrafili je „okiełznać”…

Techniki prowadzenia rozmowy z AI

Może nie zdawałeś sobie z tego sprawy, ale zależnie w jaki sposób prowadzisz rozmowy z naszym ChatemGPT, możesz już na starcie stosować jedną z kilku podstawowych metod rozmowy z LLM.

Jeśli Twoja rozmowa z botem wygląda mniej więcej tak:

Pytanie?
Odpowiedź!

Pytanie?
Odpowiedź

Pytanie’
Odpowiedź! (…)

… stosujesz metodę nazywaną „zero-shot prompting”, tzn. oczekujesz od modelu konkretnej odpowiedzi, bez podania kontekstu, czy też przykładu. Jak sobie poradzi bot? To zależy. Zależy od złożoności pytań, dziedziny, okresu czasu, popularności tematu i wielu innych zmiennych. Jak wypada tutaj ChatGPT? Myślę, że bez problemu poradzi sobie z takim quizem z zakresu podstaw geografii, czy też historii modeli GPT, może jednak mieć problemy w przypadku pytań dotyczących historii Twojej najbliższej okolicy, lub zaawansowanych założeń fizyki kwantowej.

Tutaj niestety wielu początkujących użytkowników zraża się do ChatGPT. Spodziewają się, że ChatGPT zastąpi im wyszukiwarkę, ale nie rozumieją czym jest LLM i do czego służy. Ciekawe, z drugiej strony, jak Google wypada przy pisaniu piosenek o sporcie i miłości? ChatGPT wypada całkiem nieźle 😉

Drugą techniką dla początkujących jest „few-shot prompting”. To technika, w której model otrzymuje niewielką liczbę przykładów, zwykle od dwóch do pięciu, w celu szybkiego poznania kontekstu w jakim użytkownik zadaje botowi pytania lub zadania. Oczywistą różnicą względem 0shot jest większa ilość danych potrzebna modelowi, a co za tym idzie, (niewiele) większa czasochłonność dla użytkownika.

Zwróć uwagę, że rozmowa z botem nie musi wcale wyglądać jak quiz. Pamiętaj, że najlepsze wyniki w pracy z chatbotem osiągniesz, jeśli uznasz go za godnego sobie rozmówcę. „Z szacunku” do rozmówcy zwracaj mu uwagę i chwal, jeśli wykona zadanie dobrze, poprawiaj go lub delikatnie krytykuj, jeśli popełni błąd. Dla modelu to cenna informacja zwrotna i możesz spodziewać się innych wyników, jeśli będzie wiedział, że poprzedni nie był zadowalający.

Jeśli jesteś ciekaw kolejnych różnic między opisanymi technikami, lub np. metodą „one-shot prompting”.

Składowe podpowiedzi

W miarę jak będziesz nabierał doświadczenia w pisaniu trafnych podpowiedzi (spersonalizowanych komend i poleceń), zauważysz, że pewnie składowe zaczynają się powtarzać i tworzyć schemat.

Im więcej z poniższych składowych zawiera Twoja podpowiedź, tym większa szansa na otrzymanie oczekiwanego wyniku:

  • Instrukcja – konkretne zadanie lub instrukcja, którą chcesz, aby model wykonał,
  • Kontekst – informacje zewnętrzne lub dodatkowy kontekst, który może ukierunkować model,
  • Dane wejściowe – dane wejściowe do przetworzenia lub pytanie, na które chcemy znaleźć odpowiedź,
  • Format danych wyjściowych – format w jakim oczekujemy otrzymać odpowiedź.

Nie staraj się jednak, na siłę, zawsze podawać wszystkich tych składowych. Wszystko zależy od tego czego potrzebujesz i jak złożone jest zadanie, do którego zatrudniasz swojego asystenta. Ćwicz, próbuj, testuj. Z czasem zaczniesz zauważać schematy i tworzyć własne formatki do regularnie wykonywanych zadań.

Na „ściądze” poniżej znajdziesz chyba najpopularniejszy schemat podpowiedzi. Zwróć uwagę, że w tym wypadku częścią kontekstu Twojego polecenia będzie rola, w jaką będzie wcielał się chatbot

Wskazówki dla początkujących

Oto kilka wskazówek, które warto mieć na uwadze podczas projektowania swoich podpowiedzi:

1) Zacznij prosto

Nie bez powodu najnowsze dziecko OpenAI ma w nazwie „Chat”. Nasz aysten, chatbot, skuteczniej pomoże Ci, jeśli potraktujesz go jak partnera do rozmowy. Pozwól popełniać mu błędy, ale merytorycznie punktuj i nakierowuj w oczekiwaną stronę. Pamiętaj, że zarówno budowanie podpowiedzi, jak i uzyskiwanie finalnej odpowiedzi, jest procesem iteracyjnym, który wymaga wielu eksperymentów, aby uzyskać optymalne rezultaty.

Jak wykorzystać podejście iteracyjne? Jeśli znasz metodyki zwinne w projektowaniu i wytwarzaniu oprogramowania, będzie Ci trochę łatwiej… Możesz zacząć od prostych podpowiedzi i w kolejnych odpowiedziach dodawać więcej elementów i kontekstu; jeśli uważasz, że dostarczyłeś już mu wszystko, nawet odpowiedzi tak/nie, lub nieprawda są dla naszego chatbota bardzo cenne. Czytając tę serię, szybko zwrócisz uwagę, że prostota i zwięzłość często dają lepsze wyniki lub „bombardowanie” modelu toną informacji od początku (wyjątkiem są informacje systemowe w Playground).

Kiedy masz duże zadanie, które wymaga wielu różnych podzadań, możesz spróbować rozbić je na prostsze zadania i budować „je „duży obraz” w miarę uzyskiwania oczekiwanych wyników na wcześniejsze zapytania. Pozwala to uniknąć dodawania zbyt dużej złożoności do procesu projektowania podpowiedzi na początku.

2) Instrukcja

Jak w innych sytuacjach w życiu, wiele zależy od pierwszego wrażenia 😉 ChatGPT za każdym razem zachowa się inaczej, zależnie od tego jak zaczniesz zdanie – „Napisz”, „Sklasyfikuj”, „Podsumuj”, „Przetłumacz”, „Zamów” itp. Zastanów się czego oczekujesz i w prostych, żołnierskich wręcz słowach rozpocznij rozmowę.

3) Precyzja

Bądź bardzo konkretny w kwestii instrukcji i zadania, które chcesz, aby model wykonał. Im bardziej opisowa i szczegółowa będzie podpowiedź, tym lepsze będą wyniki. Jest to szczególnie ważne, gdy masz bardzo precyzyjne oczekiwania co do finalnego wyniku. Nie ma jednak jednego klucza do uzyskania jednej odpowiedzi. Zamiast tego, skup się na poprawnym formacie i bardzo dokładnym, opisowym poleceniu (podpowiedzi). Po wielu próbach, spokojnie mogę potwierdzić, że dostarczanie naszemu pomocnikowi przykładów w podpowiedzi jest bardzo skuteczne, a określenie na początku finalnego formatu, oszczędzi nam dalszej pracy przy obróbce danych wyjściowych.

Podczas projektowania podpowiedzi należy jednak pamiętać o długości komendy, ponieważ istnieją ograniczenia dotyczące tego, jak długa może być nasza wiadomość. Zastanów się, jak bardzo szczegółowy i konkretny powinieneś być. Włączenie zbyt wielu niepotrzebnych szczegółów, lub zbyt kwiecistego języka, nie jest koniecznie dobrym podejściem. Potwierdziliśmy, że szczegóły powinny być istotne i przyczyniać się do wykonania zadania w oczekiwany sposób, ale czy nasz bot musi wszystko wiedzieć od początku? I-TE-RA-CJA… 😉

3) Unikaj niedokładności

Ten punkt mocno nawiązuje do poprzedniego. Jeśli nie masz czasu lub chęci by tworzyć precyzyjne podpowiedzi, musisz pogodzić się z tym, że chat ma prawo inaczej zinterpretować bardzo ogólne polecenie, niż Ty. Prosząc go o wyjaśnienie pojęcia, czy zadowoli Cię jednozdaniowa odpowiedź? A może 50 zdań, będzie tym razem zbyt długie? Czy pomysły na słowa kluczowe dla Twojej strony, mają być wielopoziomowe i pokazywać strukturę powiązań i uzupełnień między sobą, czy wystarczy Ci prosta lista z elementami po przecinku? Podsumowanie interesującego artykułu z CNN może być po angielsku, czy może wolisz przekład na polski?

Zostaw botowi trochę „przestrzeni”, ale zastanów się, czy mimo wszystko nie masz choć podstawowych wymagań co do jego podejścia do rozwiązania problemu.

4) Rób – nie rób

W skrócie: wydawaj botowi pozytywne polecenia, zamiast dostarczać mu listę metod, których ma nie próbować.

LLM są wytrenowane, by opracowywać najskuteczniejsze rozwiązania, często od tych, o których pomyśleliby ludzie. Z tego powodu, ponownie podkreślam, pozwól modelowi robić swoje. Kieruj go, jeśli masz konkretne oczekiwania, ale kto wie – może jeśli zabronisz mu jakiegoś podejścia, zablokujesz sobie drogę do najlepszego możliwego rozwiązania Twojego zapytania?

Oczywiście w miarę zdobywania doświadczenia zauważysz pewne schematy, które np. kiepsko działają na naszym języku. Wtedy odcięcie od pewnych zachowań jest jak najbardziej uzasadnione. Do tego jednak potrzebujesz sporo praktyki… Podtrzymuję jednak tezę z tego akapitu: czatbot wykonuje swoją pracę skuteczniej jeśli otwierasz mu kolejne drzwi, a nie zamykasz te wg Ciebie trefne.

Podsumowanie

W tym artkule poznaliśmy koncept inżynierii podpowiedzi i odpowiedzieliśmy na fundamentalne pytanie jak pisać komendy dla ChatGPT. Omówiliśmy podstawowe parametry decydujące o tym jak wygląda odpowiedź chatbota, oraz czym różni się Playground od ChatGPT. Zrozumieliśmy podstawowe techniki prowadzenia rozmowy z asystentem oraz z czego powinna składać się idealna podpowiedź. Na koniec, przedstawiłem kluczowe podpowiedzi, które pomogą początkującym stworzyć swoje pierwsze polecenia.