Postęp technologiczny w ostatnich latach jest niezwykle szybki. W przypadku AI możemy powiedzieć nawet o wzroście wykładniczym ponieważ od premiery ChatGPT doszło do prawdziwego przewrotu na rynku a wzrost wykorzystania sztucznej inteligencji dla każdego możliwego zadania jest wręcz nieunikniony.
Musimy jednak pamiętać, że kluczową częścią sztucznej inteligencji są informacje potrzebne do opracowywania i trenowania tych modeli. Ten podstawowy cykl dostarczania informacji do modelu językowego i sposób ich podawania to tzw. Prompt Engineering.
Czym jest Prompt Engineering?
Prompt Engineering (inżyniera podpowiedzi) to proces skutecznego tworzenia podpowiedzi, które umożliwiają modelom sztucznej inteligencji generowanie odpowiedzi na podstawie danych wejściowych. Prompt Engineering zasadniczo oznacza inteligentne pisanie podpowiedzi dla tekstowych zadań sztucznej inteligencji a dokładniej zadań przetwarzania języka naturalnego (NLP – Natural Language Processing). W przypadku takich zadań tekstowych podpowiedzi te pomagają użytkownikowi i modelowi wygenerować określone dane wyjściowe w formie podpowiedzi, stąd nazwa Prompt Engineering.
Jak już doskonale pamiętacie z poprzednich wpisów będziemy posługiwać się słowem z języka angielskiego, tj. prompt ale jako polskie odpowiedniki będą się pojawiały słowa: podpowiedzi, polecenia oraz komendy wydawane do naszego chatbota.
Czym jest Prompt?
Prompts to krótkie fragmenty tekstu, które służą do przekazania kontekstu i wskazówek dla modeli uczenia maszynowego. Mówiąc o konkretnych zadaniach tekstowych, podpowiedzi te są przydatne w generowaniu odpowiednich wyników, które są jak najbardziej zbliżone do oczekiwanych wyników. Dokładnie rzecz ujmując, polecenia te pomagają w generowaniu dokładnych odpowiedzi poprzez:
przekazanie ogólnych wskazówek dla modelu;
upewnienie się, że dodane informacje nie są zbyt rozległe, ponieważ może to zmylić model przy generowaniu odpowiedzi;
wyjaśnienie intencji i celu użytkownika aby model mógł generować treści tylko w odpowiednim kontekście.
Jak pamiętacie z poprzednich wpisów powyższe punkty są niezwykle istotne a nabierają bardziej na znaczeniu, kiedy poruszamy zagadnienia programistyczne. Czemu o tym mówię? Ponieważ zanim przejdziemy do konkretnych zastosować w kolejnych wpisach przejdziemy przez sporo przydatnych (z naszej perspektywy) poleceń w celu optymalizacji naszej pracy.
Prompt Engineering: czemu to takie ważne?
bardziej szczegółowe dane wejściowe przekazane jako podpowiedzi pomagają w lepszej interpretacji wymagań dotyczących zadania;
konkretne polecenia ze szczegółowym wyjaśnieniem wymagań oznaczają, że dane wyjściowe są bardziej zgodne z pożądanymi;
lepsze wyniki dla zadań NLP dzięki podpowiedziom oznaczają również lepiej wytrenowany model dla przyszłych zadań.
Prompt Engineering: zastosowania
Obecnie najbardziej krytycznym obszarem w którym generowanie podpowiedzi jest najczęściej wykorzystywane jest modelowanie oparte na tekście: NLP. Jak już wcześniej wspomniałem, istnieje wiele sposobów w jakie ‘inżynieria podpowiedzi’ może dodać więcej kontekstu, znaczenia a także trafności do podpowiedzi a tym samym generować lepsze wyniki. Pamiętacie z poprzedniego cyklu, kiedy chcieliśmy zaplanować wieczór kawalerski? Dostaliśmy więcej niż chcieliśmy a połączenie dodatkowych aktywności było naprawdę trafne.
Spójrzmy jednak szerszym kątem (nie tylko z perspektywy programowania) gdzie obecnie Prompt Engineering jest niezwykle istotny:
Tłumaczenia językowe: - jest to proces tłumaczenia fragmentów tekstu z jednego języka na inny przy wykorzystaniu odpowiednich modeli językowych. Odpowiednie przygotowanie podpowiedzi z informacjami takimi jak wymagany skrypt, dialekt i inne cechy tekstu źródłowego i docelowego mogą pomóc w uzyskaniu lepszej odpowiedzi z modelu.
Chatboty: - boty odpowiadające na pytania to obecnie jedna z najpopularniejszych kategorii NLP. Są one używane na wielu witrynach internetowych z których najpopularniejsze to sklepy. Podpowiedzi na których szkolony jest model AI mogą w dużej mierze wpływać na rodzaj odpowiedzi generowanej przez bota. Tutaj tak wielokrotnie wspominałem w poprzednich wpisach, że niezwykle istotne jest dodanie kontekstu i informacji o wynikach jakie chcemy uzyskać – pozwoli to na dokładniejszą informację zwrotną.
Generowanie tekstu: - takie zadanie ma wiele zastosowań a zatem, ponownie, kluczowe staje się zrozumienie intencji użytkownika. Wygenerowany tekst, jego ton, słownictwo czy sam kształt tekstu będzie zależał od intencji/wymagań użytkownika. Pamiętajcie teksty generowane z perspektywy Yoda’y i ich charakterystyczny szyk przestawny?
Generowanie obrazu: - OpenAI udostępniło niedawno nową wersję swojego generatora obrazów DALL-E i dodało tę technologię do ChatGPT - jeszcze nie miałem styczności z tym narzędziem więc na ten moment nie wypowiadam się o skuteczności ale…patrząc na obrazy dostępne w Internecie – są one niesamowicie szczegółowe.
Prompt Engineering: kluczowe punkty do zapamiętania
Cały proces przygotowania podpowiedzi, zebrania danych, przygotowania kontekstu, określenia roli, zdefiniowania wymagań jest kluczowy z perspektywy oczekiwanego rezultatu. Musi być jednak precyzyjnie zrównoważony, żeby nie zmylić modelu o czym pisaniem już wcześniej. Efektywność modelu, tj. wygenerowanej odpowiedzi, zależy od prawidłowego przygotowania podpowiedzi. Powstaje zatem pytanie: w jaki sposób możemy się upewnić, że przygotowane przez nas polecenie jest odpowiednie dla danego zadania?
Poniżej kilka kluczowych punktów o których należy pamiętać tworząc prompt dla generatywnej sztucznej inteligencji:
Zaczynamy od określenia zadania i celu: - modele sztucznej inteligencji często działają wyłącznie w oparciu o dane wprowadzane przez użytkownika. Surowe dane wejściowe używane do trenowania modelu, tekst lub rozmowa, którą przeprowadzamy z modelem językowym, wpływają na to jak model odpowie na następne zapytanie. W związku z powyższym musimy pamiętać, aby podczas interakcji z modelem językowym, cel rozmowy i cele, które mają zostać osiągnięte za jej pośrednictwem były absolutnie jasne jeszcze przed jej rozpoczęciem.
Identyfikacja i wykorzystanie odpowiednich i konkretnych danych: - tak samo jak niezwykle istotny jest prompt i jego jasno opisany cel, tak dane dostarczone do trenowania modelu powinny być istotne i potrzebne. Powinniśmy upewnić się, że w dostarczanych danych nie ma nieistotnych lub niepotrzebnych danych. Pamiętacie o technice: few-shots? Jeżeli nie to odsyłam do tego wpisu: ChatGPT - technika zero/few shots
Wykorzystanie słów kluczowych: - odpowiednie słowa kluczowe mają ogromny wpływ na rodzaj generowanej odpowiedzi. Słowo kluczowe użyte poprawnie we właściwym miejscu może prowadzić do zupełnie innych wyników. Co mam na myśli? Pracując nad problemem matematycznym, jeżeli ktoś zapyta model: "Czym jest samochód?" ale nie zamieści słowa kluczowego ‘matematyka’ może się okazać, że sztuczna inteligencja rozważy słowo samochód w kontekście samochodu a nie np. problemu związanego z aerodynamiką danego auta. Musimy pamiętać, żeby umieszczać słowa kluczowe wszędzie tam gdzie jest to konieczne!
Prompt musi być prosty i jasny: - w trakcie tworzenia powinniśmy używać prostego języka unikając skomplikowanych struktur zdań. Ułatwi to modelowi generowanie dokładnych wyników a użytkownikom zrozumienie celu przygotowanego polecenia.
Testowanie i udoskonalanie komendy: - ostatni krok to użycie różnych przypadków testowych w celu oceny poprawności (zgodnej z oczekiwaną) wygenerowanych podpowiedzi i wprowadzenie niezbędnych poprawek w celu udoskonalenia podpowiedzi.
Powyższe praktyki pozwolą nam na tworzenie podpowiedzi, które są dostosowane do konkretnych celów i generują dokładne i użyteczne wyniki.
Prompt Engineering: wady i zalety
Zalety:
Zwiększona dokładność: - odpowiedni prompt oznacza lepszą pracę modelu AI co z kolei przekłada się dokładniejszą odpowiedź dostosowaną do danej sytuacji.
Lepsze odczucia użytkownika: - lepsza jakość odpowiedzi przekłada się na zadowolenie osoby pytającej, która może łatwo uzyskać odpowiedź na zadanie pytanie lub szybciej rozwiązać swój problem.
Opłacalność: - liczba iteracji potrzebnych do uzyskania jednej dokładnej i satysfakcjonującej odpowiedzi zmniejsza się dzięki jednemu konkretnemu i starannie zaprojektowanemu poleceniu.
Główną wadą Prompt Engineering jest trudność w określeniu szczegółowości. Mam tutaj na myśli właściwą równowagę między szczegółowością a ogólnością polecenia. Zbyt duża szczegółowość może ograniczyć zakres generowanych odpowiedzi a zbyt mała może generować nieistotne odpowiedzi. Rozwiązaniem tego problemu będzie przejście przez kolejne wpisy, w których sprawdzimy najlepsze (znalezione w Internecie) prompty napisane z perspektywy programistycznej. Sprawdzimy zagadnienia i odpowiedzi z różnych zakresów, tj. backend, frontend oraz .NET. Mając widzę w tych tematach będziemy w stanie zweryfikować odpowiedzi, ale i formę poleceń oceniając, gdzie leży złoty środek.
Prompt Engineering: przyszłość
‘Inżyniera podpowiedzi’ jest niezwykle szybko rozwijającą się w ostatnim czasie technologią i ma bardzo duży wpływ na istotną cześć zadań związanych z AI oraz NLP. Jak ta sytuacja będzie kształtowała się w przyszłości? Spójrzmy na możliwe scenariusze:
AI i NLP: - wraz z rozwojem tych technologii można się spodziewać znacznej poprawny dokładności i skuteczności podpowiedzi. Dzięki bardziej wyrafinowanym algorytmom i modelom uczenia maszynowego, podpowiedzi będą się rozwijać i będą bardziej dostosowane do konkretnych przypadków użycia.
Integracja z innymi technologiami: - jest bardzo prawdopodobne, że dojdzie do coraz większej integracji z innymi technologiami takimi jak wirtualni asystenci, urządzenia głosowe oraz inne chatboty. Integracja ta umożliwi bardziej płynną i skuteczną interakcje pomiędzy różnymi technologiami co wpłynie na poprawę ogólnych wrażeń użytkowników.
Zwiększona automatyzacja i wydajność: - możemy spodziewać się zwiększonego poziomu automatyzacji i wydajności różnych procesów. Ma to oczywiście związek z rozwojem poleceń – ich bardziej zaawansowana forma wpłynie na opracowanie lepszych podpowiedzi a to wpłynie na osiągane wyniki.
Podsumowanie
Wystarczy już teorii – ta jednak jest potrzebna, jeżeli chcemy dobrze poznać zagadnienie i lepiej wykorzystać to co daje nam generatywna sztuczna inteligencja. W kolejnym wpisie przejdziemy przez różne pojęcia związane z wytwarzaniem oprogramowania. Zobaczymy jak ChatGPT poradzi sobie z tworzeniem kodu, szukaniem błędów, wyjaśnianiem różnych zagadnień czy tworzeniem scenariuszy do testów oraz wyborem najlepszej technologii do konkretnego zastosowania.