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.
Do tej pory jedynym sposobem na to, aby
skontaktować się z naszym avatarem było wykorzystanie aplikacji Postman.
Oczywiście na co dzień nie będziemy jej
wykorzystywać i w związku z tym wykorzystamy aplikację Shortcats
wewnątrz której utworzymy sobie nowy katalog i nowe makro.
To makro przygotujemy w sposób, który pozwoli nam na wykorzystywanie go nie
tylko na naszym komputerze, ale także iPhonie.
Na początek zacznę od ikon koloru oraz nazwy.
Następnie potrzebuję w jakiś sposób pobrać informacje. Do mojej dyspozycji
jest tutaj możliwość zapytania o dane pochodzące od użytkownika.
Ten skrót będzie odpowiadał za to, aby avatar zapisywał nasze szybkie notatki.
W związku z tym pytanie, które tutaj
zadamy, będzie dotyczyło tego, co chcemy, aby zostało zapamiętane.
Jako domyślną wartość dla tego pola ustawimy aktualną zawartość schowka.
Wystarczy dodać tutaj funkcję Get Clipboard, a następnie tutaj kliknąć prawym
przyciskiem myszy i dodać ją w tym miejscu.
Teraz kolejnym krokiem będzie wykorzystanie akcji Get Contents of URL.
Domyślnie adres URL ustawiany jest na Provided input.
Chcemy wyczyścić to pole klikając prawym przyciskiem myszy i wybierając clear.
W tym miejscu jako URL podajemy adres
naszego Webhooka i ustawiamy akcję na post i rozwijamy nagłówki.
Dodając tutaj Content type ustawiony na application/json.
Następnie, jak pamiętasz musimy podać tutaj pole type ustawione na save,
ponieważ w pierwszej kolejności chcemy dodać recordy do Airtable. Jako content
w tym miejscu podajemy oczywiście wartość,
która została zapisana w polu Provided input.
Na koniec możemy wyświetlić powiadomienie
informujące o tym, że dane zostały zapamiętane.
Spróbujemy więc teraz uruchomić nasz
scenariusz, a następnie uruchomić samo makro.
Przy pierwszym wywołaniu zostaniemy
poproszeni o zezwolenie na wysyłanie informacji na wskazany adres.
No i oczywiście sam scenariusz został tutaj wykonany.
Jeżeli zajrzymy sobie teraz do Airtable,
pojawił się tutaj nowy wpis zawierający wszystkie wymagane tagi.
No i też sam wynik został zsynchronizowane z Pinecone.
Jeżeli teraz zadamy pytanie o to, czy nasz
avatar wie gdzie mieszkam, to powinien odpowiedzieć, że mieszkam w Krakowie.
No i rzeczywiście wszystko działa tutaj poprawnie.
Oznacza to, że mogę przypisać sobie to
makro++ do menu udostępniania oraz do skrótu klawiszowego.
Ja akurat nie będę tego robił.
Natomiast w momencie gdy próbowałem
ustawić skrót, pojawiała się także opcja Services menu.
Zaznaczenie tego checkboxa dodało do naszej automatyzacji tzw.
shortcut input, czyli po prostu dane, które zostają przekazywane do naszego inputa.
Chodzi o to, że teoretycznie moglibyśmy uruchomić to makro na zaznaczonym tekście.
Na przykład dodamy tutaj jakiś losowy fakt o mnie.
Następnie wybiorę tutaj opcję Services i
na tej liście mam tutaj dostępne makro Avatar Quick Notes.
Jeżeli teraz bym je wykonał, to dokładnie
w tym miejscu zostanie przekazana wartość ustawiona na zaznaczony tekst.
Chciałbym mieć możliwość, aby po nią sięgać.
W związku z tym dodamy sobie tutaj następujący warunek.
Mianowicie od razu została tutaj przekazana wartość shortcut
input, w przypadku której dodamy warunek posiada jakąkolwiek wartość.
Jeżeli posiada, będziemy chcieli ją wykorzystać.
W pierwszej kolejności jednak przesunę
sobie tutaj te dwa bloki dokładnie w to miejsce.
Nasz scenariusz może teraz pójść dwiema ścieżkami albo zapisać informacje z shortcut
input, albo bezpośrednio z naszego schowka.
W związku z tym może jeszcze nawet zrobimy w ten sposób.
Czyli samo pytanie przeniosłem poza warunek.
Jeżeli teraz wykorzystam możliwość ustawienia zmiennej i w pierwszym
przypadku będzie to zmienna o nazwie content ustawiona na shortcut input.
Z kolei w drugim przypadku również będzie
to zmienna content, ale tym razem ustawiona na zawartość naszego schowka.
Zatem niezależnie od tego, którą ścieżką pójdzie nasze makro,
to i tak w obu przypadkach będziemy mieć dostęp do zmiennej o nazwie content.
W związku z tym zamieniam tutaj tekst
domyślny na content i spróbuję uruchomić makro na razie bezpośrednio.
W związku z tym powinna zostać wybrana
tutaj ścieżka dotycząca odczytania zawartości schowka.
W tym momencie trzeba podkreślić, że aplikacja shortcut nie działa idealnie, czasem na
wykonanie makra, szczególnie na etapie jego tworzenia.
Trzeba po prostu chwilę poczekać.
Ostatecznie po uruchomieniu tego makra
rzeczywiście otrzymaliśmy tekst, który właśnie znajduje się w moim schowku.
Jeżeli jednak uruchomimy to makro z pomocą
menu serwisowego, to w pytaniu nie pojawiła się już
zawartość mojego schowka, tylko dokładnie zaznaczony tekst.
Co więcej, jeżeli teraz połączymy się z moim telefonem, to nagle okaże się, że
jeżeli napiszę tutaj jakiś tekst, a następnie zaznaczę go i przejdę do menu
udostępniania, to tutaj również mam dostępną akcję Avatar Quick Notes,
zaznaczony tekst został tutaj przekazany i
mogę albo zapisać zmiany, albo anulować wykonanie tego skryptu.
Wygląda więc na to, że wszystko się tutaj
zgadza i nasze makro dostępne jest zarówno na komputerze.
Oczywiście mamy tutaj możliwość
przypisania skrótu klawiszowego i też możemy sięgać po nie w telefonie.
Nie wiem czy wyraźnie to widać, ale teraz gdybym przypisał tutaj skrót klawiszowy,
mógłbym dosłownie z dowolnego miejsca mojego komputera zaznaczyć jakiś tekst,
skopiować go do schowka, a następnie uruchomić makro, które wyświetli mi
okienko umożliwiające zapamiętanie tej informacji przez mojego avatara.
Wygląda więc na to, że makro
odpowiedzialne za zapamiętywanie informacji mamy już gotowe.
Zatem w tej chwili dziękuję Ci za uwagę i zapraszam Cię do kolejnej lekcji.