W kontekście generatywnej sztucznej inteligencji pojęcie promptu odnosi się do danych wejściowych, które użytkownik przekazuje generatywnemu modelowi. Kiedy mówimy o modelach ChatGPT i OpenAI, prompty oznaczają przede wszystkim fragment tekstu w języku naturalnym lub w języku programowania.

Co to jest prompt i dlaczego jest tak ważny?

 

Prompty są jedynym sposobem, w jaki użytkownicy mogą kontrolować dane generowane przez te modele. W związku z tym nie powinno być zaskoczeniem, że jakość promptów wykorzystywanych w interakcji z systemem sztucznej inteligencji jest kluczowa dla uzyskania odpowiednich rezultatów. Dobrze skonstruowane prompty są kluczem do udanej konwersacji, która obejmuje interesujący nas temat. Natomiast źle sformułowane prompty nie tylko uniemożliwiają przydatną dla użytkownika konwersację, ale mogą również prowadzić do wygenerowania potencjalnie mylących treści. ChatGPT nadal cierpi na pewne ograniczenia, takie jak na przykład zjawisko halucynacji. To właśnie dlatego projektowanie i inżynieria promptów zyskuje coraz większą popularność i staje się niejako osobną dziedziną.

 

Po co deweloperom ChatGPT?

 

Osobiście uważam, że jedną z najbardziej niesamowitych umiejętności ChatGPT jest praca z kodem — kodem dowolnego rodzaju, co należy podkreślić. ChatGPT może działać jako symulator konsoli Pythona, jednak możliwości ChatGPT dla deweloperów wykraczają daleko poza ten przykład. Może on być też asystentem programisty służącym do generowania, objaśniania i debugowania kodu.

 

Wśród najpopularniejszych języków programowania z całą pewnością znajdą się Python, JavaScript, SQL i C#. Natomiast ChatGPT umie posługiwać się znacznie szerszą paletą języków, które może nawet samodzielnie wymienić.

 

ChatGPT wymienia języki programowania, które rozumie i potrafi wygenerować w nich kod

 

Niezależenie od tego, czy jesteś programistą frontendowym, czy zajmujesz się backendem, nieważne, czy jesteś badaczem, czy inżynierem danych, bez względu na to, z jakim językiem programowania pracujesz, ChatGPT może zmienić sposób wykonywania Twojej pracy.

 

Generowanie, optymalizowanie i debugowanie kodu

 

Podstawową umiejętnością ChatGPT, z której możemy łatwo skorzystać, jest generowanie kodu. Ile razy musieliśmy już poszukiwać gotowego kawałka kodu do wykonania jakiegoś zadania? Ile razy musieliśmy mozolnie tworzyć funkcje pomocnicze, przykładowe zbiory danych, schematy SQL itp.? ChatGPT może nas w tym wspomóc, generując potrzebny nam kod na podstawie opisu w języku naturalnym.

 

ChatGPT generuje funkcję w Pythonie zapisującą dane do pliku CSV

 

Jak widać, ChatGPT oprócz wygenerowania samej funkcji podał wyjaśnienie jej działania oraz sposób użycia, wspominając też o konieczności podmiany wartości niektórych zmiennych.

 

Innym przykładem może być tworzenie schematów dla tabel w bazach danych. Wyobraź sobie, że jesteś inżynierem danych i zajmujesz się tworzeniem relacji między dwiema standardowymi tabelami w systemie SAP. Tabele MARA i VBAP przechowują ogólne dane o materiałach i dane dokumentów sprzedaży.

 

Poprośmy zatem ChatGPT o utworzenie schematu dla tych tabel, podając mu jako kontekst nazwy kolumn.

 

ChatGPT generuje schemat SQL dla tabel systemu SAP

 

Należy zauważyć, że ChatGPT był w stanie zdefiniować te relacje, ponieważ zna taksonomię tabel SAP i interpretację nazw kolumn. Jest to rzecz, z którą zmaga się każdy (głównie inżynierowie danych), kto nie zna tej taksonomii. Na potwierdzenie tego poprośmy ChatGPT o zmianę nazw wszystkich tych kolumn na bardziej zrozumiałe dla ludzi.

 

Nazwy kolumn w tabelach SQL zmienione przez ChatGPT

 

