Połącz możliwości GPT-3 i automatyzacji
2 godz. 3 min · OpenAI · Biznes i Automatyzacje
Adam GospodarczykWykorzystanie API OpenAI nie różni się w żaden sposób od innych. Przesyłając dane i parametry na wskazany endpoint, otrzymujemy odpowiedź wygenerowaną przez model (np. text-da-vinci-003). Na tym jednak możliwości tego API się nie kończą. Przykładem z którego skorzystamy będzie zamiana danych na tzw. embedding (listę wektorów). Dane zapisane w takiej formie będą wstępem do "pamięci" bota i tym samym pierwszym punktem procesu nauki.
Prompt Engineering to rozwijająca się dziedzina skupiona na projektowaniu systemów zdolnych do skutecznego reagowania na dane wprowadzone przez użytkownika. W przypadku tworzonego przez nas bota, wykorzystamy pewne elementy tego procesu aby zmodyfikować jego domyślne zachowanie oraz przygotowywanie odpowiedzi na podstawie wyłącznie wcześniejszych danych. W przypadku braku wiedzy na jakiś temat, bot będzie nas o tym informował w sarkastyczny sposób lub nawet zwracał informacje w podanym przez nas formacie.
Wysyłając zapytanie do API OpenAI, jesteśmy ograniczeni liczbą znaków. Tworząc bota chcemy uwzględniać nie tylko to aby odpowiadał na nasze pytania ale także uwzględniał przekazany przez nas kontekst, składający się z informacji jakie zapamiętał bot. Problemem jest tutaj wybór, które dane ma brać pod uwagę. Rozwiązanie po które sięgamy w tym warsztacie polega na wykorzystaniu bazy wektorowej (Pinecone), która pełni rolę pamięci oraz bazy lokalnej w której przechowujemy faktyczne informacje. Ich połączenie pozwala na wybranie najbardziej istotnych danych i uwzględnienie ich w kontekście, który pozwoli GPT-3 przygotować odpowiedź.
Temat wykorzystania AI w codziennym życiu nie jest nowy ale nabrał szczególnego znaczenia po pojawieniu się ChatGPT. Wiele osób zaczęło wykorzystywać AI do rozwiązywania bieżących problemów i ułatwiania sobie różnych zadań. W tym warsztacie znajdziesz kilka inspiracji, które nakierują Cię na to jak możesz rozwijać swojego własnego, inteligentnego i uczącego się bota.
Warsztat został stworzony z myślą o osobach znających JavaScript i Node.js, chcących postawić pierwsze kroki w praktycznym wykorzystaniu GPT-3 oraz API OpenAI. Poza znajomością JavaScript, konieczne będzie minimum doświadczenia w pracy z API oraz bazami danych (SQL). Po ukończeniu tego warsztatu zyskasz ogólne zrozumienie możliwości GPT-3 oraz umiejętności umożliwiające wpływ na jego zachowanie i generowane odpowiedzi.
GPT to niezwykłe narzędzie posiada niestety jedną dość istotną wadę nie jest
aktualnie podłączony do internetu i też nie posiada informacji np.
na mój temat i mojego kontekstu.
Przykładowo jeżeli zapytam kim jest Overment to oczywiście nie otrzymam
poprawnej odpowiedzi, albo może bardziej odpowiedź będzie
poprawna, ale nie będzie wyjaśniała tego o co pytam.
Jest to naturalnie doskonale zrozumiałe i
nie mogę oczekiwać tego, żeby chat GPT wiedział kim jest Overment.
Jeżeli jednak powiem mu, że jest to mój pseudonim i poproszę, aby zapamiętał go na
potrzeby tej rozmowy, to oczywiście to zrobi.
Jeżeli teraz przy kontynuowaniu rozmowy
odwołam się do mojego pseudonimu, to chat GPT będzie wiedział, że chodzi o Overment, ale
nadal w tym przypadku nie będzie w stanie odpowiedzieć na moje pytanie.
Pomimo tego, że na tym etapie posiada już
minimum informacji na temat mojego pseudonimu, niestety nie będą one
zapamiętane na potrzeby kolejnych konwersacji.
Jednocześnie ja też nie mam możliwości podawać mu wszystkich informacji na mój
temat za każdym razem, gdy zaczynam rozmowę.
Z tego powodu zadałem sobie pytanie, czy możliwe byłoby wykorzystanie mechanizmu,
który pozwoliłby na generowanie odpowiedzi z wykorzystaniem moich danych.
Okazało się, że firma OpenAI, która
stworzyła chat GPT, udostępnia także dostęp do API GPT3.
Dodatkowo mamy tutaj do dyspozycji model DaVinci, który oferuje największe
możliwości, ale też jest znacznie droższy w porównaniu do pozostałych modeli.
W związku z tym, że na tym etapie wiedziałem już w jaki sposób połączyć się
z GPT3, musiałem znaleźć sposób na przechowywanie informacji na mój temat.
Przygotowałem tutaj taką bazę na potrzeby
naszego projektu, w której zapisałem kilka informacji na
temat prowadzonych przeze mnie projektów oraz bezpośrednio o mnie.
Jeżeli teraz przejdziemy sobie do edytora
tekstowego, to mogę tutaj skontaktować się z M.O.N.D.A.Y, czyli moim avatarem.
Mogę przykładowo zapytać się o to, czy wie kim jestem.
Wystarczy uruchomić jedno makro i chwilę poczekać.
Oczywiście powinienem otrzymać informację oraz np.
w jakie projekty jestem zaangażowany.
No i otrzymaliśmy potwierdzenie, że tak
M.O.N.D.A.Y wie kim jestem, jak się nazywam i że overment to także mój projekt, gdzie opublikowałem
kilkaset filmów z programowania, głównie z JavaScriptu.
Zna także moje wartości i zainteresowania oraz też jest świadoma tego, w jakie
projekty jestem zaangażowany oraz o czym one są.
Co więcej, jeżeli teraz
poproszę ją o to, aby podsumowała naszą bieżącą rozmowę, to otrzymamy
potwierdzenie, że ma dostęp nie tylko do moich wcześniejszych notatek, ale także
jest powiedzmy świadoma tego, o czym w danej chwili mówimy.
Ponownie muszę tutaj poczekać kilka sekund na odpowiedź.
No i mamy tutaj potwierdzenie praktycznie całej poprzedniej wiadomości.
Wygląda na to, że rzeczywiście mamy tutaj do czynienia z avatarem, który ma dostęp
do moich notatek oraz bieżącej konwersacji.
No i teraz potwierdzenie tego wszystkiego.
Mamy w airtable informacje na temat moich projektów znajdują się dokładnie tutaj
i mamy też tutaj notatki na temat moich zainteresowań oraz wartości.
Poza tym na podstawie tych notatek zostały
wygenerowane również tagi, które wykorzystywane są po to, aby zwiększyć
prawdopodobieństwo odnalezienia właściwej informacji w całej bazie.
O tym, dlaczego tak robię oraz w zasadzie
jak to się dzieje, będziemy sobie jeszcze rozmawiać.
W drugiej tabeli znajduje się historia naszych najnowszych rozmów.
Mamy tutaj założony filtr, który
uwzględnia tylko najnowsze wiadomości z ostatnich kilku minut, a w kolumnach
uwzględnione jest pytanie, odpowiedź oraz podsumowanie.
Dokładnie te dane, które tutaj mamy
obsługiwane są przez taką oto automatyzację.
Wszystko to, co do tej pory pokazałem realizowane jest tylko w tym miejscu.
Nie licząc oczywiście makra, które
uruchomiłem, aby skontaktować się z avatarem.
Skoro już o makrach mowa, to szczegółowo
będziemy sobie przez nie jeszcze przechodzić.
Natomiast jak widzisz mam tutaj trzy akcje.
Pierwsza przypisana jest do skrótu
klawiszowego i umożliwia zapamiętywanie informacji.
Po jej uruchomieniu pojawia się okno z
prośbą o potwierdzenie tego, czy rzeczywiście chcę zapisać tą informację,
a zaraz potem przesyłana jest ona tutaj do airtable.
Następnie mamy dwa makra, które odpowiadają za konwersację.
Pierwsze z nich dotyczy konwersacji
pisanej, czyli dokładnie taką, jaką widzieliśmy przed chwilą.
Z kolei drugie dotyczy rozmowy głosowej.
I co ciekawe, wtedy nie tylko mogę
dyktować moje wiadomości, ale także odpowiada mi swoim głosem.
Później pokażę Ci także, jak to się dzieje w języku polskim i dlaczego z różnych
powodów lepiej jest wykorzystywać język angielski.
Zatem ogólna koncepcja avatara polega na tym, że jesteśmy w stanie przekazywać mu
różnego rodzaju informacje, a następnie pytać je o nie.
Co więcej, w interakcje z M.O.N.D.A.Y mogę wchodzić
nie tylko poprzez makra, ale także bezpośrednio na Slack'u.
Ja akurat wykorzystuję aplikację
texts do tego, aby połączyć się z moim
workspace'm, w którym znajduje się M.O.N.D.A.Y i jest w stanie nie tylko odpowiadać na moje
pytania, ale także sama przesyłać mi różnego rodzaju informacje.
Musisz jednak wiedzieć, że avatary AI
na ten moment posiadają różnego rodzaju ograniczenia.
Jednym z nich jest fakt, że są w stanie bardzo łatwo pomylić różne fakty.
Przykładowo, jeżeli zapiszemy sobie notatki o dwóch różnych osobach, które mają tak samo
na imię, no to jeżeli jakimś sposobem wyraźnie nie wskażemy, o którą osobę nam
chodzi, to avatar z dużym prawdopodobieństwem pomiesza te fakty.
I właśnie, aby przynajmniej w pewnym stopniu uchronić się przed takimi
sytuacjami, wykorzystuje system tagów, który generowany jest dla mnie
automatycznie, ale właśnie zwiększa szansę na to, że M.O.N.D.A.Y,
na podstawie dużej bazy, będzie w stanie wybrać tylko te informacje, które są
potrzebne do udzielenia odpowiedzi, a następnie ją zbuduje.
Kolejnym bardzo ważnym elementem w
kontekście budowania avatara jest projektowanie promtów, które będą
opisywały jego zachowanie oraz podejmowane działania.
Przykładowo nagrywając dosłownie tą lekcje
zauważyłem pewien mały problem, który nie dawał mi spokoju.
Przeszedłem zatem do playground udostępnionego przez OpenAI i wkleiłem zawartość, promta
które normalnie mam zapisany bezpośrednio w make.
Jak widzisz, ten akurat odpowiada za podsumowanie dialogów.
Problem polegał na tym, że M.O.N.D.A.Y myliła
to, co powiedziała sama, a to co powiedziałem ja.
W związku z tym zmodyfikowałem ten prompt, aby bardzo precyzyjnie zaznaczała, które
słowa powiedział Overment, a co powiedziała M.O.N.D.A.Y.
Robiąc to, będzie w stanie bezbłędnie określić, o czym właśnie rozmawiamy.
I dokładnie taka modyfikacja naprawiła
problem dotyczący mylenia osoby, która wypowiedziała dane słowa.
Jeżeli nie znasz jeszcze tego narzędzia, bardzo zachęcam Cię do tego, aby obejrzeć
warsztat Grzegorza na temat wprowadzenia do OpenAI API oraz Playground.
Drugim źródłem, które naprawdę mogę Ci
polecić jest e-book, który możesz nabyć na stronie gptzautomatyzowanie.pl.
Oczywiście nie musisz tego robić,
natomiast możesz się nim zainteresować, aby poznać zaawansowane techniki budowania
promtów takich jak ten, który mamy tutaj.
Aczkolwiek muszę przyznać, że ten akurat jest niesamowicie prosty w porównaniu do
tego, co będziemy budować w kolejnych lekcjach.
Teraz dzięki za uwagę i do usłyszenia w kolejnej lekcji.