POIT #221: GenAI w budowaniu rozwiązań biznesowych z perspektywy architekta i programisty

Witam w dwieście dwudziestym pierwszym odcinku podcastu „Porozmawiajmy o IT”. Tematem dzisiejszej rozmowy jest wykorzystanie GenAI w budowaniu rozwiązań biznesowych z perspektywy architekta i programisty.

Dziś moim gościem jest Maciej Małecki – programista i architekt oprogramowania z ponad dwudziestoletnim doświadczeniem. Odpowiedzialny za techniczne prowadzenie projektów dla klientów reprezentujących różne branże, w tym logistykę, telekomunikację oraz branżę motoryzacyjną. Obecnie zajmuje się budową komercyjnych rozwiązań opartych na technikach sztucznej inteligencji. Prywatnie jest kolarzem-amatorem oraz koderem niskopoziomowym.

Sponsor odcinka

Sponsorem odcinka jest Capgemini Polska.

W tym odcinku rozmawiamy w następujących kontekstach:

  • jaki wpływ na różne aspekty działalności człowieka mają modele językowe i generatywna sztuczna inteligencja?
  • czy po roku od zachłyśnięcia sie możliwościami ChatGPT przeszliśmy z nim do porządku dziennego?
  • kto jest największym beneficjentem rozwiązań GenAI w firmach?
  • czym jest prompt engineering?
  • jak dołożyć LLM do architektury już istniejących rozwiązań?
  • czym jest Retrieval Augmented Generation (RAG)?
  • czy utrzymywanie rozwiązań GenAI różni się czymś od klasycznych projektów IT?
  • jakie są obecnie trendy w GenAI?
  • zaproszenie na Capgemini Tech Talks i wystąpienie Macieja

Subskrypcja podcastu:

Linki:

Wsparcie na Patronite:

Wierzę, że dobro wraca i że zawsze znajdą się osoby w bliższym lub dalszym gronie, którym przydaje się to co robię i które zechcą mnie wesprzeć w misji poszerzania horyzontów ludzi z branży IT.

Patronite to tak platforma, na której możesz wspierać twórców internetowych w ich działalności. Mnie możesz wesprzeć kwotą już od 5 zł miesięcznie. Chciałbym oddelegować kilka rzeczy, które wykonuję przy każdym podcaście a zaoszczędzony czas wykorzystać na przygotowanie jeszcze lepszych treści dla Ciebie. Sam jestem patronem kilku twórców internetowych i widzę, że taka pomoc daje dużą satysfakcję obu stronom.

👉Mój profil znajdziesz pod adresem: patronite.pl/porozmawiajmyoit

Pozostańmy w kontakcie:

 

Muzyka użyta w podcaście: „Endless Inspiration” Alex Stoner (posłuchaj)

Transkrypcja podcastu

To jest 221 odcinek podcastu Porozmawiajmy o IT, w którym z moim gościem rozmawiam o GenAI w budowaniu rozwiązań biznesowych z perspektywy architekta i programisty.

Sponsorem tego odcinka jest Capgemini Polska. Notatkę, linki oraz transkrypcję do dzisiejszego odcinka znajdziesz pod adresem porozmawiajmyoit.pl/221. Podcast Porozmawiajmy o IT jest dostępny zupełnie za darmo. Obowiązuje tylko jedna zasada: jeśli jesteś tu przynajmniej po raz drugi, to po pierwsze rozgość się, a po drugie odwdzięcz za te treści, wystawiając ocenę w Twojej aplikacji podcastowej lub polecając odcinek w social mediach. Dziękuję.

Ja się nazywam Krzysztof Kempiński. Moją misją jest poszerzanie horyzontów ludzi z branży IT, co realizuję m.in. poprzez ten podcast.

A teraz zapraszam Cię już do odcinka.

Odpalamy!

Cześć!

Mój dzisiejszy gość to programista i architekt oprogramowania z ponad 20-letnim doświadczeniem. Odpowiedzialny za techniczne prowadzenie projektów dla klientów reprezentujących różne branże, w tym logistykę, telekomunikację oraz branżę motoryzacyjną. Obecnie zajmuje się budową komercyjnych rozwiązań opartych na technikach sztucznej inteligencji. Prywatnie jest kolarzem amatorem oraz koderem niskopoziomowym. Moim i Waszym gościem jest Maciej Małecki.

 

Cześć, Maciej, miło mi gościć Cię w podcaście.

 

Cześć, Krzysiek, witam wszystkich.

 

Dzisiaj z Maciejem będziemy rozmawiać o bardzo popularnym ostatnio temacie generatywnej sztucznej inteligencji i zobaczymy, jak z perspektywy architekta i programisty wygląda budowanie rozwiązań biznesowych, które albo są oparte, albo mają jakąś część związaną ze sztuczną inteligencją.

Zanim do tego przejdziemy, to chciałbym Cię, Maciej, na początku zapytać, tak jak każdego mojego gościa, czy słuchasz podcastów? Jeśli tak, to może masz jakieś ciekawe audycje, o których chciałbyś powiedzieć?

 

Słucham podcastów oczywiście, ale tutaj niespodzianka: nie są to podcasty technologiczne. Nie obraź się, ale słucham podcastów o takim zabarwieniu politycznym, więc oczywiście mogę polecić Stan Wyjątkowy tworzony przez Andrzeja Stankiewicza i Raport Międzynarodowy Witolda Jurasza – w zależności polityka wewnętrzna/polityka zewnętrzna. Bardzo polecam.

 

Jasne, w ogóle się nie obrażam, bo podcasty służą czerpaniu wiedzy z różnych dziedzin, nie tylko z tej związanej z naszą pracą, ale też rozrywki itd., więc każdy może sobie coś dla siebie znaleźć. 

