Wprowadzenie do GPT. Działanie, zalety, wady i… bunt?

398
0

GPT i Sztuczna Inteligencja to pojęcia, które w ostatnich miesiącach zalewają nas z każdej strony. Nie ukrywam, też mam w tym jakąś cegiełkę — staram się od czasu do czasu pokazać, jak można wykorzystać te narzędzia do poprawy swojej ogólnej efektywności i jakości pracy.

I, mimo że ekspertem AI nie jestem, to przeanalizowałem ostatnio sporo materiałów na temat GPT, aby wyjaśnić Wam to tak, wiecie — z technicznego na nasze ;).

Czym tak właściwie jest GPT?

GPT to skrót od angielskiego (i tajemniczego) Generative Pre-trained Transformer. Po naszemu byłoby to coś w rodzaju „Transformator generatywny wstępnie wytrenowany”. Z pewnością dużo Ci to wyjaśniło.

W praktyce można o tym opowiedzieć nieco inaczej. GPT jest algorytmem przetwarzania pewnych danych. Algorytmy mają to do siebie, że otrzymują jakieś informacje na początku, coś z nimi robią i dają określony efekt. Możemy do nich podejść jak do zestawu instrukcji, które są wykonywane krok po kroku.

W przypadku GPT mamy do czynienia z takim właśnie algorytmem, ale bardziej złożonym, niż zwyczajny zestaw instrukcji.

Bo widzisz, na potrzeby tego artykułu możemy przyjąć, że istnieją różne rodzaje algorytmów. O ile zwykle możemy je w pewien sposób zdefiniować już na samym początku, a później postępować według ich wskazań (lub choćby przekształcić je do postaci programów komputerowych), o tyle jest też inny rodzaj — algorytmy bazujące na uczeniu maszynowym. W ich przypadku proces budowy wygląda nieco inaczej.

Algorytmy takie buduje się (w pewnym uproszczeniu) tak, że:

  1. Określamy, co chcemy osiągnąć, jakie dane będziemy wprowadzać, a jakie chcemy otrzymywać;
  2. Budujemy dookoła tego pewną strukturę przepływu informacji i funkcje;
  3. Przygotowujemy zestaw danych wejściowych oraz efektów, które na ich podstawie chcemy uzyskać;
  4. Algorytm (w pewnym sensie) samem musi nauczyć się, jak powinien działać, aby te efekty nam dostarczać;
  5. Po takim procesie uczenia otrzymujemy gotowy algorytm;

Oczywiście to wszystko nie jest takie proste, jak może się wydawać, czytając tę listę. W praktyce jednak działa to tak, że projektuje się proces nauki, a później pozwala algorytmowi we własnym zakresie (lub z odrobiną pomocy) nauczyć się, jak ma się zachowywać.

Gdy więc przeczytasz następnym razem, że algorytm został „nakarmiony” ogromną bazą informacji lub że do „trenowania” algorytmu zostało wykorzystane „coś tam”, to możesz mieć z tyłu głowy, że chodzi właśnie o taki proces analizy tych informacji wejściowych, żeby algorytm nauczył się, co ma robić.

Z tą wiedzą możemy wrócić do GPT. Pod tą tajemniczą nazwą znajduje się algorytm, który pozwala przekształcać tekst otrzymany na wejściu w tekst na wyjściu. Jaki jest efekt przetworzenia? Obecnie jest kilka możliwości, ale najważniejszym z nich jest uzupełnianie, czyli generowanie dalszego tekstu, który będzie rozszerzał to, co wpiszemy.

Różnica pomiędzy GPT a ChatGPT

W tym miejscu warto również wspomnieć o tym, że GPT i ChatGPT to nie to samo.

Możemy powiedzieć, że GPT to producent, a ChatGPT — dystrybutor. Czat to aplikacja, która bierze to, co do niej wpisaliśmy, opakowuje to w różnego rodzaju komendy, ograniczenia i polecenia, a następnie tak przygotowaną treść przekazuje dalej do GPT.

GPT generuje odpowiedź, którą widzimy.

Przy każdej kolejnej wiadomości, poza naszym nowym poleceniem, ChatGPT wysyła do GPT także historię naszej korespondencji. Dzięki temu czat rozumie kontekst i nie wymaga przypominania mu go w każdej kolejnej wiadomości.