Warto zauważyć, że ChatGPT nie tylko przetłumaczył nazwy kolumn, ale także ponownie wygenerował schemat SQL, stosując w nim nowe nazwy.

 

Poprzedni przykład jest świetną metodą skrócenia czasu przygotowywania schematów baz danych w celu dalszej analizy informacji.

 

ChatGPT może być również doskonałym asystentem przy optymalizacji kodu. Pozwala on zaoszczędzić czas pracy lub moc obliczeniową niezbędne do zoptymalizowanych podanych przez nas skryptów. Tę umiejętność można porównać do funkcji pomocy w pisaniu tekstów.

 

Wyobraź sobie, że chcesz utworzyć listę liczb nieparzystych, wybierając je z innej listy. Aby to osiągnąć, napisaliśmy poniższy skrypt w Pythonie (dla celów tego ćwiczenia będę rejestrować czas wykonania skryptu za pomocą bibliotek timeit i datetime):

 


from timeit import default_timer as timer
from datetime import timedelta
start = timer()
elementy = list(range(1_000_000))
dane = []
for el in elementy:
     if not el % 2:
         # Jeżeli jest to liczba nieparzysta
         dane.append(el)
koniec = timer()
print(timedelta(sekundy=koniec-start))

 

Tak napisany skrypt został wykonany w ciągu 0,141185 sekundy. Co się stanie, jeżeli poprosimy ChatGPT o zoptymalizowanie tego skryptu? Odpowiedź znajduje się na zrzucie ekranu.

 

ChatGPT generuje zoptymalizowane wersje skryptów w Pythonie

 

ChatGPT podał mi przykład, jak osiągnąć te same wyniki przy krótszym czasie wykonania. Omówił również alternatywę z jasnym wyjaśnieniem, dlaczego metoda listowa jest szybsza niż pętla for.

 

Spójrzmy na wydajność tego nowego skryptu w porównaniu do poprzedniego:

 

Porównanie czasów wykonania skryptu użytkownika i skryptu ChatGPT

 

 

Jak widać, druga metoda (wygenerowana przez ChatGPT) zapewnia redukcję czasu wykonania o około 47,8%. Oprócz generowania i optymalizacji kodu ChatGPT można też wykorzystać do interpretowania błędów i debugowania kodu. Czasami błędy powstające w programie są trudne do zinterpretowania, dlatego wyjaśnienie podane w języku naturalnym może ułatwić zidentyfikowanie problemu i znalezienie rozwiązania.

 

Na przykład podczas uruchamiania pliku .py w wierszu poleczeń otrzymuję poniższy błąd:

 

 

Sprawdźmy zatem, czy ChatGPT jest w stanie wyjaśnić, na czym polega istota tego błędu. W tym celu wystarczy przekazać modelowi tekst błędu i poprosić o wygenerowanie wyjaśnienia.

 

 

Załóżmy teraz, że napisałam w Pythonie funkcję, która pobiera na wejściu ciąg znaków i zwraca ten sam ciąg, ale ze znakiem podkreślenia umieszczonym za każdą literą.

 

W przykładzie oczekiwałabym, że funkcja zwróci znaki g_p_t_, ale w rzeczywistości otrzymałam jedynie t_:

 

Niepoprawna funkcja w Pythonie

 

Poprośmy zatem ChatGPT o poprawienie tej funkcji.

 

ChatGPT debuguje funkcję w Pythonie

 

Imponujące, prawda? ChatGPT przedstawił poprawną wersję kodu i wyjaśnił, gdzie były błędy i dlaczego doprowadziły do niepoprawnego wyniku. Zobaczmy, czy poprawiony kod rzeczywiście działa.

 

Funkcja po debugowaniu za pomocą ChatGPT

 

Oczywiście, że działa!

 

Te i inne umiejętności ChatGPT związane z obsługą kodu naprawdę mogą zwiększyć Twoją produktywność i skrócić czas wykonywania wielu zadań.

 


 

Tekst opracowano na podstawie książki „Generatywna sztuczna inteligencja z ChatGPT i modelami OpenAI. Podnieś swoją produktywność i innowacyjność za pomocą GPT3 i GPT4”

Jesteś marketingowcem, programistą lub naukowcem? Wznieś swoje projekty na nowy poziom!