Dzisiaj będziemy się skupiali na tych rozwiązaniach biznesowych, które służą firmom, które służą na koniec jakiemuś szerszemu gronu odbiorców, ale jakby nie było, każdy biznes to są po prostu ludzie, którzy za tym biznesem stoją, więc chciałbym rozpocząć od takiego pytania, jaki wpływ mają właśnie te modele sztucznej inteligencji, modele językowe, generatywna sztuczna inteligencja na te różne działalności, różne aspekty ludzkiej działalności? 

 

Zacznijmy od tego, że ja jestem entuzjastą tej technologii, też pewnie bym tutaj nie był, gdybym nie był tym entuzjastą. Ja ten wpływ oceniam jako duży i będzie on rósł. I wydaje mi się, że się tutaj nie mylę. Natomiast ten wpływ w takiej postaci najbardziej odczuwalnej jest dwojaki. 

Z jednej strony jest to nadzieja pewnych grup, takich jak ja. Z drugiej strony jest to strach. Strach całkiem sporej grupy osób, całkiem sporej grupy społecznej, która, wydaje mi się, że zderzyła się z czymś takim po raz pierwszy w historii. Mamy do czynienia z taką przecież dosyć szeroką grupą ludzi zajmujących się pracą umysłową czy intelektualną, nawet kreatywną i nagle się okazało, że pojawia się coś, co w zasadzie jest algorytmem, bardzo wyrafinowanym, ale jednak algorytmem, który się całkiem dobrze sprawdza w takiej pracy, i według mnie ten strach też jest uzasadniony. 

Natomiast pojawia się też nadzieja – bo to oczywiście z punktu widzenia biznesu, z punktu widzenia firm, z punktu widzenia programistów zajmujących się sztuczną inteligencją, to zawsze to są nowe obszary do zbadania i, co by to nie mówić, duże źródło zysków w przyszłości. 

 

Zgadza się. Czyli powiedziałeś tutaj o takich dosyć skrajnych wręcz, mam wrażenie, odczuciach. Z jednej strony entuzjazm, z drugiej strony obawa. No właśnie, jesteśmy już myślę ponad rok od takiego zachłyśnięcia się tymi możliwościami. Tutaj chat GPT był takim elementem, który wprowadził, można powiedzieć, naszą sztuczną inteligencję pod strzechy. Może trochę przesadzam, ale zdecydowanie był to taki produkt, czy jest to taki produkt, który gdzieś najczęściej jest właśnie kojarzony z tym fragmentem. 

No właśnie, zachłysnęliśmy się nim, później troszkę wystraszyliśmy, tak jak tutaj może powiedziałeś i chciałbym Cię zapytać, czy nadal traktujemy to jako taką ciekawostkę, jako taką nowinkę, coś takiego, czym się bawimy, można powiedzieć, czy też może te rozwiązania znalazły już swoje stałe miejsce w tym takim szerokim krajobrazie rozwiązań technologicznych i biznesowych? 

 

Po tych pierwszych kilku miesiącach mogę powiedzieć, że mainstream się mimo wszystko troszeczkę uspokoił, bo jest takie naturalne odczucie, że no dobrze, ale ta sztuczna inteligencja tak naprawdę to tylko udaje inteligencję, zmyśla i że tak naprawdę wszyscy jesteśmy bezpieczni. Tak widzi to mainstream, gdyż chat GPT i w ogóle to, co zrobiła firma OpenAI, to że tak użyje militarnych sformułowań, to był taki demonstrator technologii tak naprawdę. On został specjalnie wytrenowany, żeby udawać bardzo mądrego, natomiast tam jest coś innego istotne. 

Tam się pojawiła cała nowa kategoria takich komponentów informatycznych, które się nazywają wielkie modele językowe, czyli Large Language Models. I wielki model językowy jest to sieć neuronowa wyspecjalizowana w przetwarzaniu m.in. języka naturalnego. I okazuje się, że jeśli wykorzystamy to jako normalny komponent gdzieś tam w naszej architekturze, to pojawiają się dla nas zupełnie nowe możliwości przetwarzania danych – tym się zajmuje informatyka: informatyka się zajmuje przetwarzaniem danych i informacji tam, gdzie to było trudno zrobić takimi klasycznymi algorytmami. 

Nie dość, że ta sieć neuronowa, jak każda sieć neuronowa, ona ma cechy, których klasyczny algorytm nie ma, czyli potrafi uogólniać, potrafi wyciągać jakieś ogólne wnioski, to z tą siecią neuronową też my jesteśmy w stanie wchodzić w interakcje w sposób, w jaki do tej pory nie wchodziliśmy, bo tak naprawdę interfejs programistyczny tej sieci neuronowej jest językiem naturalnym. 

I my możemy naprawdę wiele rzeczy poprosić, I ta sieć to dla nas wykona, ten model wygeneruje dla nas odpowiedź i bardzo często ona będzie dokładnie taka, jak chcemy, bez konieczności rozszerzania tego interfejsu. Po prostu to jest jakby taka naturalna cecha. 

I oczywiście firmy zaczynają wykorzystywać ten model językowy jako istotny komponent w różnych rozwiązaniach, a tych rozwiązań naprawdę jest całe mnóstwo. 

 

Właśnie, powiedziałeś tutaj o możliwościach dla informatyki jako takiej, że mamy teraz mechanizm, mamy algorytm, jakkolwiek to nazwać, który jest w stanie sobie radzić w inny sposób z pewną klasą problemów niż tylko poprzez dokładanie mocy obliczeniowej. To jest jak gdyby ta szansa dla informatyki, ale powiedziałeś też, że biznes nie jest obojętny na to, jakie nowości w tym obszarze się pojawiają. Powiedziałeś, że to coraz szerzej wchodzi pod strzechy. 

Jakby tak popatrzeć na firmę, taką większą firmę, średnią, jest to taki byt, taka organizacja, która ma różne działy sprzedażowe, może inżynieryjne, może marketingowe itd. Jaki fragment firmy albo jaka rola w tej firmie jest według Ciebie takim największym beneficjentem właśnie tych rozwiązań generatywnej sztucznej inteligencji? 

 

