🚨 Ostatni dzień zapisów ze zniżką!
🚨 Zapisy na AI_Devs 3 wystartują wkrótce!
0
dni
0
h
0
m
0
s
Dołącz do listy oczekujących
← Wszystkie posty
5 min read

Dlaczego ChatGPT to jedynie demo możliwości GPT-4?

AI_Devs 2 całkowicie rezygnuje z wykorzystania ChatGPT na rzecz bezpośredniego połączenia z modelami poprzez API. W tym artykule dowiesz się dlaczego.

Adam Gospodarczyk
5 min read

Firma OpenAI w listopadzie 2022 roku udostępniła ChatGPT. Z punktu widzenia użytkownika, była to prosta strona z oknem czatu, umożliwiająca "rozmowę z komputerem", a konkretnie z tzw. dużym modelem językowym. W ten sposób, bariera interakcji z AI spadła niemal do zera, nawet dla osób nietechnicznych. Sam ChatGPT stał się najszybciej zdobywającym popularność produktem, który obecnie przebił tylko Threads od Meta.

Zatem ChatGPT jest interfejsem dla np. GPT-4, dostosowanym do ogółu społeczeństwa. Dość szybko po premierze okazało się, że jakość generowanych odpowiedzi zależy od sposobu pisania instrukcji (tzw. promptów) i to przełożyło się na rozwój obszarów takich jak Prompt Design czy Prompt Engineering. Rozwój tych umiejętności jest pierwszym krokiem do zwiększenia swojej skuteczności posługiwania się dużymi modelami językowymi oraz otworzenia sobie ścieżki do integrowania GPT-4 bezpośrednio z logiką aplikacji!

Jeśli interesuje Cię temat rozwijania swoich umiejętności związanych z projektowaniem promptów, to w szczególności zainteresują Cię strony:

Poza tymi źródłami warto także obserwować osoby takie jak: Andrej Karpathy (OpenAI), Andrew Mayne (former OpenAI), Georgi Gerganov (llama.cpp) czy newsletter Dana Shippera "Chain of Thought" i publikacje z Anthropic Research.

Wyjście poza ChatGPT

Niezaprzeczalnie ChatGPT świetnie sprawdza się w roli pomocnika w pisaniu kodu. Dodatkowa wiedza na temat dużych modeli językowych i projektowania promptów również bardzo tutaj pomaga. Niezależnie jednak od poziomu naszej wiedzy jesteśmy ograniczeni webowym interfejsem, który nie pozwala wyjść poza ramy otwartej w przeglądarce strony.

OpenAI Platform to osobna usługa firmy OpenAI, oferująca m.in. bezpośredni dostęp do modeli za pośrednictwem API. Dzięki niemu, możemy podłączyć modele takie jak GPT-3.5-Turbo czy GPT-4 do swoich aplikacji czy nawet urządzeń.

Istotną różnicą pomiędzy OpenAI Platform, a ChatGPT jest także Polityka Prywatności. W przypadku ChatGPT rozmowy użytkowników mogą być wykorzystane na potrzeby dalszego trenowania modeli, a w przypadku OpenAI API, dane zostają przechowane na okres 30 dni w celu monitorowania ewentualnych nadużyć.

Oczywiście w przypadku zastosowań biznesowych konieczne jest podjęcie dodatkowych kroków, które mogą nawet uwzględniać korzystanie z planów Enterprise czy instancji Microsoft Azure, dedykowanych dla większych organizacji.

Samo nawiązanie połączenia z modelem GPT-4, to kwestia jednego zapytania HTTP, uwzględniającego listę wiadomości konwersacji pomiędzy system|user|assistantChat Completion API). Zatem już na tym etapie widoczna jest zasadnicza przewaga na ChatGPT, czyli możliwość programistycznego kontrolowania przebiegu konwersacji.

!

GPT-4 podłączony do zewnętrznej bazy wiedzy i krótkoterminowa pamięć modelu

Prostym przykładem zastosowania takiej kontroli, może być dynamiczne wczytywanie treści do wiadomości systemowej, która może być wykorzystana jako kontekst na podstawie którego model będzie udzielać odpowiedzi. Określamy to mianem Retrieval-Augmented Generation, w skrócie RAG. Mówiąc ludzkim językiem, chodzi tutaj o połączenie GPT-4 z własną bazą wiedzy.

W związku z tym, że potrzebujemy do tego jedynie API i źródła wiedzy, to taki mechanizm możemy stworzyć w praktycznie dowolnym języku programowania zdolnym do wysyłania zapytań HTTP. Akurat w moim przypadku wybór padł na JavaScript.

Poniższy fragment kodu zawiera tylko trzy istotne elementy:

  • Wczytuje treść pliku memory_md
  • Dodaje ją do do kontekstu konwersacji
  • Łączy się z OpenAI i zwraca odpowiedź

Kilka linii kodu sprawiło, że GPT-4 dowiedział się o moim istnieniu i poprawnie kojarzy moje imię na podstawie nicku.