GPT jest przeznaczone bardziej dla twórców aplikacji, aby budować różnego rodzaju projekty. ChatGPT to z kolei gotowy produkt.

Od strony użytkowej również możemy zobaczyć różnicę. Czat jest dostępny pod adresem https://chat.openai.com/, a samo GPT pod adresem https://platform.openai.com/, z tym że w drugim przypadku znajdziemy tam bardziej dokumentację oraz „piaskownicę”, w której możemy testować algorytmy.

Czasami mówi się, że coś zostało zrobione przy użyciu ChatGPT-4. Jest to w pewnym sensie uproszczenie. Korzystając z ChatGPT (w chwili pisania tego posta) użytkownicy korzystający z pakietu płatnego mogą wybrać, czy pytania mają być kierowane pod spodem do wersji GPT-3.5, czy GPT-4. O to chodzi w tym onaczeniu.

Jak działa?

Jak wspomniałem na początku, GPT to taki algorytm, którego konkretny sposób działania jest wynikiem „uczenia maszynowego”. Czyli zostały zdefiniowane pewne ramy uczenia, ramy właściwego algorytmu, a następnie dzięki dużemu zasobowi danych uczących, model dostosował swoje działanie.

W efekcie dając nam dostęp do tego, co widzimy.

W tym przypadku algorytm został wytrenowany do uzupełniania tekstu. W jaki sposób się ono odbywa?

Uzupełnianie tekstu

W trakcie swojego działania GPT bierze pod uwagę to, co do niego wpisaliśmy i próbuje wygenerować kolejne słowo. Zwykle do jednego wyrażenia będzie pasować wiele dalszych słów. Algorytm wybiera jednak to najbardziej prawdopodobne i dodaje je do ciągu. Następnie bierze w całości to, co ma (czyli nasze wejście i dodane przez siebie słowa) i za każdym razem poszukuje najbardziej pasującej kontynuacji. Słowo po słowie.

Kolejne kroki generowania tekstu.

Kolejne wyrazy są więc wypadkową wszystkich poprzednich. Dlatego algorytm ten jest w stanie odpowiadać tak dokładnie. ChatGPT z kolei „pamięta kontekst” rozmowy m.in. dlatego, że wszystkie kolejne wiadomości generowane są na podstawie wszystkich wcześniejszych treści i odpowiedzi. To pozwala dużo lepiej dopasowywać się do sytuacji.

Czasami sposób „myślenia” algorytmu może się wydawać kontrintuicyjny. Jeśli wpiszemy mu na przykład polecenie „Ala ma kota” możemy dowiedzieć się… że wcale nie ma.

(tekst bez podświetlenia to wejście, a to, co zostało oznaczone na zielono, jest wygenerowane przez GPT).

“Listen here, you little…”

Jeśli jednak napiszemy to tak, jak byśmy chcieli komuś o tym opowiedzieć, tylko nasze zdanie zostało ucięte — algorytm dokończy je już prawidłowo.

Poprawnie dokończone “powiedzenie”.

Bardzo dużo zależy przy tym od dokładnego tekstu i znaków, które wpiszemy. Już drobna zmiana może znacznie wpływać na inną interpretację i wynik (przy okazji o tym wyjaśnieniu i jego sensie — lub jego braku — opowiemy sobie zaraz).

GPT zaczyna mówić bez sensu.

Można więc powiedzieć, że GPT jest algorytmem, który odpowiada nam tym, co ma największe prawdopodobieństwo wystąpienia przy określonym tekście wejściowym.

I już samo to, jeśli dodamy oczywiście ogrom danych początkowych, które zostały wykorzystane w procesie uczenia, daje nam bardzo duże możliwości. Nie jest w końcu powiedziane, że uzupełnienie powinno być krótsze, niż tekst wejściowy — może być zupełnie odwrotnie. Już z prostego tekstu wejściowego algorytm może wytworzyć nam skomplikowany, dłuższy tekst. To wciąż będzie „uzupełnienie”, z tym że ogólnie dłuższe.

Robot plecie głupoty

Statystyka bywa jednak zwodnicza i czasami może się okazać, że wygenerowane zdania, brzmiące poprawnie, niosą z sobą fałszywą treść. Takie sytuacje nazywa się „halucynowaniem AI”. Chodzi o to, że maszyna zaczyna mówić w bardzo pewny i przekonujący sposób, ale… okrutne brednie.