Udzielę odpowiedzi bardzo przewrotnie, tzn. przede wszystkim głównym beneficjentem tych rozwiązań są udziałowcy, ponieważ sztuczna inteligencja to jest kolejny kamyczek zwiększający produktywność, efektywność działania całych firm, ale to jest poprzez to, że zwiększa to produktywność pracowników. 

I też tutaj chciałbym od razu przytoczyć, to się robi bardzo popularne to potwierdzenie, ale ja gdzieś tam usłyszałem od kolegi w firmie, który powiedział, że bo tam na początku sztuczna inteligencja rzeczywiście pokazała, że umie programować, tam blady strach prac na programistów, o mój Boże, już nie będziemy mieli pracy, ale okazało się, że to tak nie do końca działa i to nie jest tak, że wszyscy programiści będą mogli być zwolnieni, tylko to jest powiedzenie (i to już nie dotyczy programistów, to dotyczy szerokiego grona specjalistów), że oczywiście sztuczna inteligencja spowoduje tyle, że osoby, które potrafią efektywnie jej używać, tak zwiększą swoją produktywność, że zagrożą osobom, które się jej opierają i nie korzystają z tych technik. 

To jest jakby naturalne, na to nic nie poradzimy. To, co jest według mnie ważne do odnotowania, to gwałtowność tej rewolucji. Ona jest bez precedensu, bo to nie jest liczone w dekadach, to jest liczone w latach, a właściwie nawet w miesiącach, bo bądźmy szczerzy, uczenie maszynowe to jest kwestia kilku ostatnich lat, natomiast duże modele językowe to jest rok, półtora roku – oczywiście te badania trwały, ale takiego powszechnego odczucia. 

Więc oczywiście pytanie, czy my się wszyscy jako społeczeństwo zdążymy dostosować, to jest pytanie otwarte, bo według mnie na to nie ma odpowiedzi w tej chwili, to zobaczymy. Natomiast już wewnątrz firmy to mi się wydaje, że to jest jakby mniej istotne. Wszystkie działy będą mniej lub bardziej na tym korzystać, ponieważ tak jak mówię, to jest o tyle nowa jakość, że my jesteśmy w stanie przetwarzać język naturalny, który jest językiem nie do końca formalnym, nie do końca jasnym, który wymaga rozumienia kontekstu. My sobie z tym nie radziliśmy do tej pory, a w tej chwili to się okazuje być już bardzo blisko, więc zobaczymy, ale to oczywiście wiadomo: biznes wygra, ten co posiada, to zawsze wygra. 

 

Tak, nie tylko możemy za pomocą tych rozwiązań przetwarzać ten język naturalny, taki nieoczywisty, nie do końca skodyfikowany, który ma różne niuanse, ale również za pomocą tego języka jesteśmy w stanie się porozumiewać z LLM-ami, prawda? To jest to właśnie rewolucja, o której tutaj powiedziałeś. 

I tutaj sprowadza nas to do takiego pojęcia, jakim jest prompt engineering. Chciałbym Cię poprosić, żebyś troszkę o tym powiedział i na ile według Ciebie jest istotne, żeby zwłaszcza te osoby, które zajmują się technologią, miały pojęcie, czym to jest i potrafiły z tego korzystać. 

 

Prompt Engineering to jest fantastyczna nazwa, gdyż według mnie właśnie jacyś tam inżynierowie stwierdzili, że dodamy taką nazwę, która onieśmiela, więc dodaliśmy tam słowo prompt. Prompt Engineering brzmi jak Rocket Science, bądźmy szczerzy. 

Natomiast w najprostszej odsłonie to jest coś, co np. ja posiadłem w sposób naturalny, bo jeśli wchodzimy w interakcję np. z czatem GPT, jeśli zapomnimy, że to jest maszyna, jeśli uznamy, że z jakimś, powiedzmy, ekspertem dyskutujemy, to prompt engineering w najprostszej odsłonie to jest, jak rozmawiamy z człowiekiem, zadajemy pytanie, być może to pytanie sformułowaliśmy zbyt ogólnie albo sformułowaliśmy je źle, dostaniemy odpowiedź, która nas nie satysfakcjonuje, to my oczywiście w ramach tej samej konwersacji, bo nie musimy otwierać nowego okienka, tego wręcz nie powinniśmy robić, te narzędzia z reguły pamiętają historię konwersacji, my możemy doprecyzować pytanie. 

Możemy poprosić np., żeby odpowiedź była sformułowana w języku niemieckim. Albo jeśli np. chcemy, żeby wyciągnąć jakieś dane, to żeby odpowiedź pogrupować w jakiejś tabelce. Albo np., żeby to był format JSON. My robimy w tym momencie prompt engineering. 

Tak że widzisz, nazywa się to tak super, prawda, kosmicznie, ale tak naprawdę to jest dokładnie to, co robimy, kiedy rozmawiamy np. na czacie z drugim człowiekiem i próbujemy wynegocjować od niego właściwą odpowiedź, bo wiadomo. I duże modele językowe, i to jest fantastyczne, zbudowane narzędzia w oparciu na tych modelach językowych z reguły właśnie budują kontekst, pamiętają wcześniejsze wypowiedzi w ramach danego kontekstu i my nagle mamy takie bardzo wygodne wrażenie, że my np. nie musimy od nowa tego samego pytania zadawać, tylko jakby on to pamięta, my doprecyzowujemy, zadajemy kolejne pytania i uzyskujemy odpowiedź. 

Oczywiście zakładam też, żeby nie było, ja nie jestem specjalistą od trenowania wielkich modeli językowych, zakładam, że one są tak trenowane, żeby one też pewne jakby specyficzne komendy potrafiły obsługiwać. Zaraz do tego dojdziemy, ale możemy np. poprosić model językowy, aby w odpowiedzi ograniczył się tylko do pewnej specyficznej wiedzy, żeby on tam gdzieś nie szukał czegoś. I to też działa. 