Duże Modele Językowe powszechnie znane są z tego, że nawet jeżeli nie posiadają konkretnych informacji na wybrany temat, to i tak w niektórych sytuacjach generują odpowiedź niezgodną z prawdą, która brzmi bardzo, bardzo pewnie. Takie zachowanie określa się mianem "halucynacji modelu", a jego obecność praktycznie dyskwalifikuje ich zastosowanie w przypadku krytycznych zadań, oraz wymaga nadzoru człowieka.

Z upływem czasu, nowsze wersje modeli redukują ryzyko wystąpienia takich sytuacji, jednak bez wątpienia jest ono bardzo widoczne, nawet dla stosunkowo prostych zadań. Halucynacje zazwyczaj (nie zawsze) powiązane są z niewystarczającą bazową wiedzą modelu. Nie powinien więc dziwić fakt, że dostarczanie dodatkowego kontekstu, zawierającego istotne dla konwersacji informacje, potrafi znacząco zmniejszyć ryzyko generowania odpowiedzi niezgodnych z prawdą.

Znaczenie obecności zewnętrznych danych można łatwo potwierdzić nawet poprzez wklejenie fragmentu informacji do rozmowy w ChatGPT. Jeśli dodatkowo instrukcja będzie mówiła o tym, aby model przy generowaniu odpowiedzi korzystał wyłącznie z dostarczonego kontekstu, to wzrost jakości generowanej odpowiedzi będzie widoczny natychmiast. Dodatkowym potwierdzeniem jest wpis na temat WebGPT, pokazujący zmianę zachowania modelu w przypadku podłączenia go do Internetu.

Oczywiście w praktyce, dołączenie kontekstu nie jest takie proste. Jednym z powodów jest fakt, że model posiada limit kontekstu dla pojedynczego zapytania. Jeżeli go przekroczymy, zapytanie zostanie odrzucone. Dlatego programistycznie musimy zadbać o to, aby wyszukiwać istotne dla konwersacji fragmenty kontekstu, poprzez zastosowanie hybrydowego wyszukiwania, łączącego powszechnie stosowane silniki takie jak ElasticSearch czy Algolia, oraz bazy wektorowe i tzw. Similarity Search (to rodzaj wyszukiwania semantycznego wykorzystującego tzw. embedding, czyli listę wektorów, opisujących liczbowo znaczenie słów [word-embedding] lub zdań [sentence-embedding]).

JSON jako format odpowiedzi GPT-4 i posługiwanie się narzędziami

Duże Modele Językowe są niczym kameleon. Mogą naśladować znane osoby lub stać się ... generatorem obiektów JSON, czyli formatu wymiany danych, powszechnie stosowanego w zapytaniach HTTP!

Ta prosta koncepcja pozwala na budowanie instrukcji zdolnych do konwertowania danych na format, który możemy programistycznie wykorzystać do połączenia z zewnętrznymi usługami. Poniższy prompt zawiera prostą instrukcję oraz kilka przykładów dobranych w taki sposób, aby podkreślić zachowanie modelu w sytuacjach, w których pozornie użytkownik może oczekiwać odpowiedzi, a nie przekonwertowania wiadomości na obiekt JSON. Jest to tzw. "few-shot prompting", czyli technika polegająca na zaprezentowaniu modelowi oczekiwanego zachowania, za którym ma podążać. Więcej na ten temat można przeczytać w publikacji Language Models are Few-Shot Learners

Format JSON może być zastosowany do praktycznie dowolnej interakcji z dowolnym API. Poniżej znajduje się przykład integracji GPT-4 z aplikacją Todoist. Na podstawie zwykłego polecenia, model samodzielnie decyduje o tym, jaką akcję podjąć i czy ma dodać zadanie, zmodyfikować, czy oznaczyć je jako zakończone.

Przy projektowaniu takich integracji należy zwrócić uwagę na niedeterministyczną naturę modeli oraz fakt, że prompty jedynie sterują zachowaniem modelu. Oznacza to, że nigdy nie mamy pewności, czy model zwróci oczekiwany przez nas rezultat. Coś takiego może sugerować, że podłączanie modelu do kodu aplikacji, która powinna być stabilna i przewidywalna, to bardzo zły pomysł. Jeżeli jednak poznamy lepiej naturę modelu, techniki pracy, obecnie dostępne narzędzia oraz podejmiemy właściwe decyzje projektowe, dojdziemy do punktu w którym obecność GPT-4 w kodzie pozwoli na realizowanie zadań, które programistycznie są trudne lub wprost niemożliwe do wykonania.

Jednym z przykładów zwiększenia kontroli nad zachowaniem modelu obecnego w logice aplikacji, jest zastosowanie wersji gpt-4-0613. Pozwala ona na tzw. Function Calling, dzięki któremu możemy wykorzystać model do wyboru funkcji oraz wygenerowanie ustrukturyzowanych danych, wymaganych do jej uruchomienia. Wystarczy, że z pomocą odpowiedniego schematu opiszemy dostępne funkcje oraz zasady generowania ich parametrów.