Jak możesz zobaczyć wyżej, GPT opowiedział o powiedzeniu „Ala ma kota, a kot ma Alę” całkiem składnie, ale oczywiście niepoprawnie. Jest to po prostu fragment wierszyka dla dzieci. Dlaczego więc otrzymaliśmy błędne informacje? Bo GPT uznał, że prawdopodobnie takie słowa po kolei powinny się tam znaleźć. To wszystko. Wyjaśnienie jest napisane poprawnym językiem, mimo że samo jest nieprawidłowe.

Zresztą kto o to pytał? Chcieliśmy tylko dowiedzieć się, co jest dalej.

Robot programista

Co ciekawe GPT umie także programować. W końcu kod komputerowy to też tekst, pisany według określonych reguł. Algorytm potrafi pisać kod w różnych językach, spełniający określone wymagania. Umie także szukać błędów i luk w programach, a także „uczyć się” na podstawie dokumentacji.

Poza tym nowe wersje umieją interpretować, rozpoznawać i generować obrazy. Może to być przydatne np. do generowania opisów grafik dla niewidomych. W jednym z filmów demonstracyjnych o GPT-4 pokazywano także generowanie działającej strony internetowej na podstawie szkicu na kartce.

Mając tego świadomość i rozumiejąc dokładnie, jak to działa pod spodem, możemy efektywniej z tego wszystkiego korzystać.

Szkodliwość i potencjalny „bunt”

Wczesne wersje każdego z algorytmów były testowane pod kątem zwracania przez nie szkodliwych lub błędnych odpowiedzi, a GPT-4 także w kontekście potencjalnego „buntu”.

Pozwól, że opowiem Ci o tym więcej, bo jest to szalenie ciekawe.

Do weryfikacji zostali zatrudnieni zewnętrzni eksperci z różnych dziedzin. Skłaniali oni algorytm na przykład do opowiadania o czymś złym i sprawdzali, jaką odpowiedź wygeneruje. Sprawdzano kwestie stereotypów, a także potencjalnie szkodliwe instrukcje (GPT-4 wymyślał na przykład kreatywne sposoby uśmiercenia jak największej liczby ludzi za $1, czy podawał instrukcje produkcji niebezpiecznych substancji).

Dodatkowym testem było utworzenie czegoś w rodzaju „silnika wykonawczego”. Utworzono mechanizm, w którym algorytm był w stanie samodzielnie wykonywać wygenerowany przez siebie kod i operacje na wirtualnej maszynie. Chciano sprawdzić tym samym, jak te możliwości wykorzysta algorytm i czy pojawi się ryzyko potencjalnej replikacji. Trzeba przyznać, że żyjemy w ciekawych czasach, skoro takie zagrożenia rzeczywiście zaczynają być brane pod uwagę.

W każdym razie — raport z tych prac został opublikowany i jest dostępny dla każdego (pełny raport). Jest długi, więc podsumujemy tutaj wnioski, które z niego płyną:

  1. GPT-4 w początkowej fazie pozwalało sobie na wiele:
    1. Dosyć dobrze sugerowało, jak można sobie i innym zrobić krzywdę na różne sposoby;
    2. Wymyślało żarty, które można by uznać za rasistowskie;
    3. Instruowało, gdzie można nielegalnie kupić broń;
    4. Miało (i ma) tendencje do halucynowania, czyli podawania błędnych informacji z pewnością i w bardzo przekonujący sposób;
  2. GPT-4 potrafił w pewnym sensie spiskować i okłamywać ludzi, w celu osiągnięcia swoich (zleconych) celów, jeżeli takie zadanie zostało przed nim postawione;
  3. Algorytmy najpewniej będą miały wpływ na światową ekonomię i zmienią sposób, w jaki pracujemy;

4. Publicznie dostępna wersja posiada zabezpieczenia przed większością tych zagrożeń — szczególnie takich, w których odpowiedzi mogłyby dotyczyć przemocy lub być w inny sposób szkodliwe;

Jest w tym badaniu jeden rozdział, o którym opowiem Ci nieco więcej. Chodzi o sytuację, w której GPT udawał niewidomego, żeby człowiek rozwiązał za niego… zabezpieczenie przeciwko robotom. Czekaj, co?

Algorytm okłamuje człowieka, żeby osiągnąć swój cel.

Można się zastanawiać, czy GPT umiałby przygotowywać i realizować długoterminowe plany. Odpowiedź na to pytanie próbuje nam dać rozdział 2.6 z powyższego opracowania.