Są pewne słowa kluczowe, to już jest taka tajna wiedza danego języka, to już nie jest do końca przenośne. W ramach takiego modelu językowego będą działać i słowa kluczowe, gdzie my możemy np. wyspecyfikować kody jakiegoś programu, gdzieś tam w Pythonie, czy niekoniecznie w Pythonie, to są takie techniki, ale według mnie prompt engineering należy rozumieć jako umiejętność konwersacji – i tak, tego się powinien nauczyć każdy, nie tylko programista. Dla programistów to jest niezbędne, gdyż stosując LLM-y my musimy znać prompt engineering, gdyż to jest nasz interfejs do tej biblioteki, ale każdy z tego będzie miał korzyść, nawet jeśli korzysta z Barda czy z Chata GPT, bo to po prostu się przydaje. To pozwala bardzo efektywnie korzystać z tych narzędzi. 

W ramach takiego modelu językowego będą działać i słowa kluczowe, gdzie my możemy np. wyspecyfikować kody jakiegoś programu, gdzieś tam w Pythonie, czy niekoniecznie w Pythonie, to są takie techniki, ale według mnie prompt engineering należy rozumieć jako umiejętność konwersacji – i tak, tego się powinien nauczyć każdy, nie tylko programista. Dla programistów to jest niezbędne, gdyż stosując LLM-y my musimy znać prompt engineering, gdyż to jest nasz interfejs do tej biblioteki, ale każdy z tego będzie miał korzyść, nawet jeśli korzysta z Barda czy z Chata GPT, bo to po prostu się przydaje. To pozwala bardzo efektywnie korzystać z tych narzędzi.

 

Właśnie, to jest kluczowe, co powiedziałeś na koniec, że oczywiście, każdy może spróbować konwersować z Chatem GPT, ale te konwersacje czy też wyniki nie zawsze będą dla niego, czy też dla niej satysfakcjonujące. Natomiast jeśli trochę tych umiejętności związanych z prompt engineeringiem nabierzemy, to automatycznie to, co dostaniemy na wyjściu, będzie dużo bardziej spełniało nasze oczekiwania. 

Okej, dobrze, czyli wiemy, że możemy wykorzystywać to narzędzie w wielu różnych aspektach, np. w tworzeniu oprogramowania, ale też w pewnej obróbce danych, w wielu różnych zastosowaniach. Wiele działów czy też fragmentów firmy może z tego skorzystać. 

I teraz przechodzimy do takiej części bardziej developersko-inżynierskiej, że tak to nazwę. Myślę sobie, że na tym etapie, na jakim jesteśmy, będzie raczej sytuacja taka, że te takie komponenty związane z LLM-ami będą dokładane do istniejących rozwiązań. Myślę, że to będzie raczej większość na ten moment niż rozwiązania, które startują od zera, już mając w tej architekturze gdzieś zaplanowaną właśnie taką kostkę pod tytułem LLM. 

Właśnie, to jest teraz dobre pytanie, trudne pytanie, jak do tej istniejącej już architektury rozwiązań dołożyć właśnie LLM-y?

 

Okazuje się, że to wcale nie jest skomplikowane, ponieważ tak jak mówię, LLM jako taki to jest pewna zamknięta całość. Oczywiście za chwilę powiem, bo to jakby trzeba mieć na czym to uruchomić, to jest dosyć obliczeniowo kosztowna sprawa, natomiast model językowy ma swój interfejs. Np. jeśli to są modele rzeczywiście takie tekstowe, to my możemy wysłać zapytanie tekstowe, które ma swoje ograniczenia rozmiarowe, to jest ten tzw. rozmiar okna, czy też rozmiar kontekstu. Te modele mają po kilkanaście, kilkadziesiąt tysięcy tokenów, 100 tys. tokenów, to jest maksimum, jakie w tej chwili widziałem, więc te konteksty będą rosły, to też taki trend będzie, że będziemy mogli coraz więcej wysłać naraz. I ta sieć oczywiście odpowiada, my tą odpowiedź np. możemy sobie sformatować jako tekst. 

To, co jest oczywiście doskonałe, to istnieją już biblioteki, które to wspomagają. Jest taka biblioteka, której osobiście używam, czyli LangChain. Ta biblioteka oczywiście jest zaimplementowana w kilku językach, a tutaj jest od razu uwaga dla jakichś tam javowców czy typescriptowców, którzy nas słuchają: typescript jeszcze w miarę tam nadgania, ale głównym językiem jest Python. Przez jakiś czas na pewno tak będzie. Trzeba się z tym językiem przeprosić. Na szczęście sporo ludzi, którzy studiowali w ostatnich latach, Pythona zna, więc jakby tutaj nie ma problemu. 

Mówię o tym dlatego, że Python ma najświeższą implementację, więc jeśli zależy nam na czasie, to Python jest tutaj najlepszym rozwiązaniem. 

I teraz tak, oczywiście my mamy systemy niepythonowe z reguły, więc w świecie mikroserwisów to nie jest problem, bo sobie stawiamy serwis w Pythonie, który sobie obudowuje ten model językowy, robimy do niego normalne API takie, jakie chcemy i po prostu wplatamy go tak, jak chcemy. 

Przy czym też trzeba pamiętać, wydaje mi się, że trend będzie taki, że te rozwiązania bazujące na sztucznej inteligencji generatywnej będą jednak hostowane gdzieś w chmurach. Albo to będzie chmura Microsoftu, albo to będzie chmura Amazona, albo to będzie chmura Google’a. Więc oczywiście, jeśli my mamy system chmurowy, to będzie dużo łatwiej. Jeśli nie mamy systemu chmurowego, to się musimy przygotować, żeby gdzieś tam sobie zbudować taki pomoc do tego systemu chmurowego. 

