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.
W tej lekcji zajmiemy się pierwszym elementem logiki naszego avatara, jakim
jest zapisywanie informacji w naszej bazie danych.
Konkretnie będzie nam zależało tutaj na tym, aby nowe wpisy w Airtable nie były
dodawane ręcznie, tylko pojawiały się w nim automatycznie.
Tak jak już wspomniałem, z naszym avatarem
będziemy komunikować się wyłącznie za pomocą tego jednego scenariusza.
W związku z tym rozszczepie sobie tutaj scenariusz i zrobię tak,
że dodam tutaj filtr klikając w tym
miejscu, a następnie wpisując tutaj zmienną type.
Dokładnie w taki sposób, a następnie
zamknę nawiasy i sprawdzę czy jest ustawiona na save.
Jeżeli tak, to oznacza, że chcemy zapisać informację.
W przypadku tej drugiej ścieżki.
Również sprawdzę czy zmienna type jest
tutaj obecna, a dodatkowo czy nie jest ustawiona na save.
W ten sposób nasz scenariusz zadziała tak, że jeżeli prześlemy tutaj jakieś
informacje, a wraz z nimi właściwość type ustawioną na save, to zostanie
zrealizowana ścieżka, którą mamy tutaj, a w przeciwnym razie pójdziemy górą.
Na ten moment interesuje nas tutaj dokładnie to, aby utworzyć nowy wpis.
Wybieram więc właściwą bazę danych, a następnie tabelę.
I tutaj utworzymy sobie nowy rekord, wewnątrz którego do kolumny Content
zapiszemy wartość zmiennej o nazwie Content.
I tutaj również zamykam nawiasy,
a następnie ustawimy właściwość sync na true.
W rezultacie, jeżeli te zmiany zostaną
teraz zapisane, to efekt powinien być taki, że nasz scenariusz zostanie wykonany
ponownie, ale tym razem pójdzie już główną ścieżką.
Za chwilę w stanie się dla Ciebie jasne,
dlaczego akurat w ten sposób to projektujemy.
Musimy tylko wrócić do Airtable, a następnie przejść do zakładki automatyzacja.
Tutaj musimy zedytować nasz kod.
I tutaj dokładnie pomiędzy apostrofem
musimy wkleić adres naszego Webhooka, a następnie ?Type=remember
czyli ustawiamy
odpowiedni typ i zaraz potem znajduje się znak &, a następnie RecordID=
identyfikator naszego rekordu.
Po zapisaniu zmian możemy zaktualizować
naszą automatyzację i upewnić się tutaj, że jest aktywowana.
Od tego momentu za każdym razem, gdy
pojawią się tutaj nowe dane, w przypadku których kolumna sync będzie zaznaczona,
to trafią one do widoku sync i uruchomią logikę naszego avatara, która zostanie
poprowadzona tak, aby dane zostały zapisane w Pinecone, a następnie Airtable
zostało poinformowane o tym, że synchronizacja przebiegła poprawnie.
Aby to teraz przetestować, przejdziemy do aplikacji Postman.
Jest to bezpłatna aplikacja, którą możesz
wykorzystać do nawiązania połączenia z naszym scenariuszem.
Konkretnie po zalogowaniu na moje konto przejdę do mojego workspace, a następnie
wewnątrz niego utworzę tutaj nowe zapytanie.
W tym momencie mam już jedno.
W związku z tym wybieram tutaj metodę HTTP
ustawioną na post, a następnie wklejam adres do naszego scenariusza.
Zanim jeszcze będziemy go uruchamiać,
wrócę do scenariusza, a następnie upewnię się tutaj, że rekord ID istnieje.
Bądź też ewentualnie ustawię tutaj od razu
zmienną content, która również musi być obecna.
Zwróć jednak uwagę, że skorzystałem tutaj z przycisku OR, czyli lub i dzięki temu
wykonanie scenariusza będzie kontynuowane tylko wtedy, jeżeli na Webbhook zostanie
przesłana zmienna Record ID bądź też zmienna content.
Teraz mogę zapisać zmiany oraz sam
scenariusz i przełączyć go w nasłuchiwania.
Jeżeli teraz wyślemy zapytanie, przy czym
wcześniej musimy ustawić jego ciało na obiekt JSON o następującej strukturze
Właściwość Content będzie ustawiona na 3 kropki, a właściwość Type na save.
W ten sposób scenariusz został wykonany za
pierwszym razem i nowy rekord został utworzony.
A dodatkowo, jeżeli zajrzymy teraz w
historię wykonania tego scenariusza, to zostanie on wykonany ponownie w tym, przy
czym w tym przypadku została zrealizowana górna ścieżka.
Wygląda więc na to, że wszystko jest tutaj w porządku.
Poza tym bardzo istotna informacja polega tutaj na tym, że nic nie stoi teraz na
przeszkodzie, aby nie tylko dodawać w ten sposób rekordy, ale także je aktualizować.
Oczywiście w tym momencie one się jeszcze nie synchronizują.
Natomiast jeżeli zmieniłbym tutaj ich
zawartość, a następnie znowu wcisnął tutaj teb checkbox, to oczywiście scenariusz
ponownie zostanie wykonany, a informacje, a informacje synchronizowane z Pinecone.
Jeżeli chodzi o tę lekcję, na ten moment
byłoby to już na tyle, więc dziękuję za uwagę i zapraszam do kolejnej.