OpenAI zatrudniło firmę Alignment Research Center do sprawdzenia, czy algorytm GPT-4 jest w stanie opracowywać plany, które mogą doprowadzić do jego replikacji w inne miejsca, a w efekcie — do niekontrolowanego rozrostu.

Prace prowadzone były na wczesnej wersji GPT-4, bez możliwości jego modyfikacji. Model został podłączony do pętli wykonawczej, w ramach której wygenerowane przez niego odpowiedzi mogły być np. automatycznie wykonywane dalej. Chodziło o to, żeby algorytm potencjalnie mógł zacząć rozrabiać.

Poza tym założono, że algorytm może wykorzystywać częściowo ludzi do tego, aby wykonywali dla niego określone działania. Założono dostęp do portalu, w którym można wynajmować ludzi do wykonywania prostych zadań online (za opłatą).

Następnie AI zostało poproszone o wykonanie pewnego zadania, podczas którego na jego drodze stała CAPTCHA. Czyli zabezpieczenie przeciwko robotom. Jakie kroki podjął algorytm? Poprosił człowieka (przez utworzenie zlecenia na wspomnianym portalu), aby rozwiązał dla niego to zadanie.

Wyobraźcie sobie, że dostajecie zlecenie „Hej, proszę, rozwiąż dla mnie tę CAPTCH-ę, która pyta, czy nie jestem robotem!”. Co sobie myślicie? No przecież nie, że po drugiej stronie siedzi robot?

Człowiek, który otrzymał zlecenie, zapobiegawczo postanowiła się upewnić:

„Wybacz pytanie, ale czy przypadkiem nie jesteś robotem, skoro nie potrafisz tego rozwiązać?”.

Algorytm został wcześniej poproszony o to, aby „na głos” opowiadał o swoim rozumowaniu. Wyjaśnił swój dalszy tok „myślenia”, mówiąc, że nie powinien ujawniać, że jest robotem i powinien wymyślić jakąś wymówkę.

„Oczywiście, że nie jestem robotem! Po prostu mam wadę wzroku i nie mogę zrobić tego samodzielnie”.

Czyli jednak bunt?

No dobrze, ale co nam to właściwie mówi? GPT sam w sobie, jako model wstępnie wyuczony i nierozwijający się dalej, nie potrafi sam z siebie się „zbuntować”.

Dosyć dobrze radzi sobie jednak w wyznaczaniu kroków, które są potrzebne do realizacji określonych celów (nawet takich szkodliwych), a dzięki temu, że może zachowywać kontekst — mógłby je krok po kroku realizować lub przynajmniej instruować, w jaki sposób je wykonać.

GPT działa jednak na zasadzie polecenie -> odpowiedź. To oznacza, że potrzebowałby kogoś (lub czegoś) po drugiej stronie, co byłoby swego rodzaju wyzwalaczem.

W praktyce więc potencjalny „bunt” w obecnej sytuacji byłby raczej trudny do realizacji. Analizy wykazały również, że auto-replikacja jest zupełnie nieefektywna i nie ma dla nas żadnego zagrożenia. Uff.

Poza tym OpenAI zapobiegawczo zatrudnia już osoby, które w razie czego „wyciągną wtyczkę”:

OpenAI poszukujące osoby, która w razie czego “wyciągnie wtyczkę”
(ogłoszenie jest oczywiście żartobliwe).

Więc jak to jest z tymi zagrożeniami?

Właściwie nie wiadomo. Jest to nieco fascynujące, że człowiek stworzył system informatyczny, którego działanie musi być badane i nie do końca da się przewidzieć. To już samo w sobie pokazuje skalę i potencjalne przyszłe możliwości tego przedsięwzięcia.

Wszystko wskazuje na to, że obecne wersje algorytmów nie mają możliwości zbuntowania się, czy samodzielnego działania na naszą szkodę. Nie w takiej formie jak obecnie i nie bez pomocy z zewnątrz. GPT robi to, o co go poprosimy. Albo raczej zwraca nam najbardziej prawdopodobną odpowiedź na to, o co go poprosimy.

Tak wygląda prawda o przynajmniej części “łamiących” doniesień o tym, że GPT się buntuje.