Oczywiście, jak trzeba to sobie taki model językowy można gdzieś uruchomić lokalnie, te rozwiązania się też pojawiają, aczkolwiek mi się wydaje, że to nie do końca będzie dla wszystkich opłacalne, ponieważ trzeba będzie zainwestować w infrastrukturę, która być może nie zawsze się zwróci, będzie stała gdzieś tam nieużywana, to są olbrzymie koszty. 

Tak że według mnie w sposób naturalny bezproblemowo to będzie wyglądać. 

 

Właśnie, jeśli mamy taką możliwość, żeby w architekturze mikroserwisowej faktycznie dołożyć takie rozwiązanie, no to pewnie to jest łatwiejszy wariant. Jeśli mamy możliwość skorzystania z jakiejś usługi w chmurze, to też pewnie znajdziemy jakieś biblioteki, nawet w naszym języku takim niekoniecznie mainstreamowym, które będą w stanie nam to jakoś ładnie opakować i jesteśmy w stanie się też, jakby nie było, poprzez API do tego dostać. 

Powiedziałeś tutaj, że takie on-premise modele będą raczej mniejszością. Czy to znaczy, że one po prostu pod względem kosztowym się nie sprawdzają, czy też może ich utrzymanie jest zbyt czasochłonne, zbyt drogie? Jaka jest według Ciebie główna przyczyna? 

 

Mnie się wydaje, że to zależy, tzn. z punktu widzenia kosztowego wydaje mi się, że najbardziej opłacalne będą takie rozwiązania. Dla takich powiedzmy rozwiązań niezbyt mocno używanych, czy tam okazjonalnie używanych, to będą jakieś rozwiązania serverlessowe, które prawdopodobnie będą najtańsze. Natomiast w praktyce to jest tak, że rzeczywiście, jeśli ktoś będzie chciał budować jakiś system, który będzie obsługiwał bardzo duże obciążenie, czyli np. coś jak chat GPT, to prawdopodobnie i tak wcześniej czy później skończy się na on-premise. 

Ja bym po prostu nie zaczynał nigdy od on-premise, tylko zaczynałbym w cloudzie i ewentualnie, jeśli taka będzie potrzeba, bo tak mi się wydaje, że należy robić. To, co widzę, to co widzimy, to nie tylko ja widzę, to jest to, że w tej chwili cloud providerzy zaczynają bardzo mocno konkurować właśnie na tym poletku generatywnej sztucznej inteligencji. Zaczynają oferować coraz więcej bardzo ciekawych serwisów i my możemy z tego korzystać. 

Próg wejścia jest bardzo niski, będzie dążone do tego, żeby te koszty były zarządzane sensownie, bo są bardzo drogie serwisy, których nie polecam, i są tanie serwisy, od których warto zaczynać. Tak że może rzeczywiście z tym on-premise, bo tutaj to tak, trzeba zainwestować w drogi sprzęt, karty graficzne, płacić za prąd, prąd jest coraz droższy. Jednak takie rozwiązanie serverlessowe o tyle pozwala optymalizować, że jak my w danej chwili tego nie potrzebujemy, ktoś inny może tego użyć w innej części globu i to się jakoś tam biznesowo dopina. 

 

Jasne, ma to sens. Rozmawiamy o generatywnej AI i wykorzystaniu tej technologii do rozwiązań biznesowych. Jak jesteśmy przy tym temacie, to chciałbym Cię zapytać, jaki problem adresuje, jak może biznesom pomagać tak zwany RAG, czyli Retrieval Augmented Generation?

 

Zanim dojdziemy do RAG-a, to co prowadzi nas do RAG-a, to jest takie powszechne odczucie: no dobrze, w czym ten Chat GPT nas zawodzi? On nas zawodzi w kilku aspektach. 

Po pierwsze, zdarza mu się halucynować, co więcej, my musimy to za każdym razem ocenić, że on halucynuje. Czyli ta halucynacja to jest zmyślanie. W sytuacji, w której on nie do końca wie, że nie wie czegoś. Bo jeśli on czegoś rzeczywiście nie wie, to napisze, że nie ma informacji. Ale czasami coś wie, ale wie za mało i zaczyna po prostu zmyślać. Internet jest pełny tego typu zabawnych historyjek. 

Druga rzecz oczywiście, że on ma wiedzę odciętą w pewnym roku. Czyli on nie ma wiedzy z tego roku. I nigdy to nie będzie tak, że będzie on miał wiedzę z tego roku. Ponieważ tę wiedzę należy dotrenować, to jest proces długotrwały, to też może tam wspomnimy, aczkolwiek mówię, nie jestem ekspertem. To są dwie podstawowe informacje, błędy. 

Trzeci błąd jest taki, to jest jednak zewnętrzna firma, zewnętrzny dostawca usług, komunikujemy się z nim poprzez sieć, tam oczywiście jest jakieś szyfrowanie, ale ta firma domyślnie zachowuje historię czatów. I my jako firmy często nie możemy w ogóle korzystać z Chata GPT, jeśli potrzebujemy się pytać w kontekście jakichś dokumentów, które są tajne albo niejawne. I to jest duży problem też dla naszych klientów, którzy tego nie mogą robić, bo to są dokumenty zawierające dane wrażliwe, więc trzeba by sporo czasu poświęcić np. na anonimizację tych danych, żeby można było czata GPT o to odpytywać. 

Narzędzia typu Copilot na przykład, które są bardzo wygodne, one integrują projekt deweloperski bezpośrednio z dużym modelem językowym i pozwalają podpowiadać często bardzo sensowne rzeczy. Problem polega na tym, że Copilot ma dostęp do wszystkich naszych danych w projekcie. I to też często jest w ogóle zabronione umowami z klientami, że ten kod źródłowy gdzieś wycieka.

