Budowanie Asystenta AI
W tym odcinku rozmawiamy o tym, jak zaprojektowaliśmy i stworzyliśmy asystenta AI dla serwisu eduweb, napędzanego 25 milionami znaków transkryptów i innych naszych materiałów oraz jak sprawiliśmy, że potrafi odpowiadać kontekstowo z uwzględnieniem konkretnej lekcji czy kursu, ale też całej ogólnej wiedzy. To przełom w edukacji, który pozwoli na bardziej spersonalizowaną naukę. Przetestujcie na eduweb.pl!
Cześć wszystkim, witajcie. Witamy w kolejnym odcinku Rozmów na Autopilocie. Z tej strony Grzegorz Ruk, jest ze mną Adam Gospodarczyk i jeszcze szereg osób, które dołączyły do nas na żywo na naszej społeczności Ahoj, do której was serdecznie zapraszamy. Tutaj zawsze jako pierwsi możecie wysłuchać naszego podcastu, a także porozmawiać z nami na dowolny temat chwilę później. Często rozszerzamy te rzeczy, które omawiamy w podcaście i podajemy różne nasze doświadczenia czy praktyczne przykłady Wszelkie prawa zastrzeżone. Eduweb.
Został wdrożony na Edu. Jak to zrobiliśmy? Adam w zasadzie zajmował się całym tym projektem i dalej go rozwija, bo obecnie asystent jest w wersji beta. No i powiedz nam Adam, może na początku, do czego w ogóle służy asystent i co można dzięki niemu osiągnąć w ramach Eduweba? Tak, to cześć przede wszystkim. Jeżeli chodzi o sam projekt Asystenta, myślę, że on realizuje taką jedną z popularniejszych koncepcji, przynajmniej na tym etapie, dotyczącej wykorzystania dużych modeli językowych, takich jak np. GPT-4. Czyli po prostu podłączenie się do naszej bazy wiedzy i odpowiadanie na pytania z tą bazą wiedzy. Czyli można tak w jednym zdaniu powiedzieć, że asystent umożliwia porozmawianie z treścią Eduweba, niebawem też z treścią Ahoy, oczywiście jakieś wybrane wątki oraz także z naszymi newsletterami i innymi publikacjami.
Więc w dużym uproszczeniu jest to po prostu chatbot umożliwiający rozmowę z kursami oraz publikacjami, które gdzieś tam wydajemy na przestrzeni czasu. Jednak to jest zaledwie początek, ponieważ tak naprawdę pod spodem działa logika Alice, konkretnie element logiki, którą wykorzystuję w rozwoju takiej prywatnej wersji, gdzie eksploruję i naginam możliwości tego, co oferuje OpenAI oraz nie tylko OpenAI, ponieważ też zaczynam korzystać z innych modeli językowych. Do tego, aby realizować różne zadania. Więc w tym momencie asystent ma dostęp do bazy treści Eduweba z tym zastrzeżeniem, że mówimy tutaj głównie o materiałach posiadających transkrypcję i zaraz powiem o przygotowaniu treści na potrzeby takiego asystenta.
Jasne, już dopytuję. Czyli podsumowując, można powiedzieć tak, że asystent jest, mówiąc bardzo kolokwialnie i w cudzysłowie, wytrenowany na rzeczach, które można znaleźć na Eduwebie, ale nie tylko, bo ma też dostęp do Po pierwsze, wybranych dokumentów z internetu, czyli na przykład dokumentacji narzędzi, z którymi pracujemy i pracują osoby, które uczą się na Eduwebie, a także ma dostęp ewentualnie do różnych innych naszych rzeczy, takie jak zasoby z Ahoy, e-booków i jeszcze coś, o czym powinniśmy wiedzieć. Nie, na ten moment to jest tyle. Więcej sekretów może będę zdradzał w kolejnych tygodniach.
Natomiast w tym momencie jest to głównie to, ze względu na to, że najważniejszym takim wątkiem, który teraz jest, To w ogóle zaobserwowanie tego, jak taki asystent zachowuje się nie na moich pytaniach, nie na twoich pytaniach, Grzegorz, które zwykle są bardzo dostosowane. My wiemy przede wszystkim, co jest na Eduwebie, czego nie ma, jak zadać to pytanie i pierwsze, co zauważyłem właśnie po publikacji asystenta, to to, że te pytania zadawane przez użytkowników Są zasadniczo inne i właśnie nawet w tej chwili wpadło jakieś pytanie, prawdopodobnie od Grzegorza. Natomiast chodzi o to, że jesteśmy w stanie w ten sposób obserwować te zachowania i dostosowywać jego zachowanie, sprawdzać co działa, jakie założenia moje jakieś dotyczące wyszukiwania treści, dostarczania tego kontekstu itd.
tutaj zadziałały. No bo moim zadaniem jest tutaj to, żeby na dane pytanie, na daną konwersację odnaleźć istotne dla konwersacji fragmenty wiedzy Eduweba, a następnie przygotować to wszystko w taki sposób, żeby asystent był w stanie tę odpowiedź wygenerować. No właśnie, jak to się technicznie dzieje, to jest jakby istotne. Czyli jak działa asystent w takim razie pod spodem? Skoro już wiemy, że jakby co ma, na czym może operować i jeszcze jedno pytanie pośrednie, żeby pójść jakimś całym tokiem rozumowania, to asystent może też uzyskiwać dostęp do nowych materiałów i nowej wiedzy, czy jest to zamknięty byt? Może ją wykorzystywać ze względu na to, że tak naprawdę ten trening, o którym wspomniałeś, to nie jest na przykład fine tuning, który jest raczej sztywną techniką albo trudną gdzieś tam do dalszego rozwoju.
Natomiast jest to po prostu posługiwanie się wyłącznie informacjami zawartymi do kontekstu, czyli to tak jakbyśmy weszli na chart GPT. I zadając pytanie, dokleili kawałek jakiegoś artykułu i poprosili o odpowiedź na podstawie tego artykułu. Wówczas, na przykład jeżeli mamy teraz nową wersję jakiegoś frameworka, jakiejś technologii, to normalnie GPT-4 o tym nie wie, bo jego wiedza jest skończona Którymś tam punkcie czasu. Natomiast w przypadku asystenta Edu on ma taką informację z dwóch powodów. Po pierwsze znalazł kursy na Eduwebie, które też mogą być jeszcze trochę w przeszłości, bo na przykład dla technologii Node.js mamy kurs nagrany powiedzmy rok temu.
Od tej pory pojawiły się na przykład dwie wersje. I on sobie doczyta informacje na temat najnowszej wersji z sieci. I tą informację traktuje jako priorytetową i powie, że np. nowa wersja Node, że jest to np. 20, coś tam. Więc to wszystko zostało tak przemyślane, żeby jednocześnie dostosować się do Tego, co jest na Eduwebie, tego, co ma w swojej wiedzy ogólnej oraz tego, co znalazł w sieci. No i jak nie trudno się domyślić, łączenie tego nie zawsze jest takie oczywiste ze względu na to, że np. część transkrypcji na Eduwebie jest jeszcze na etapie moderacji. A to oznacza, że automatyczny transkrypt czasem nie wyłapuje na przykład poprawnych słów kluczowych, zawiera jakieś literówki, jakieś niepoprawnie złożone zdania i to widać jeszcze w odpowiedziach asystenta.
A model, ten asystent, jest w stanie to weryfikować i doprecyzowywać te pytania, bądź też ewentualnie naprowadzać na właściwe odpowiedzi. I to w tym momencie jest taki zaczątek tego, jak może zmienić się nasza nauka. Moja wizja takiego asystenta jest taka, żeby on nie towarzyszył nam tylko na etapie nauki, Tego, gdy oglądamy kurs, ale także na etapie pracy. Czyli w tym momencie mam też taką wersję podłączoną tego asystenta do aplikacji Alice, gdzie wciskam sobie po prostu kafelek i mogę porozmawiać z asystentem Eduweb na podstawie kursów, które tam są dostępne.
W ten sposób jestem w stanie na przykład, nie wiem, jeżeli coś programuję albo coś organizuję sobie w codziennej pracy, jestem w stanie zapytać po prostu, ej, oglądałem coś takiego na Eduwebie, znajdź mi to proszę i dostaję link do tej lekcji i na przykład niebawem już wątek na Ahoy, gdzie to na przykład omawiamy, dyskutujemy o tym. Dobra, porządkuję to od początku tak, żeby faktycznie było to jasne dla wszystkich osób, które chcą zrozumieć dokładnie jak działa asystent, bo to może nie być oczywiste, a dla nas prawdopodobnie jest. Czyli ustaliliśmy kilka ważnych, kluczowych rzeczy dla takiego pomocnika nauki. Pierwszy jest taki, że bazuje on na wiedzy, którą posiada z Eduweba i z naszych innych źródeł, takie, które wskażemy i ta wiedza może być aktualizowana na bieżąco.
Te rzeczy są w pewien sposób skatalogowane, ta cała wiedza w pewien sposób jest ułożona, otagowana, w pewien sposób dostępna dla niego na bieżąco. I to, co robi asystent, to po prostu wysyła odpowiednie zapytanie czy odpowiedni prompt. My korzystamy z API OpenAI, najczęściej z GPT-4, ale nie zawsze, o tym pewnie Adam też powie, do tego, żeby właśnie te informacje przesłać i uzyskać odpowiednią odpowiedź. W tej odpowiedzi kontekstem jest po pierwsze to, co znajdzie na Eduwebie. Ale drugą rzeczą, którą uwzględnia, są też te dane z zewnątrz, o których wspomnieliśmy, czyli np. z ogólnej wiedzy czy z dokumentacji. I takie dwa komponenty na ogół odpowiedzi asystent stara się przygotować po to, żeby nie tylko dać kontekst z Eduweba, ale też jakiś kontekst z zewnątrz na zadane pytanie.
że użytkownik na przykład udzielił odpowiedzi na pierwsze pytanie, zostały mu dwa kolejne i tak dalej. No i to wszystko w momencie, gdy sobie poukładamy, musimy w jakiś sposób odzyskiwać. Po pierwsze, w momencie, gdy jesteśmy już na platformie, czyli w wersji produkcyjnej aplikacji, to nie mamy zielonego pojęcia, co wpisze nasz użytkownik. Nie zawsze to musi być zapytanie z dobrą intencją. Ze względu na to, że użytkownicy mogą chcieć na przykład nadpisać zachowanie asystenta, czyli powiedzieć, żeby już nie był asystentem Eduweb, ale żeby na przykład podpowiadał im w jakimś innym obszarze. Dzięki temu mogą na przykład korzystać z naszego konta do zapytań.
Jednocześnie mogą też nawet przypadkowo, niekoniecznie celowo, wpisać jakiś fragment treści, który zostanie przez OpenAI uznany za łamiący regulamin ich wewnętrzny. To również trzeba zweryfikować. OpenAI wystawia tzw. moderation API, z pomocą którego jesteśmy w stanie sprawdzić, czy naruszamy ten regulamin. Następnie musimy, czy w moim przypadku, zdefiniowałem sobie regulamin taki nasz wewnętrzny eduwebowy, czyli co ten asystent może robić, a czego nie może robić. W momencie, gdy to zapytanie zostanie uznane za wykraczające poza te reguły, zostaje poprawnie oznaczone. I tutaj jest jednak gwiazdka. Jesteśmy w stanie minimalizować ryzyko wystąpienia sytuacji, gdy ktoś na przykład podejrzy nasz tak zwany prompt, czyli tą instrukcję asystenta.
Takie sytuacje w tym przypadku zdarzają się dość rzadko ze względu na to, że rzeczywiście materiały na Eduwebie są wysokiej jakości. W momencie, gdy podepniemy asystenta pod wyniki wyszukiwania, to tam mogą wyskoczyć różne rzeczy, od reklam przez np. Jakieś przypadkowe strony, które zawierają treści, których po prostu nie chcemy na Eduwebie, a w tym przypadku mogłyby się wczytać. Więc jakość bazy treści, z którą pracujemy, jest niesamowicie ważna. W przypadku Eduweba krytyczne są te transkrypty, które w tym momencie w przypadku wygenerowanych automatycznie potrafią jeszcze nie zawierać tych słów kluczowych, które są tutaj istotne.
Tak, wydaje mi się, że asystent mógłby mieć nieco więcej informacji na temat użytkownika, bo w tym momencie nie ma żadnych, czyli poza tym, że ja mam zapisany twój numerek i gdzieś tam mogę sobie dojść, który to jest użytkownik, to w tym momencie i w ogóle jest to niesamowicie ważne i to jest podkreślone też w regulaminie OpenAI, Czyli w momencie, gdy udostępniamy nasz klucz API, czy w tym przypadku po prostu chatbota użytkownikom, to musimy bardzo wyraźnie wiedzieć, kto zadał dane pytanie. W przypadku naruszenia regulaminu, gdy dojdzie na przykład do blokady konta, my musimy wyraźnie potwierdzić, że to był nasz użytkownik i my będziemy sobie wyciągać jakieś konsekwencje, a jednocześnie z punktu widzenia OpenAI, Załóżmy, że przychodzi ktoś na Eduweba, wpisuje zapytanie, które jest złośliwe, nie zostaje wychwycone przez nasze skrypty i dochodzi do blokady konta.
Jak te dane przygotować, opracować, to wszystko wpływa też na czas odpowiedzi, na jakość odpowiedzi, na wszystkie te rzeczy, o które musimy tutaj zadbać, więc jest to samo w sobie dosyć trudne zadanie, ale przeszliśmy od tej części właśnie technicznej do tej, która jest równie ważna, a może nawet ważniejsza, czyli części użytkowej, mówiąc o tym, że tak naprawdę asystent to Pewnego rodzaju cały upgrade do edukacji, którą planujemy polepszać właśnie czy wykorzystywać te mechanizmy po to, żeby nauka była jeszcze bardziej sprytna i przede wszystkim też na wyciągnięcie ręki oraz dopasowana do użytkownika. I to o czym wspomniał Adam, czyli to trochę takie dopasowanie czy profilowanie, czyli to, że asystent będzie za jakiś czas wiedział coś o nas, na przykład czego uczyliśmy się, jak długo, jakie odpowiedzi udzieliliśmy na jakiś quiz, który nam zadał lub też na przykład jakie rzeczy wynotowaliśmy sobie na Eduwebie do rozmaitych lekcji i oczywiście ta wiedza będzie prywatna dla asystenta.
W tym momencie to jeszcze tak nie działa, że asystent jest w stanie w sposób bezpośredni właśnie przeanalizować sobie np. całą historię naszych konwersacji i na tej podstawie dojść do jakichś wniosków. Takie mechanizmy powinny być zaszyte W trakcie do tego, żeby on budował sobie nasz profil i wówczas jesteśmy w stanie do czegoś takiego dojść. No i w przypadku Eduweba, gdzie platforma rzeczywiście takie profile posiada, posiada historię nauki, ścieżki rozwoju i tak dalej, rzeczywiście coś takiego ma jak najbardziej sens i może mieć miejsce. No i taki rozwój naszej kariery w towarzystwie asystenta AI ma tutaj jak najbardziej dużo sensu.
Same w sobie odpowiedzi asystenta są cenne i wartościowe i pozwalają nam spojrzeć trochę z innej perspektywy na przykład na proces naszej nauki. Po drugie, dość istotne jest też kontekst, czyli samo to, że będziemy mogli asystenta zapytać o to, jakiej kolejnej lekcji się uczyć na Eduwebie, też ma ogromne Znaczenie w kontekście tej trochę lepszej i bardziej zwinnej nauki w przyszłości. To co będzie mega ciekawe, to spersonalizowanie asystenta i dostosowanie go do naszej ścieżki rozwoju, a także posiadanie takiej wersji osobistego tutora, który towarzyszy nam całą naszą wersję tego rozwoju realizując. Mi się to spina w kompletną prawie całość. W zasadzie ostatnim elementem, który jest brakujący, a nad którym też pracujemy i uważam, że jest bardzo ważny, jest to to, w jaki sposób asystent będzie w stanie serwować nam wiedzę i odpowiedzi.
I jest to też mega ciekawy temat, ponieważ w tym momencie może na przykład nas odnieść do jakiegoś linku, do jakiegoś zasobu i my możemy w niego kliknąć i oglądać tą lekcję, o którą nam chodzi, na której nam zależy, więc możemy w pewnym sensie uczyć się trochę bardziej kontekstowo, nie myśleć o tym, jaki kurs mamy teraz do przerobienia, czy jak wygląda cała playlista, która jest ułożona, ale bardziej dopytać o konkretny, wybrany temat, a następnie poruszać się kontekstowo po linkach, które zaserwuje nam Asystent, ale to jeszcze nie wszystko, bo poza taką sugestią, która może na przykład uruchomić dla nas w playerze jakieś inne wideo z Eduweba, tak naprawdę asystent możliwe, że za jakiś czas będzie posiadał umiejętność czy możliwości serwowania nam całych tych treści, można powiedzieć, że bardziej kontekstowo czy inline'owo, czyli
To oczywiście już jest częściowo możliwe, ale na przykład z tych fragmentów kodu następnie mógłby nas quizować i sprawdzać, czy na przykład jesteśmy w stanie znaleźć w nich błąd albo on naprawia błędy dla nas z tych czanków czy z tych ćwiczeń, które Który mu serwujemy. Więc chodzi mi o bardziej takie podejście do tego, że asystent mógłby też w pewien sposób sterować tym, jak sam content jest tworzony. Teraz jeśli weźmiemy pod uwagę, że content na Eduweby to jest lekcja wideo, to jakbyśmy przenieśli sposób myślenia o tym w tą stronę, że content to jest asystent i asystent generuje dla nas w zasadzie ten content, który jest w różnych formatach. No to to jest mega ciekawe. A jak dołożymy jeszcze do tego fakt, że w praktyce asystent zna też nasze transkrypty, być może jest w stanie je przetłumaczyć, być może jest w stanie mówić w różnych językach, może jest w stanie mówić głosem również, to to już się robi też bardzo ciekawe z punktu widzenia takich metod dostępu do asystenta, które mogą być nie tylko w okienku z prawej strony na Eduwebie.
które tu i teraz są wyzwaniem. Wyzwaniem jest na pewno stabilność API, czyli stabilność połączenia z OpenAI. Jest sam wątek skuteczności w ogóle modeli językowych. Z którymi musimy sobie radzić. Przykładowo w tym momencie ewidentnie jest widoczny spadek skuteczności dla języka polskiego. No i to jest coś poza naszą kontrolą i o tym też warto pamiętać. Jednocześnie też pojawiają się offline'owe wersje dużych modeli językowych, które stają się coraz lepsze. Akurat w języku polskim mówią średnio, Na przykład na Eduwebie wykorzystuję także API Deeply do tego, żeby tłumaczyć sobie treści na język angielski i chociaż asystent mówi w języku polskim, to tak naprawdę w tle niekoniecznie tak jest.
Ten sam wątek, czy ten sam temat, czy tą samą To samo zagadnienie do zrozumienia przez tą osobę będzie można na przykład osobie zaawansowanej przedstawić w 5 kroków, a osobie początkującej w 20 kroków, ale dalej będzie to ten sam content i ten sam materiał. Jest to mega ciekawe, super ważne w kontekście tego, co może stać się rzeczywiście zupełnie nową, kolejną wersją nauki online, która w mojej ocenie, myślę, że Adama też, nie mówiąc za Adama, ale jest najlepszą rzeczą, czyli jakby Internet jest najlepszym miejscem do edukacji, ale chyba jeszcze Nikt nie wymyślił najlepszej wersji edukacji w internecie i nasze starania do tego, do wymyślenia takiej najlepszej wersji są od wielu lat i tak właśnie projektujemy też Eduweb, aby zawierał te wszystkie istotne komponenty, ale teraz w zasadzie mamy chyba takie trochę wrażenie, że dopiero będzie to
Zobaczcie jak działa asystent. Przede wszystkim proszę wejście sobie na Eduweb. Tam w dowolnej odtwarzanej lekcji w playerze. Wejdźcie sobie do zakładki asystent, która znajduje się w prawym górnym rogu i możecie korespondować sobie z asystentem, omówić z nim różne zagadnienia. Nie wszystkie jeszcze nasze kursy i lekcje mają transkrypty. Te, które nie mają, dla nich asystent działa trochę gorzej, więc sugeruję Wam rozpocząć naukę właśnie od tych, które mają dostępny transkrypt. Jest to tam oczywiście widoczne i wtedy poeksperymentujcie proszę z asystentem. Jest to naprawdę już na tym etapie dość ciekawe doświadczenie, mimo że jest
Pokazano wszystkie 23 dopasowania. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.
Adam przedstawia projekt asystenta AI, jego funkcjonalności i dostęp do treści Eduweba oraz internetowych źródeł.
Adam opisuje, jak asystent działa i korzysta z informacji z Eduweba oraz internetowych źródeł.
Adam omawia możliwość dostępu asystenta do nowych materiałów i procesy ulepszania asystenta.
Adam wyjaśnia, jak asystent organizuje i dostarcza odpowiedzi na podstawie treści Eduweba i zewnątrz.
Adam szczegółowo opisuje proces przygotowywania treści do asystenta, w tym użycie API OpenAI i tokeny.
Adam omawia wyzwania techniczne i zabezpieczenia związane z asystentem, w tym bezpieczeństwo użytkowników i zabezpieczenia przed złośliwymi zapytaniami.
Rozmowa o kluczowych elementach asystenta AI, takich jak wartość odpowiedzi, kontekst, personalizacja i sposób serwowania treści.
Wzmianki o wyzwaniach związane z integrowaniem dużych modeli językowych oraz możliwościach dostosowywania treści do różnych odbiorców.
Rozdziały i streszczenia generowane automatycznie. Pełna transkrypcja nie jest publikowana — wyszukaj frazę, aby zobaczyć dopasowane fragmenty.
Kliknij, aby znaleźć fragmenty, w których pada.