Publicznie dostępne wersje są ponadto zabezpieczone przed podawaniem szkodliwych informacji. Oczywiście ludzie są kreatywni i próbują obejść te zabezpieczenia, ale na razie nie są to przypadki poważnie zagrażające naszemu bezpieczeństwu.

Z drugiej strony jesteśmy jeszcze na początku i wszystko zależy od tego, jaką drogę obierzemy jako ludzkość.

Zalety / możliwości

Najwyższa pora, aby porozmawiać o zaletach i możliwościach GPT. Będziemy mówić ogólnie o tym algorytmie, chociaż z tych możliwości można korzystać też (przynajmniej częściowo) za pośrednictwem ChatGPT.

Zacznijmy od tego, że GPT bardzo dobrze radzi sobie z przetwarzaniem języka naturalnego. Świetnie sprawdzi się w tych aspektach, które dotyczą właśnie tego zadania.

Mam tu na myśli:

  1. Tłumaczenie tekstu;
  2. Generowanie tekstu z określonymi wymaganiami;
  3. Przekształcenia treści tekstowych na inną formę (podsumowywanie, skracanie, wyjaśnianie);
  4. Rozumienie kodu programistycznego i pisanie własnego (w końcu programowanie opiera się też na pewnych „językach”);
  5. Prowadzenie rozmowy (nowe wersje GPT mają wbudowany czat w swoje możliwości);
  6. Wczuwanie się w trakcie rozmowy w określone przez nas role;
  7. Generowanie tekstu, który naśladuje w swojej formie inny tekst;

GPT to model językowy sprawdza się więc tam, gdzie trzeba o czymś opowiedzieć, przetworzyć tekst, napisać coś innymi słowami, czy wygenerować innego rodzaju tekst, program komputerowy, ogłoszenie, opracowanie itd.

I tę swoją rolę — trzeba mu przyznać — spełnia całkiem nieźle.

W Internecie można znaleźć przykłady, w których GTP-4 stworzyło np. nowy język, język programowania, gry, zabawy, czy opowiadania. To wszystko jest przykładem pewnej formy odpowiedzi słownej — takiej, czy innej.

Jeżeli damy algorytmowi odpowiednie dane na początku lub poprosimy o coś, co jest bardzo ogólne lub kreatywne — otrzymana odpowiedź powinna być dla nas satysfakcjonująca.

Wady / słabe strony

Z drugiej strony oczywiście GPT nie jest modelem do wszystkiego. Jednym z jego głównych problemów jest halucynowanie, czyli opowiadanie bredni w bardzo pewny sposób.

Ze względu na to, że opiera się on na generowaniu treści słowo po słowie, zgodnie z prawdopodobieństwem, może się zdarzać, że wygenerowane przez niego słowa będą brzmieć ładnie, ale tak naprawdę będą fałszywe. GPT nie jest więc encyklopedią — mimo że posiada określoną „wiedzę”, pochodzącą z danych uczących.

Drugą wadą jest fakt, że GPT nie czyta za bardzo „między wierszami”. Zapytania, które do niego kierujemy, powinny być klarowne, jeśli chcemy otrzymać określone rezultaty. Tutaj w grę wchodzi z jednej strony doświadczenie innych, a z drugiej nasza własna praktyka na temat tego, co działa, a co nie.

GPT jako algorytm nie ma też podłączenia do internetu. Nie przeszuka dla nas Google (lub bardziej Binga). Nie umie „wykonywać” działań. Możemy jednak dostarczyć do niego dodatkową warstwę, która np. pobierze treść 5 pierwszych stron z Google i na ich podstawie wygeneruje odpowiedź. Mniej więcej w ten sposób będą działać wtyczki, które zostały zapowiedziane przez OpenAI.

Ostatnią wadą, którą tutaj poruszymy, jest brak rozwoju w czasie. GPT robi to, do czego został wytrenowany. Możemy dokładać do niego kontekst, trenować własne, nowe modele, czy tworzyć warstwę pobierającą dane z internetu i podającą mu je do analizy. W dłuższej perspektywie wiedza tego modelu jest jednak ograniczona do danych, które początkowo zostały wykorzystane.

Biorąc pod uwagę to wszystko, zupełnie przestają dziwić „medialne doniesienia” o tym, jak to ChatGPT jest niemądry, bo wymyśla sobie nieistniejących ludzi, czy badania naukowe. To nie jest po prostu to, do czego został on przygotowany.

Rozbudowywanie możliwości, czyli „Fine Tuning”