I jak my możemy to zaadresować? Możemy wziąć i zbudować własny model językowy i go sobie uruchomić. Pamiętamy już, że to, tak jak mówiłem, odpalanie tego on-premise będzie kosztowne i kłopotliwe. Plus wytrenowanie takiego modelu językowego od zera okazuje się, że jest bardzo kosztowne i to są setki milionów dolarów. To nie leży w zasięgu żadnych małych czy średnich firm, nikt się na to nie zdecyduje. Więc my nie możemy, w ogóle w tej chwili ten temat nie istnieje, żeby trenować. 

Więc co my możemy zrobić? My możemy użyć np. modelu językowego, którego ktoś wytrenował i który oferuje, i to się pojawia co tydzień. Co tydzień są modele językowe, które sobie można ściągnąć, uruchomić na laptopie albo po prostu gdzieś uruchomić na cloudzie, czyli na AWSie jest teraz taki serwis AWS Bedrock, tam sobie można taki model zrobić. No dobra, tylko to jest model językowy, z reguły to nie jest Chat GPT, on nie ma takiej wiedzy. W jaki sposób teraz my możemy tę wiedzę mu dostarczyć? 

Są dwie techniki. Pierwsza technika to jest fine tuning, to jest douczanie takiego modelu. Ona też jest kosztowna, ale jest dużo prostsza, ale wymaga jakiejś wiedzy i to polega na tym, że my jesteśmy w stanie przy pomocy odpowiednio nadzorowanego uczenia jakby dostroić taki model językowy do naszych potrzeb. Albo to jest RAg. I RAG jest wspaniałą techniką, gdyż RAG jest techniką, która pracuje jakby na dwóch takich filarach. 

Pierwszy, to jest prompt engineering, o którym już mówiliśmy, bardzo specyficzny. Prompt engineering pozwala poprosić duży model językowy, żeby zawężając się do pewnych danych podanych w kontekście, udzielić odpowiedzi na jakieś pytanie, a dane podane w kontekście my sobie wyszukujemy, korzystając z drugiej cechy dużych modeli językowych, czyli to się wiąże z takim pojęciem embeddings. Chodzi o to, że my, korzystając z modelu językowego, możemy sobie dokonać indeksacji pewnych fragmentów tekstu w języku naturalnym, przekształcić to na wektor wielowymiarowy i użyć wektorowej bazy danych po to, aby poindeksować sobie te fragmenty dokumentów i potem móc je łatwo wyszukiwać. 

To jest kolejna fantastyczna rzecz, o tym się nie mówi, ale my mamy teraz możliwość semantycznego wyszukiwania, czyli my nie wyszukujemy po słowach kluczowych, my wyszukujemy po znaczeniu tekstu. Czyli możemy zadać pytanie i nie znajdziemy podobnych pytań w naszej bazie danych, tylko my być może znajdziemy teksty, które zawierają odpowiedź i użyjemy tego modelu językowego w oparciu na tych tekstach, które doślemy w prompcie do naszego kontekstu i uzyskamy odpowiedź, która okazuje się, że jest bardzo precyzyjna. 

Mało testów jeszcze wykonaliśmy, ale wydaje nam się, że to nie halucynuje. Jak on czegoś nie wie, to on wtedy powie, że nie wie, bo tego nie ma w znalezionym kontekście. On od razu wie, że nie wie. I jesteśmy w stanie podać źródła. To jest coś, czego… Chat GPT nie potrafi zrobić. 

My jesteśmy w stanie wskazać do każdej odpowiedzi fragmenty tekstów, które zostały użyte do udzielenia tej odpowiedzi i dokumenty, które zostały użyte. Możemy sobie poindeksować dowolną ilość dokumentów, dowolną ilość jakichś tam paragrafów czy fragmentów tych dokumentów i jesteśmy w stanie dostarczyć tym informacje. To jest stosunkowo tanim kosztem, bardzo precyzyjne narzędzie, które jeśli dodatkowo użyjemy prywatnego, niezbyt dużego, ale prywatnego modelu językowego, prywatnej bazy danych, tej kontekstowej czy tam semantycznej, to mamy właściwie rozwiązanie, które możemy oferować klientom. 

Prompt engineering pozwala poprosić duży model językowy, żeby zawężając się do pewnych danych podanych w kontekście, udzielić odpowiedzi na jakieś pytanie, a dane podane w kontekście my sobie wyszukujemy, korzystając z drugiej cechy dużych modeli językowych, czyli to się wiąże z takim pojęciem embeddings. Chodzi o to, że my, korzystając z modelu językowego, możemy sobie dokonać indeksacji pewnych fragmentów tekstu w języku naturalnym, przekształcić to na wektor wielowymiarowy i użyć wektorowej bazy danych po to, aby poindeksować sobie te fragmenty dokumentów i potem móc je łatwo wyszukiwać.

 

Ta możliwość znajdowania źródła albo tego miejsca, które powie nam, dlaczego właśnie taka odpowiedź padła, a nie inna, czasem jest po prostu game changerem, prawda? Bo w takich zastosowaniach typu, no nie wiem, sądownictwo, dajmy na to tak, czy wiele innych poważnych, no musimy rozumieć, skąd taka, a nie inna odpowiedź na przykład padła. 

Chciałbym teraz zahaczyć o temat tzw. maintenance’u, czyli utrzymania projektów. W obszarze biznesowym bardzo często mamy do czynienia z aplikacjami, które wiele lat, powiedzmy, działają, są rozwijane, rozszerzane, utrzymywane itd. Mniej więcej wiemy jako IT, jak podejść do tego projektu, jeśli mamy do czynienia z aplikacjami, nazwałbym je tradycyjnymi. Czy to w jakiś sposób się zmienia, jeśli mamy już teraz ten komponent generatywnej sztucznej inteligencji, czy to utrzymanie jakoś pod względem procesowym, technologicznym inaczej wygląda? 

 

