„Sztuczna Inteligencja” automatycznie programująca gry i programy – jak wygenerować swój pierwszy program przy pomocy „AI”
Listopad to dla nas miesiąc „sztucznej inteligencji”, dlatego również takim tematem go zakończymy. Dziś opowiemy sobie, jak skrypty oparte o tzw. „AI” mogą pomóc nam zaprogramować całą grę lub inny program użytkowy. Pokażemy, jak w szybki oraz prosty sposób automatycznie przy ich pomocy zmienić proste polecenia lub mowę ludzką na kod programistyczny, tworzony w znanych językach programowania jak Python, Java, C++, czy językach skryptowych typu JavaScript. Na przykładzie wykonamy sobie kilka prostych gier komputerowych, symulujących znane już wszystkim pozycje oraz małe programy użytkowe – jak kalkulator, czyli coś przez co chyba każdy początkujący programista przechodził.
Na rynku pojawiło się kilka różnych propozycji wspomagających programowanie przy pomocy tzw. „sztucznej inteligencji”. Ja jednak skupię się na jednej, którą poznaliśmy już z wcześniejszych artykułów, czyli OpenAI. Moim zdaniem jest to najbardziej uniwersalny skrypt, pozwalający nam obsłużyć wiele języków, a co najważniejsze, potrafi stworzyć cały kod od podstaw – a nie tylko wspierać przy jego tworzeniu.
Strona projektu dostępna jest pod adresem: https://beta.openai.com/playground.
OpenAI – Automatyczne generowanie kodu aplikacji na podstawie poleceń tekstowych:
OpenAI, moim zdanie chyba najlepsze darmowe API w swojej kategorii, pozwalające (jak wcześniej wspominałem) na w pełni automatyczne generowanie tekstu z wykorzystaniem języka naturalnego, jak i kodu programistycznego. Skrypt stworzony przez OpenAI – organizację utworzoną m.in. przez Elona Muska oraz Sama Altmana w 2015 roku. Oferuje zestaw kilku modeli o różnych możliwościach i przeznaczeniu, w tym także tych skierowanych dla programistów.
Główną zaletą aplikacji jest to, że przede wszystkim jest darmowa. Niestety przed skorzystaniem wymagana jest rejestracja oraz potwierdzenie konta przy pomocy telefonu. W zamian jednak otrzymamy praktycznie nieograniczone narzędzie, w którym jedyne co nas blokuje to fantazja, poziom wyszkolenia tzw. „AI” (na co niestety nie mamy wpływu) oraz ograniczenie do tzw. 4000 tokenów przy jednym generowaniu kodu. Do prostych gier i aplikacji w zupełności wystarczy, a jeżeli nie, to oczywiście kod można generować fragmentarycznie.
Generowanie kodu:
Pierwszą rzeczą, którą musimy wykonać, jest wejście na stronę https://beta.openai.com/playground, a następnie zalogowanie się na niej. Wtedy naszym oczom ukaże się interfejs, w którym musimy zmienić nasz „model” AI na któryś z dostępnych w kategorii Codex. Obecnie jest to code-davinci-002 lub code-cushman-001 – osobiście pracowałem na tym pierwszym. Gdy wybierzemy odpowiedni model, możemy już zacząć „programować”, a właściwie mówić skryptowi co ma dla nas zaprogramować. Polecenia można wprowadzać do programu zarówno przy pomocy klawiatury, jak i głosu. Pamiętać należy jednak, by nie były one zbyt skomplikowane, gdyż w wersji beta jedno generowanie ogranicza się jedynie do 4000 tokenów, co powoduje, że kody nie są zbyt długie oraz ich generowanie może zakończyć się nawet w połowie.
Jeżeli chcemy wykonać prostą aplikację, nie wymagającą dużej ilości kodu, starczy, że podamy skrótowo pełen opis jej funkcjonalności lub nawiążemy do innego znanego programu. Jeżeli np. pragniemy wykonać kopię gry Pong, możemy skonstruować polecenie w następujący sposób „make a pong game in html5 and javascript”. Wskazuje ono zarówno na przedmiot jaki chcemy wykonać, czyli grę Pong, jak i język którego chcemy użyć. W moim przypadku – dla ułatwienia późniejszej wizualizacji, będzie to HTML5 z wykorzystaniem języka skryptowego JavaScript. Po wprowadzeniu odpowiedniej komendy zatwierdzamy ją przyciskiem „Submint”, a już chwilę później pojawi się efekt. Strona błyskawicznie zaproponuje nam odpowiedni kod, który później możemy skopiować i wykorzystać w naszych aplikacjach lub z pozycji samej konsoli od razu go rozwinąć. Pamiętajmy jednak, że generowany w ten sposób kod nie zawsze jest logiczny i czasami jakiś z elementów może nie do końca działać lub wychodzić poza obszar programu. W takim wypadku należy podejść jeszcze raz do generowania lub poprawić polecenie.
Pong [Kliknij by wyświetlić i przetestować lub ukryć program]
Pong [Kliknij by wyświetlić i przetestować lub ukryć program]
(make a pong game in html5 and javascript)
Jeżeli byśmy natomiast chcieli zaprogramować coś większego, możemy po prostu robić to kolejnymi etapami, generując konkretne fragmenty kodu. Chcąc np. stworzyć transmiter przesyłający kod morsa, możemy skonstruować następującą formę zapytania "make a morse code transmitter in html5, javascript and css3". Wskazując tym samym na to, co chcemy wykonać i za pomocą czego. Strona utworzy nam interfejs samego transmitera, który będzie odsyłał do pliku PHP ze skryptem przeprowadzającym transmisję, który to plik osobno możemy sobie zaprojektować używając kolejnego zapytania. Jakby kod był zbyt skomplikowany, aplikacja często wskazuje nam kroki, które mogłyby prowadzić do jego stworzenia. Tak np. zareaguje na zapytanie "make game like a mario in html5 and javascript". Podając nam kolejne kroki do wykonania.
W przypadku samego JavaScriptu możemy skorzystać również z innej funkcji, a dokładnie "Codex JavaScript Sandbox" (https://beta.openai.com/codex-javascript-sandbox) czyli piaskownicy, w której możemy łączyć ze sobą kody JavaScript i następnymi zapytaniami rozwijać już istniejący kod, by stworzyć gotowy produkt. Piaskownica w porównaniu do ogólnego generatora różni się tym, że pozwala nam w czasie rzeczywistym na podgląd efektów generowanego kodu. Generując więc grę, możemy obserwować, jakie zmiany w niej zachodzą oraz je testować.
Projekty tak wykonane można rozwinąć jeszcze np. przez dodanie oprawy graficznej oraz dźwiękowej wygenerowanej przy pomocy innych skryptów "AI" opisanych w poprzednich artykułach. Tworząc jeszcze ciekawsze projekty. Wiadomo, że w ten sposób nie stworzymy wielkiego dzieła odmieniającego cyfryzację kraju, jednak zabawa ta nic nie kosztuje, a można zobaczyć, jak zrobiłby coś za nas komputer!
Brick Breaker [Kliknij by wyświetlić i przetestować lub ukryć program]
Brick Breaker [Kliknij by wyświetlić i przetestować lub ukryć program]
Poniżej załączam kilka innych przykładów wygenerowanych aplikacji, podając zarówno użyte zapytania, wygląd finalny wygenerowanego produktu, jak i sam kod.
Brick Breaker [Kliknij by wyświetlić i przetestować lub ukryć program]
Brick Breaker [Kliknij by wyświetlić i przetestować lub ukryć program]
(make a brick breaker game in html5 and javascript)
Calculator [Kliknij by wyświetlić i przetestować lub ukryć program]
(make a graphical calculator with numeric keyboard in html5 and javascript, max width 400px)
Morse Code Translator [Kliknij by wyświetlić i przetestować lub ukryć program]
(make a morse code translator in html5, javascript and css3)
(make a graphical paint in html5, javascript and css3)
Autor: Daniel 'zoNE' Gabryś