Korzystając z Function Calling znacznie zmniejszamy ryzyko wygenerowania danych o nieoczekiwanej strukturze, jednak nadal jakość odpowiedzi będzie zależeć od samego promptu, kontekstu i opisów parametrów.

Pomijając w tej chwili szczegóły dalszej implementacji w aplikacjach, należy podkreślić fakt, że mówimy tutaj o zdolności modelu do posługiwania się narzędziami. Funkcjami mogą być nie tylko konkretne fragmenty kodu, ale nawet dane dostarczone przez zewnętrzne usługi czy np. scenariusze automatyzacji.

Przykładowo scenariusze automatyzacji budowane na platformie make.com (podobnej do Zapier), pozwalają na błyskawiczne budowanie zarówno prototypów, jak i logiki realizującej wybrane fragmenty większego systemu. Stosowanie takich narzędzi nabiera szczególnego sensu w kontekście prywatnym, lub w przypadku konieczności szybkich iteracji produktowych. Możliwość uniknięcia wielu detali implementacyjnych związanych np. z nawiązaniem połączenia OAuth 2.0 czy skorzystanie z webhooków w celu szybkiego zbudowania zdalnej akcji, którą możemy wywołać prostym zapytaniem HTTP, stanowi ogromną przewagę i zwiększa efektywność w wybranych przypadkach.

Programistyczna przewaga

Budowanie aplikacji wykorzystujących obecnie dostępne duże modele językowe, w dużym stopniu sprowadza się do zastosowania praktycznie wszystkich, znanych z dotychczasowego programowania technik. Oznacza to, że osoby, które potrafią już programować, posiadają znaczącą przewagę, ponieważ faktycznie łatwiej można nauczyć się pracy z modelami, niż przechodzić przez cały proces nauki rozwoju oprogramowania. Poniższy wpis Grega Brockmana z OpenAI, wyraźnie to podkreśla.

"ChatGPT Moment" (bo tak potocznie określa się premierę ChatGPT w kontekście całego obszaru AI) miał miejsce zaledwie 11 miesięcy temu. Przez osoby związane z AI od wielu lat, jest uznawany za bardzo wyraźną linię na osi czasu prezentującej rozwój branży. Potwierdza to także slajd z materiału publikowanego przez Uniwersytet Stanford na kanale Stanford Online, obrazujący rozwój mechanizmu atencji stanowiącego kluczowy element Dużych Modeli Językowych.

Nawet w przypadku osób związanych z AI od lat, mówimy o sytuacji oferującej nowe możliwości, nowe techniki pracy, nowe narzędzia, nowe koncepcje i nowe problemy. Do pewnego stopnia nawet trudno jest mówić o ekspertyzie, ze względu na bardzo krótki czas styczności z technologią (lub bardziej, jej nową wersją). Natomiast bez najmniejszego problemu można wskazać osoby oraz całe firmy, które przez ostatnie 11 miesięcy eksplorują możliwości i ograniczenia dużych modeli językowych, stosując je w praktyce do budowy produktów.

AI_Devs 2 — Połącz GPT-4 z logiką aplikacji i automatyzacji

23 października startuje druga edycja AI_Devs, 5-tygodniowego, praktycznego szkolenia z łączenia narzędzi Generative AI (w szczególności modeli OpenAI) z logiką aplikacji oraz narzędziami automatyzacji. Mówimy więc tutaj o bezpośrednim rozszerzeniu wszystkich wymienionych wyżej zagadnień oraz stosowania LLM (eng. Large Language Model) zarówno w celu optymalizacji swojej codziennej pracy i nauki, jak i zastosowań biznesowych.

AI_Devs 2 całkowicie rezygnuje z wykorzystania ChatGPT na rzecz bezpośredniego połączenia z modelami poprzez API. Szkolenie ma formę tzw. kursu kohortowego, a jego główna treść ma formę rozbudowanych wpisów, przeplatanych materiałami wideo, przykładami kodu i praktycznymi zadaniami.

W pierwszej edycji szkolenia wzięło udział 950 osób. Ponad 850 osób dołączyło już do drugiej edycji – zapowiada się grubo ponad 1000!

AI Devs 2 współtworzymy w zespole:

W drugiej edycji dołączą do nas również goście specjalni!

  • Kacper Łukawski (Developer Advocate w Qdrant)
  • Bartek Pucek (CEO Forward Operators AI Lab)
  • Bartek Rozkrut (CTO & Co-founder Edward.ai)

Do 18 października trwa promocja -300 zł, zmniejszająca cenę szkolenia do 1490 zł brutto. Więcej informacji na temat szkolenia, opinie uczestników i uczestniczek oraz szczegółową agendę, znajdziesz na stronie poniżej, zapraszamy! :)

👉 Dołącz teraz do AI_Devs

Medium length heading goes here

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.