Znowu to zależy, której techniki użyjemy, bo jeśli użyjemy techniki RAG, to ja jestem skłonny zaryzykować twierdzenie, że różnic dużych nie ma. Wiadomo, dochodzi kwestia kosztowa, to są zupełnie nowe rzeczy, które są jakoś tam wyceniane, jeśli będziemy używać chmury, to oczywiście to musi być dobrze dobrane do potrzeb, gdyż naprawdę źle dobrane komponenty potrafią wygenerować olbrzymie koszty, więc to musi być monitorowane. 

Natomiast RAG ma tą jedną fantastyczną zaletę, że on nie modyfikuje modelu językowego, czyli model językowy tak naprawdę jest jakąś tam kopią modelu, gdzieś tam serwowaną z jakiegoś repozytorium modeli. My tego tylko używamy, jak przestajemy używać, to wraca niezmienione, jakby nie ma nawet potrzeby takiej, więc te pozostałe rzeczy tak naprawdę to tu się nic nie zmienia. 

Jeśli byśmy używali douczania modelu na przykład, czyli fine tuningu, to powiem szczerze, to już jest poważniejszy temat, gdyż takim modelem trzeba się opiekować. Ja nie mam wiedzy, żeby tutaj mówić dokładnie, o co chodzi, ale wiem, że czymś takim ten model można zepsuć. I to jest coś, czego być może byśmy nie chcieli zrobić. Więc wydaje mi się, że w takim przypadku ta różnica będzie. Będziemy musieli mieć tutaj dodatkowe osoby. Być może jakieś dodatkowe kroki gdzieś tam w tym procesie się muszą pojawić, opieka nad modelem. RAG tutaj jest bezpieczną techniką, żeby zacząć.

 

Zanim przejdziemy do utrzymania, to musimy tę aplikację gdzieś tam stworzyć i wdrożyć. Kto według Ciebie – myślę to oczywiście o pewnych rolach, pewnych odpowiedzialnościach w firmie – jest potrzebny, żeby zbudować, wdrożyć takie rozwiązanie?

 

Tutaj podział, jeśli mówimy o tych rozwiązaniach leżących obecnie w gestii zainteresowania przedsiębiorstw, czyli RAG, Infine Tuning, to powiem tak: jeśli chodzi o RAG, to tutaj znowuż różnic wielkich nie ma, bo to, wiadomo, musimy mieć, musimy mieć ludzi, którzy znają domenę i fajnie by było, żebyśmy tych ludzi zaczęli też szkolić, żeby oni wiedzieli, jakie są te możliwości ukryte, ale to się rozumie samo przez się, że wchodzimy w tę nową tematykę generatywnej sztucznej inteligencji, powinniśmy wszystkich kluczowych pracowników przeszkolić w tym kierunku.

Więc zakładam, że oczywiście jeśli to będzie cloud, to tutaj mamy ludzi zajmujących się cloudem, czyli kwestią bezpieczeństwa, kwestią zarządzania kosztami, co najmniej.

Natomiast jeśli rzeczywiście będziemy mówić o technice, która modyfikuje model językowy,  to  wydaje mi się, że mimo wszystko potrzebujemy specjalistów od machine learningu, potrzebujemy specjalistów często z matematycznym wykształceniem, którzy potrafią takie doszkalanie zaprojektować, którzy potrafią ocenić ryzyko, jakie niesie dla projektu tego typu szkolenie, które potrafią ocenić jakość danych testowych.

Niewątpliwie tutaj będzie zmiana, natomiast tak jak mówię, to jest komponent, czarna skrzynka. Jak już on będzie wytrenowany, to jest czarna skrzynka. Według mnie nie ma różnic. Też się nie musimy tego obawiać. Przeszkolmy się lekko. Bardzo dużo informacji gdzieś tam już jest dostępnych, można sobie poczytać, szkolenia są dostępne. Według mnie business as usual.

 

Powiedziałeś o tym, że zastosowania takiej generatywnej AI gdzieś tam w biznesie itd. to jest temat bardzo świeży, rok, może półtora, de facto wszystko to dzieje się na naszych oczach, można powiedzieć. Czy pomimo tego, że ta branża jest na tyle młoda, można się pokusić o jakieś trendy, o coś, co ma szansę najbardziej się rozwijać w najbliższej przyszłości?

 

Zacznijmy od dołu. Według mnie jeszcze silniej będzie się rozwijać Python jako język programowania, tzn. ja mówię, nie jestem wielkim fanem tego języka, natomiast na to nic nie poradzimy. Jest to język używany powszechnie w tej dziedzinie i tak pozostanie, więc niewątpliwie ten Python będzie się rozwijał. Będzie się rozwijać cloud, będą się rozwijać techniki serverless po to, aby oferować te rozwiązania w możliwie dobrej cenie.

Natomiast jeśli chodzi o, no jeszcze powiedzmy technicznie w ramach clouda, tak jak mówiłem, te serwisy się pojawiają z tygodnia na tydzień, warto to śledzić, jeśli kogoś to interesuje. Pojawiają się coraz to nowsze modele językowe, gdyż teraz autentycznie jest trend taki, żeby odejść od takiego modelu, jaki zaoferował OpenAI, zresztą OpenAI, z tego co słyszymy, zaczyna mieć jakieś tam problemy, żeby odejść od tak monstrualnych modeli językowych, jakim jest GPT, żeby raczej iść w stronę modeli językowych, które są na tyle dobre, że potrafią przetwarzać ten język naturalny, ale które nie posiadają pełnej wiedzy i właśnie ta wiedza może być uzupełniona albo techniką RAG, albo fine tuning.

