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 pokażę Ci, w jaki sposób
stworzyć integracja umożliwiającą rozmowę z naszym avatarem bezpośrednio na Slack'u.
Tak jak widać, mogę rozmawiać z M.A.N.D.A.Y
wysyłając jej wiadomości, na które odpisuje bezpośrednio, bądź też zadawać
pytania dotyczące notatek, bądź też tego, co sama przeczytała.
Jak widać, zwracane przez nią odpowiedzi zawierają nie tylko tekst, ale także ten
tekst jest odpowiednio sformatowany, a nawet może zawierać linki.
Dodatkowo mamy tutaj jeszcze jedną
inspirację dotyczącą tego, jak Twój avatar może się rozwijać.
Ze względu na to, że z pomocą tej
wiadomości sprawiłem, że M.A.N.D.A.Y nie tylko mi odpisała, ale także połączyła się z
moim Notion i dodała tam nowy wpis dotyczący jednego z moich zadań.
Wygląda więc na to, że mamy tutaj zaawansowaną integrację, która tak
naprawdę jest niezwykle prosta i wygląda dokładnie tak, aby ją utworzyć.
Pierwszym krokiem było utworzenie nowego konta na Slack'u dla M.A.N.D.A.Y.
Następnie tutaj jako pierwszy moduł, zamiast wybierać akcję Watch Direct
Messages, która na pierwszy rzut oka mogłaby tutaj zadziałać.
Niestety nie sprawdzi się w praktyce ze
względu na to, że akcja nie jest uruchamiana natychmiast.
Natomiast tutaj na dole mamy akcję New Event i w przeciwieństwie do tej
poprzedniej, ta wykonuje się natychmiast, ponieważ wykorzystujemy tutaj Webhook.
Przy jego dodawaniu możemy określić event
type i w naszym przypadku chodzi o nową wiadomość prywatną.
Po upewnieniu się, że jesteśmy połączeni z naszym Workspace, wystarczy, że z tej
listy wybierzemy kanał, na którym chcemy rozmawiać.
W moim przypadku będzie to kanał M.A.N.D.A.Y.
Oczywiście teraz anuluje tę zmiany i
odświeżę scenariusz, aby przywrócić to co miałem przed chwilą.
Ponieważ wszystko jest tutaj gotowe.
Kolejnym bardzo istotnym, jak nie
najważniejszym krokiem będzie utworzenie filtra sprawdzającego.
Po pierwsze, czy wiadomość, którą tutaj otrzymaliśmy rzeczywiście została wysłana?
Chodzi o to, że zdarzenia, które zostają
tutaj wysyłane dotyczą nie tylko nowych wiadomości, ale także np.
reakcji na wiadomość bądź też usunięcie samej wiadomości.
Następnie musimy także sprawdzić, czy
wiadomość, która została tutaj wysłana nie pochodzi bezpośrednio od naszego avatara.
W momencie, gdybyśmy nie ustawili tego
filtra, bądź ustawili go w niepoprawny sposób, za każdym razem, gdy M.A.N.D.A.Y
Napisałaby jakąś wiadomość, ten scenariusz zostałby uruchomiony.
Z pewnością chcemy tego uniknąć.
W związku z tym ten filtr jest tutaj konieczny.
Kolejnym krokiem będzie przygotowanie obiektu JSON o takiej samej strukturze jak w
przypadku makro szortcuts, które tworzyliśmy w poprzednich lekcjach.
Po prostu przesyłamy tutaj typ ustawiony
na answer, a następnie content ustawiony na aktualną wiadomość.
Tutaj w tym miejscu uruchamiam mój główny scenariusz, odwołując się do jego Webhook'a
oraz wysyłając metodą post obiekt JSON.
Przygotowany w poprzednim kroku odpowiedź z tego scenariusza, która
natychmiast zostanie sparsowana, zostanie wykorzystana do tego, aby wysłać wiadomość
bezpośrednio z konta M.A.N.D.A.Y na kanał, na którym aktualnie prowadzimy dyskusję z
tekstem ustawionym na to, co zostało wygenerowane z głównego scenariusza.
Ostatnią opcją, z której tutaj korzystam, jest wykorzystanie składni Markdown
właśnie po to, aby wiadomości mogły uwzględniać dodatkowe formatowanie.
Jeżeli chodzi o sam scenariusz, to oczywiście dołączam go do zasobów tej
lekcji, natomiast myślę, że nie będziesz mieć problemów z jego odtworzeniem.
Pamiętaj tylko o tym, aby poprawnie ustawić tutaj ten filtr.
A jeżeli chodzi o identyfikator użytkownika możesz go pobrać przechodząc
na profil użytkownika i tutaj w opcjach skopiować identyfikator.
Cała reszta powinna być dla Ciebie jasna.
Dodam tylko, że teoretycznie nie ma potrzeby tworzenia nowego konta
użytkownika, aby nasz avatar mógł nam wysyłać wiadomości ze względu na to, że
taka wiadomość może zostać wysłana jako bot.
Wówczas wiadomość, która pojawi się na
kanale będzie oznaczona jako wiadomość wysłana przez automatyzację.
Jeżeli chodzi o integrację ze Slack'iem, to by było już na tyle.
Oczywiście pamiętaj o tym, że w moim przypadku wykorzystałem tutaj Slack'a,
natomiast sprawdzą się tutaj dowolne komunikatory, które umożliwiają
obserwowanie wiadomości oraz odpisywanie na nie.
Przykładem takiej aplikacji według mojej wiedzy jest także Telegram.
Sam jednak nie tworzyłem integracji z jego
pomocą, więc trudno mi powiedzieć jak to wygląda w praktyce.
No i teraz dziękuję Ci za uwagę i do usłyszenia za moment.