Podstawy
2 godz. 43 min · OpenAI · Full-stack i Programowanie
Adam GospodarczykChociaż dokładne działanie dużych modeli językowych nie jest zrozumiałe nawet dla twórców tych narzędzi, to i tak istnieje szereg dobrze znanych faktów. Zapoznanie się z nimi pozwoli Ci lepiej wyobrazić sobie sposób działania LLM bez konieczności wchodzenia w głębokie detale techniczne. To z kolei w sposób bezpośredni przełoży się na skuteczność projektowanych promptów. W pierwszej części kursu skupiamy na wysokopoziomowym spojrzeniu na modele firmy OpenAI, uwzględniając ich aktualne możliwości oraz aktualne ograniczenia.
Instrukcje kierowane do modeli takich jak GPT-3.5-Turbo czy GPT-4, mogą realizować najróżniejsze zadania. Pomimo tego ich ogólna struktura uwzględnia pewne schematy z których możemy korzystać. W zależności od celu jaki chcemy osiągnąć, możemy uwzględniać lub pomijać poszczególne elementy promptu. I chociaż wspomniane modele są w stanie świetnie radzić sobie z nieustrukturyzowanymi danymi, to w przypadku projektowania instrukcji, bardzo istotne jest zachowanie precyzji oraz wyraźne oddzielenie jej fragmentów. Na praktycznych przykładach zobaczysz, jak łatwo niewłaściwe formatowanie może negatywnie wpływać na generowaną odpowiedź. Poznasz także ogólne zasady, które pomogą Ci kształtować instrukcje w sposób, który zwiększy prawdopodobieństwo wygenerowania odpowiedzi, której oczekujesz.
Zero-shot, Few-shot, Chain of Thought czy Tree of Thoughts — to techniki projektowania promptów, dzięki którym znacząco zwiększysz ich skuteczność. I choć każda z nich zwykle opiera się o bardzo proste koncepcje, tak ich praktyczne wykorzystanie nie zawsze jest oczywiste. W tym kursie nie tylko poznasz przykłady ich zastosowania, ale także będziesz w stanie połączyć je z ogólnymi zasadami tworzenia promptów, co jeszcze bardziej ulepszy tworzone przez Ciebie instrukcje. Ciekawostka: Technika Tree of Thoughts w niektórych przypadkach zwiększa skuteczność GPT-4 z 4% do nawet 74%.
Ostatnia część kursu uwzględnia kilka przykładów, których celem jest pokazanie Ci szerokiego kontekstu w którym umiejętność projektowania promptów, umożliwia wyjście daleko poza zwykłe odpowiadanie na pytania i generowanie tekstu. Zobaczysz, jak tworzone przez Ciebie instrukcje mogą zostać wykorzystane w aplikacjach webowych oraz systemach uwzględniających realizujących złożone zadania z pomocą dużych modeli językowych. Mowa tutaj o pamięci długoterminowej, embeddingu danych oraz nawet autonomicznych agentach, zdolnych do posługiwania się narzędziami. Pamiętaj jednak, że wszystkie z wymienionych tematów zostały omówione tylko z szerokiej perspektywy, ponieważ ich faktyczna implementacja, wykracza poza zakres tego kursu.
Ten kurs został zaprojektowany z myślą o osobach chcących rozpocząć naukę projektowania promptów dla dużych modeli językowych, takich jak GPT-3.5-Turbo czy GPT-4. Wcześniejsze doświadczenie oraz zaawansowane umiejętności techniczne czy programistyczne nie są wymagane. Wiedza z tego kursu da Ci podstawy do dalszej nauki projektowania promptów oraz pozwoli Ci uzyskać szerszą perspektywę na temat roli promptów przy codziennej pracy z narzędziami takimi jak ChatGPT czy integracjami dużych modeli językowych z aplikacjami.
W tej lekcji chciałbym pokazać Ci jeszcze jedną koncepcję określaną jako Agent.
Opisuje ona system, który jest w stanie
nie tylko jak Chatbot odpowiadać na pytania, ale także posługiwać się różnego
rodzaju narzędziami oraz nawet funkcjonować w pełni autonomicznie.
Oznacza to mniej więcej tyle, że w
momencie, gdy Agent otrzyma pytanie bądź opis zadania, które ma zrealizować, to
zamiast podobnie jak Chatbot przechodzić od razu do udzielenia odpowiedzi,
ewentualnie gromadząc wcześniej kontekst, to w pierwszej kolejności np.
identyfikuje nasze zapytanie.
Następnie na podstawie tej identyfikacji
dobiera sobie odpowiednie narzędzia, czyli np.
odpowiednie API, jakiś zewnętrznych usług,
dostęp do internetu, a nawet w grę wchodzi korzystanie z innych modeli AI.
W ten sposób agent jest w stanie bardzo rozszerzyć swoje możliwości, które w tym
przypadku teoretycznie nadal opierają się o generowanie tekstu, ale w rzeczywistości
mogą wchodzić nawet w interakcję ze światem fizycznym.
Mam tutaj na myśli np.
podłączenie do urządzeń bądź zlecanie np.
rezerwacji hotelu.
No i teraz oczywiście oprócz narzędzi taki agent ma do dyspozycji także swoją pamięć
długoterminową, wewnątrz której mogą być przechowywane jego wspomnienia, a także
nawet różnego rodzaju przemyślenia, które są pomocne albo do realizacji
konkretnego zadania, albo w ogóle autonomicznego funkcjonowania.
Poza tym wszystkim naturalnie Agent może także prowadzić konwersację
a zatem mówimy tutaj o znacznym rozszerzaniu możliwości Chatbota.
Jeżeli chodzi o samą odpowiedź, ona
również może uwzględniać wiele różnych elementów.
Pierwszym z nich jest wspomniane
podejmowanie akcji, drugą posługiwanie się różnym kontekstem, który
może uwzględniać zarówno bazę danych, którą mamy do dyspozycji, ale także możemy
tutaj mówić o zewnętrznych źródłach pochodzących z Internetu.
No i ostatecznie taki Agent może nie tylko odpisywać nam na pytania, ale także mówić
z pomocą narzędzi zamieniających tekst na dźwięk.
I teraz być może przychodzi Ci do głowy, że koncepcja, którą tutaj zarysowałem, to
jedynie jakiś pomysł czy scenariusz filmu Sci-Fi.
W rzeczywistości jednak jest to bardzo uproszczony schemat tego, jak funkcjonuje
mój asystent AI, czyli mowa tutaj o Alice.
Zanim jednak przejdziemy dalej, chciałbym podkreślić tutaj rolę promptów.
Po pierwsze, gdy nasz Agent otrzyma jakieś
polecenie bądź pytanie, to w pierwszej kolejności najprawdopodobniej musi je w
jakiś sposób sklasyfikować, wzbogacić bądź zrobić z nim wszystko to, co jest
potrzebne, po to, aby skutecznie zrealizować opisane tutaj zadanie.
W zależności od przypadku może być to sięgnięcie po swoją długoterminową pamięć,
aby wygenerować na jej podstawie odpowiedź,
innym razem może być to także odwołanie do
naszej bieżącej konwersacji, a jeszcze innym dobór odpowiedniego narzędzia.
Tutaj również mówimy o prompcie, który na np.
bierze pod uwagę dostępne narzędzia oraz
zapytanie użytkownika, które służy mu do tego, aby wybrać odpowiednie narzędzie
albo zestaw narzędzi do zrealizowania zadania.
Później na każdym z tych etapów również w grę wchodzą prompty
ze względu na to, że te zewnętrzne narzędzia będą dostarczały dane, które
agent musi odpowiednio przetworzyć, aby następnie móc skorzystać z kolejnego
narzędzia lub ewentualnie po prostu wygenerować odpowiedź.
Zatem w takich systemach rola promptów
odgrywa tutaj szczególnie istotną rolę, ponieważ od ich skuteczności zależy to,
jak skutecznie będzie sobie radził Agent z realizowaniem zleconych mu zadań.
I teraz proponuję, abyśmy zobaczyli jak coś takiego działa w praktyce.
Mam tutaj aplikację Alice, z pomocą której jestem w stanie rozmawiać z moim Agentem.
Zatem po pierwsze w momencie gdy po prostu się przywitam, to jak widzisz Alice jest w
pewnym sensie świadoma tego z kim aktualnie rozmawia.
Następnie w mojej kolejnej wiadomości
mówię jej o tym, że muszę zakończyć nagrania do mojego kursu o Prompt Engineeringu.
Zadanie to musi zostać zakończone przed
godziną 16 i proszę o dodanie go do mojej listy.
Następnie Alice potwierdza dopisanie tego zadania do mojej listy.
Zatem jeżeli teraz przejdziemy do NOTION,
wewnątrz którego przechowuję swoje zadania, to zobaczymy, że rzeczywiście
zostało tutaj wpisane zadanie, które dodatkowo zostało przypisane do projektu
Eduweb, co wcale nie jest takie oczywiste, ponieważ prowadzę kilka projektów, a poza
tym też został poprawnie określony jego deadline.
Oznacza to dokładnie tyle, że Alice
poprawnie zidentyfikowała, o co mi tutaj chodzi.
Przeszukała swoją listę umiejętności,
czyli listę dostępnych narzędzi, którymi może się posługiwać i w tym przypadku są
to moje automatyzacje, a następnie wykorzystała swoją wiedzę na temat ich
uruchomienia po to, aby rzeczywiście wykonać to zadanie dla mnie.
Samo zadanie, gdy zostało zakończone,
posłużyło do tego, aby wygenerować odpowiedź potwierdzającą jego realizację.
W tym przypadku mówimy więc o interakcji z zewnętrznymi usługami.
Jeżeli jednak uruchomię sobie Spotify, a
następnie poproszę Alice o włączenie konkretnej muzyki, to jak widać po chwili
rzeczywiście zostało włączone dokładnie to, o co prosiłem.
Ponownie mamy tutaj do czynienia z podobnym mechanizmem jak przed chwilą,
aczkolwiek w tym przypadku nie chodziło wyłącznie o połączenie z API Spotify, ale
także bezpośrednio z moim komputerem, na którym została wykonana akcja w postaci
wykonania pewnego rodzaju skryptu, który faktycznie uruchomił muzykę.
Oznacza to, że Alice jako Agent jest w stanie wchodzić w interakcje zarówno z
zewnętrznymi usługami, jak i nawet urządzeniami.
Co więcej, interfejs, w którym aktualnie się znajdujemy, czyli Chat, nie jest
jedynym sposobem na to, aby Alice mogła wykonywać jakieś zadania
z pomocą automatyzacji oraz różnego rodzaju skryptów
możliwe jest również to, aby Alice
realizowała różne zadania bez mojego udziału.
No i tak właśnie wygląda koncepcja Agenta,
którą ja osobiście do dużego stopnia przełożyłem już na praktykę.
Natomiast biorąc pod uwagę tutaj kontekst naszego kursu, chciałem tylko zaznaczyć,
że projektowanie promptów to nie tylko sposób na to, aby na pytanie
uzyskiwać odpowiednią odpowiedź, ale także jest to ścieżka do budowania
zaawansowanych aplikacji, które są w stanie realizować niesamowite rzeczy.
Mam nadzieję, że ten przykład, choć ogólny, zadziałał przynajmniej jako
inspiracja do tego, aby zachęcić Cię do dalszej nauki projektowania promptów.
Teraz dzięki za uwagę i do usłyszenia następnym razem.