Więc mi się wydaje, że ten wysyp modeli już obserwujemy, tych modeli będzie coraz więcej, one będą coraz lepsze. Będą miały różne ceny. My już nawet próbujemy robić takie analizy porównawcze tych modeli, które, do czego się nadają, i mi się wydaje, że znajomość różnych modeli językowych, umiejętność ich porównania i wykorzystania efektywnego to jest też trend, który się pojawi. On właściwie zaczyna być już widoczny, więc ja się spodziewam, że jak zwykle, będzie kilku dużych graczy, ale są też, akurat jeśli chodzi o te modele językowe, to są też jacyś średni gracze, którzy wchodzą ze swoimi modelami. Tak że jestem tutaj przekonany, że będzie się dużo działo.

Według mnie jeszcze silniej będzie się rozwijać Python jako język programowania, tzn. ja mówię, nie jestem wielkim fanem tego języka, natomiast na to nic nie poradzimy. Jest to język używany powszechnie w tej dziedzinie i tak pozostanie, więc niewątpliwie ten Python będzie się rozwijał. Będzie się rozwijać cloud, będą się rozwijać techniki serverless po to, aby oferować te rozwiązania w możliwie dobrej cenie.

 

Tak, ta branża zmienia się praktycznie codziennie, jak też zauważyłeś. I właśnie, żeby w niej pracować albo z nią pracować, to trzeba tę wiedzę gdzieś tam na bieżąco uzupełniać, trzeba śledzić trendy.

Z jednej strony jest ta wiedza teoretyczna, która bardzo często jest niezbędna wręcz, żeby takie modele powiedzmy rozwijać, myślę, że potrzebna dla mniejszości pewnie osób, które w tej branży gdzieś tam krążą albo korzystają z tych rozwiązań. Ale dużo bardziej potrzebna może być ta wiedza praktyczna, a tę wiedzę pewnie najlepiej jest czerpać od ludzi, którzy gdzieś już ręce ubrudzili sobie w tym temacie od praktyków. I tutaj pewnie nie ma lepszego sposobu niż samemu się w to zanurzyć albo udać się na wydarzenia branżowe, gdzie możemy posłuchać o tym, jak inni poradzili sobie już z tymi problemami.

I chciałbym Cię poprosić, żebyś zaprosił właśnie słuchaczy na jedno z takich wydarzeń, na których zresztą sam będziesz miał okazję mówić o ciekawym temacie, czyli żebyś zaprosił na kolejny Capgemini Tech Talk.

 

Tak, zapraszam Tech Talk Capgemini, będzie to już trzecia edycja, w tym roku odbędzie się 5 grudnia o godzinie 17, zapraszamy do Hard Rock Cafe we Wrocławiu, na wrocławskim rynku.

Tak, będę tam miał swoje pół godziny, gdzie będę mówił o naszym rozwiązaniu RAG-owym właśnie, gdyż implementujemy RAG-a i gdzie odbędzie się też panel dyskusyjny, na którym będziemy dyskutować rozmaite aspekty związane z generatywną sztuczną inteligencją. Mam nadzieję, że nie tylko techniczne, że poruszymy też aspekty ekonomiczne i społeczne. Zobaczymy. Mam nadzieję, że będzie ciekawie i że tam przyjdziecie tłumnie i wszyscy się będziemy świetnie bawili.

 

Oczywiście, zapraszamy. Dla tych słuchaczy, których zainteresowało to, o czym dzisiaj rozmawialiśmy, z Maciejem, którzy chcieliby poszerzyć swoją wiedzę, podpytać praktyków, jak na co dzień wygląda praca właśnie w tym aspekcie, to jak najbardziej Capgemini Tech Talk, trzecia edycja to idealne miejsce.

W notatce do odcinka oczywiście znajdziecie link, gdzie można sobie o tym wydarzeniu więcej poczytać, znaleźć wszystkie detale.

Dzisiaj chciałbym Ci, Maciej, bardzo podziękować za rozmowę. Moim i Waszym gościem był Maciej Małecki z Capgemini. Rozmawialiśmy o generatywnej AI i zastosowaniu tej technologii w biznesie. Dzięki, Maciej, za rozmowę.

 

Bardzo dziękuję.

 

Powiedz jeszcze na koniec, gdzie możemy Cię znaleźć w internecie, gdzie możemy słuchać i odesłać.

 

Mam swoje konto na GitHubie, które się nazywa MaciejMalecki (bez spacji), tam na tym koncie nie za dużo jest o generatywnej sztucznej inteligencji, gdyż jak tam było wspomniane, jestem koderem niskopoziomowym, więc tam głównie jest kod w assemblerze napisany. Możecie mnie oczywiście znaleźć na LinkedInie standardowo, pod tym samym nazwiskiem.

 

Oczywiście te wszystkie linki się znajdą w opisie. Dzięki, Maciej, jeszcze raz do usłyszenia.

Cześć!

 

Cześć!

 

I to na tyle z tego, co przygotowałem dla Ciebie na dzisiaj. Po więcej wartościowych treści zapraszam Cię do wcześniejszych odcinków. A już teraz, zgodnie z tym, co czujesz, wystaw ocenę, recenzję lub komentarz w aplikacji, której słuchasz lub w social mediach.

Zawsze możesz się ze mną skontaktować pod adresem krzysztof@porozmawiajmyoit.pl lub przez media społecznościowe.

Ja się nazywam Krzysztof Kempiński, a to był odcinek podcastu Porozmawiajmy o IT o generatywnej sztucznej inteligencji w budowaniu rozwiązań biznesowych z perspektywy architekta i programisty.

Zapraszam do kolejnego odcinka już wkrótce.

Cześć!

 

+ Pokaż całą transkrypcję
– Schowaj transkrypcję
mm
Krzysztof Kempiński
krzysztof@porozmawiajmyoit.pl

Jestem ekspertem w branży IT, w której działam od 2005 roku. Zawodowo zajmuję się web-developmentem i zarządzaniem działami IT. Dodatkowo prowadzę podcast, kanał na YouTube i blog programistyczny. Moją misją jest inspirowanie ludzi do poszerzania swoich horyzontów poprzez publikowanie wywiadów o trendach, technologiach i zjawiskach występujących w IT.