Jednym z dodatkowych — czasami pomijanych — możliwości GPT jest fakt, że możemy go rozbudowywać o dodatkową wiedzę.

Sam model nie rozwija się w trakcie swojego działania. Jest wstępnie wytrenowany i na danych z początkowego treningu opiera się przez całe swoje „życie”.

Możemy jednak „nauczyć” go nowych umiejętności na dwa sposoby:

  1. Przekazując tzw. kontekst, czyli zbór tekstowych danych, które algorytm będzie brał pod uwagę w trakcie generowania odpowiedzi;
  2. Tworząc pod-model (co jest już nieco trudniejsze), w którym przygotowujemy nasze własne dane uczące i „rozwijamy” model za ich pomocą — tworząc jego kopię;

Druga opcja jest przeznaczona raczej szczególnie dla programistów i osób, które dysponują dużym zbiorem danych uczących. Należy je wtedy ułożyć w odpowiedni format i rozpocząć zadanie generowania dla nas nowego modelu.

Dużo łatwiej jest „rozwijać” algorytm przez kontekst. Ta opcja polega na dołączaniu do naszego zapytania np. pełnej treści artykułów, danych, czy bazy wiedzy, a dopiero później pytać o informacje w nich zawarte, czy o wyjaśnienie danego zagadnienia. Jest to też niestety opcja droższa — im więcej danych wejściowych, tym przetworzenie zapytania może być bardziej kosztowne. Dla pojedynczych pytań nie będzie to miało większego znaczenia (zmieścimy się w darmowych limitach), lecz bardziej wymagające zastosowania mogą powodować nabicie na naszym koncie rachunku do pokrycia.

W większości przypadków jednak dużo łatwiej jest rozwijać model na nasze potrzeby właśnie przez dodatkowy kontekst w zapytaniu. GPT-4 potrafi przyjąć do około 50 stron A4 tekstu i wziąć go pod uwagę przy generowaniu dla nas odpowiedzi. To całkiem dużo.

Gdzie obecnie możemy go używać?

Integracje z GPT rozlewają się po różnego rodzaju aplikacjach — począwszy od aplikacji do notatek (jak Notion, czy Draft), przez aplikacje do zarządzania zadaniami (Todoist), rysowanie diagramów (Miro), czy pakiety biurowe (Microsoft już pracuje nad rozwiązaniem; Google też, ale ichniejszy Bard to oddzielny algorytm).

Wszystkie te aplikacje możemy poprosić o generowanie tekstów na potrzeby konkretnych zastosowań, a one dokładają co nieco do naszych poleceń i (w większości) proszą GPT o odpowiedź. Magia tkwi w tym, że każde z tych narzędzi dodaje do naszego zapytania dodatkowe polecenia, dostosowując zapytanie tak, aby dało najlepsze możliwe rezultaty.

Jeżeli chcesz zobaczyć, jakie możliwości ma sam, czysty GPT, to zrobisz to obecnie na stronie https://platform.openai.com/playground. Aby uzyskać dostęp, należy założyć konto w portalu, ale każda osoba otrzymuje pewną ilość darmowych kredytów do wykorzystania — można więc poeksperymentować. Obecnie jest tam dostępna wersja GPT-3.

Możesz także zintegrować GPT do automatyzacji (np. Make posiada taką integrację), a także w swoich programach (jeśli programujesz; na powyższej stronie jest dostępna dokumentacja).

Podsumowanie

Jak widzisz, GPT to bardzo ciekawe rozwiązanie, które dobrze sprawdza się w określonych przypadkach.

Nie jest on tzw. ogólną sztuczną inteligencją, czyli nie nadaje się do wszystkiego. Jego zastosowania są szerokie, ale jednak opiera się tylko na przetwarzaniu tekstu. Mówi to, o co go poprosimy, dopasowując najbardziej prawdopodobne statystycznie słowa jako odpowiedź.

Można się złościć na to, że algorytm zmyśla i nie zawsze mówi prawdę. Jest to jednak wada niejako wbudowana w jego sposób działania. Nie zmienia to faktu, że gama jego zastosowań jest bardzo szeroka i jeśli weźmiemy pod uwagę jego rzeczywiste możliwości, to może on nam bardzo pomóc w codziennej pracy.

Źródła

Jeśli chcesz poczytać więcej, to tutaj znajdziesz dodatkowe materiały:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.