Sztuczna inteligencja
Czy duże modele językowe zakończą programowanie?

W zeszłym tygodniu OpenAI osiągnął znaczący kamień milowy, gdy zaprezentowali GPT-4 Turbo na swoim OpenAI DevDay. Jedną z wyróżniających się cech GPT-4 Turbo jest rozszerzona okno kontekstowe o rozmiarze 128 000, co stanowi znaczny skok w porównaniu z GPT-4, który miał okno kontekstowe o rozmiarze 8 000. To ulepszenie umożliwia przetwarzanie tekstu 16 razy większego niż jego poprzednik, co odpowiada około 300 stronom tekstu.
Postęp ten wiąże się z innym znaczącym rozwojem: potencjalnym wpływem na krajobraz startupów SaaS.
OpenAI’s ChatGPT Enterprise, z jego zaawansowanymi funkcjami, stanowi wyzwanie dla wielu startupów SaaS. Te firmy, które oferowały produkty i usługi oparte na ChatGPT lub jego API, teraz stają w obliczu konkurencji ze strony narzędzia o możliwościach na poziomie przedsiębiorstw. Oferta ChatGPT Enterprise, takich jak weryfikacja domeny, SSO i analiza użycia, bezpośrednio pokrywa się z wieloma istniejącymi usługami B2B, potencjalnie zagrażając przetrwaniu tych startupów.
W swoim przemówieniu, CEO OpenAI, Sam Altman, ujawnił kolejny znaczący rozwój: rozszerzenie wiedzy GPT-4 Turbo. W przeciwieństwie do GPT-4, który miał informacje tylko do 2021 roku, GPT-4 Turbo został zaktualizowany o wiedzę do kwietnia 2023 roku, co stanowi znaczny krok w kierunku zwiększenia relewancji i przydatności AI.
ChatGPT Enterprise wyróżnia się funkcjami takimi jak zwiększona bezpieczeństwo i prywatność, szybki dostęp do GPT-4 oraz rozszerzone okno kontekstowe dla dłuższych danych wejściowych. Jego zaawansowane możliwości analizy danych, opcje dostosowywania oraz usunięcie limitów użycia sprawiają, że jest to lepszy wybór niż jego poprzednicy. Jego zdolność do przetwarzania dłuższych danych wejściowych i plików, wraz z nieograniczoną możliwością dostępu do zaawansowanych narzędzi analitycznych, takich jak wcześniej znany Code Interpreter, dodatkowo umacnia jego atrakcyjność, szczególnie wśród firm, które wcześniej były niechętne ze względu na obawy dotyczące bezpieczeństwa danych.
Era ręcznego tworzenia kodu powoli ustępuje miejsca systemom napędzanym przez AI, które są szkolone zamiast programowane, co oznacza fundamentalną zmianę w rozwoju oprogramowania.
Mundane zadania programistyczne mogą wkrótce zostać przypisane do AI, zmniejszając potrzebę głębokiej wiedzy programistycznej. Narzędzia takie jak GitHub’s CoPilot i Replit’s Ghostwriter, które pomagają w programowaniu, są wczesnymi wskaźnikami rosnącej roli AI w programowaniu, sugerując przyszłość, w której AI rozszerzy się poza asystowanie do pełnego zarządzania procesem programowania. Wyobraź sobie powszechny scenariusz, w którym programista zapomni składni odwrócenia listy w danym języku. Zamiast przeszukiwania forów internetowych i artykułów, CoPilot oferuje natychmiastową pomoc, utrzymując programistę skupionego na celu.
Przechodzenie z niskiego kodu do rozwoju napędzanego przez AI
Narzędzia niskiego kodu i bez kodu uproszczają proces programowania, automatyzując tworzenie podstawowych bloków kodu i uwalniając deweloperów, aby skoncentrowali się na kreatywnych aspektach swoich projektów. Ale gdy wkraczamy w tę nową falę AI, krajobraz zmienia się dalej. Prostota interfejsów użytkownika i możliwość generowania kodu za pomocą prostych poleceń, takich jak „Zbuduj dla mnie witrynę, aby zrobić X”, rewolucjonizuje proces.
Wpływ AI na programowanie jest już ogromny. Podobnie jak wczesni naukowcy komputerowi przechodzili od koncentracji na inżynierii elektrycznej do bardziej abstrakcyjnych pojęć, przyszli programiści mogą uznać szczegółowe kodowanie za przestarzałe. Szybki postęp w AI nie ogranicza się do generowania tekstu/kodu. W obszarach takich jak generowanie obrazów, modele dyfuzyjne, takie jak Runway ML, DALL-E 3, pokazują ogromne ulepszenia. Zobacz poniższy tweet Runway, prezentujący ich najnowszą funkcję.
https://twitter.com/runwayml/status/1723033256067489937
Rozszerzając się poza programowanie, wpływ AI na branże kreatywne ma być równie przełomowy. Jeff Katzenberg, potęga w branży filmowej i były przewodniczący Walt Disney Studios, przewiduje, że AI znacznie zmniejszy koszty produkcji filmów animowanych. Według niedawnego artykułu z Bloomberg Katzenberg przewiduje drastyczne 90% zmniejszenie kosztów. Może to obejmować automatyzację pracochłonnych zadań, takich jak wstawianie klatek w tradycyjnej animacji, renderowanie scen i nawet pomoc w procesach kreatywnych, takich jak projektowanie postaci i storyboarding.
Kosztowość AI w kodowaniu
Analiza kosztów zatrudnienia inżyniera oprogramowania:
- Łączna rekompensata: Średnia pensja inżyniera oprogramowania, w tym dodatkowe korzyści w hubach technologicznych, takich jak Dolina Krzemowa lub Seattle, wynosi około 312 000 dolarów rocznie.
Dzienna analiza kosztów:
- Dni robocze w roku: Biorąc pod uwagę, że w roku jest około 260 dni roboczych, dzienny koszt zatrudnienia inżyniera oprogramowania wynosi około 1200 dolarów.
- Wydajność kodu: Zakładając hojną szacunkową liczbę 100 sfinalizowanych, przetestowanych, przeglądanych i zatwierdzonych linii kodu dziennie, ta dzienna wydajność jest podstawą do porównania.
Analiza kosztów korzystania z GPT-3 do generowania kodu:
- Koszt tokena: Koszt korzystania z GPT-3, na czas nagrania, wynosił około 0,02 dolara za każde 1000 tokenów.
- Tokens na linijkę kodu: Przeciętnie linia kodu może zawierać około 10 tokenów.
- Koszt 100 linii kodu: Zatem koszt wygenerowania 100 linii kodu (lub 1000 tokenów) przy użyciu GPT-3 wyniósłby około 0,12 dolara.
Porównawcza analiza:
- Koszt na linijkę kodu (człowiek vs. AI): Porównując koszty, generowanie 100 linii kodu dziennie kosztuje 1200 dolarów, gdy jest wykonywane przez ludzkiego inżyniera oprogramowania, w przeciwieństwie do zaledwie 0,12 dolara przy użyciu GPT-3.
- Współczynnik kosztu: To reprezentuje różnicę w kosztach o czynnik 10 000, przy czym AI jest znacznie tańsze.
Ta analiza wskazuje na ekonomiczny potencjał AI w dziedzinie programowania. Niski koszt kodu wygenerowanego przez AI w porównaniu z wysokimi kosztami ludzkich programistów sugeruje przyszłość, w której AI może stać się preferowaną metodą generowania kodu, szczególnie dla standardowych lub powtarzalnych zadań. Ten przełom może prowadzić do znacznych oszczędności kosztów dla firm i ponownej oceny roli ludzkich programistów, potencjalnie koncentrując ich umiejętności na bardziej złożonych, kreatywnych lub nadzorczych zadaniach, których AI jeszcze nie może wykonać.
Wersatylność ChatGPT rozciąga się na różne konteksty programistyczne, w tym złożone interakcje z frameworkami rozwoju sieciowego. Rozważmy scenariusz, w którym deweloper pracuje z React, popularną biblioteką JavaScript do budowy interfejsów użytkownika. Tradycyjnie zadanie to wymagałoby zagłębienia się w obszerną dokumentację i przykłady dostarczone przez społeczność, zwłaszcza przy pracy z złożonymi komponentami lub zarządzaniem stanem.
Z ChatGPT proces ten staje się uproszczony. Deweloper może po prostu opisać funkcjonalność, którą chce wdrożyć w React, a ChatGPT dostarcza odpowiednie, gotowe do użycia fragmenty kodu. Mogą one obejmować od ustawienia podstawowej struktury komponentu po bardziej zaawansowane funkcje, takie jak zarządzanie stanem za pomocą haków lub integrację z zewnętrznymi API. Poprzez redukcję czasu spędzonego na badaniach i próbach, ChatGPT zwiększa wydajność i przyspiesza rozwój projektu w kontekstach rozwoju sieciowego.
Wyzwania w programowaniu napędzanym przez AI
Podczas gdy AI kontynuuje zmianę krajobrazu programowania, istotne jest rozpoznanie ograniczeń i wyzwań, które pojawiają się wraz z poleganiem wyłącznie na AI do zadań programistycznych. Wyzwania te podkreślają potrzebę zbalansowanego podejścia, które wykorzystuje zalety AI, jednocześnie uznając jego ograniczenia.
- Jakość i utrzymanie kodu: Kod wygenerowany przez AI może być czasem werbośny lub niewydajny, potencjalnie prowadząc do wyzwań związanych z utrzymaniem. Chociaż AI może pisać funkcjonalny kod, zapewnienie, że ten kod przestrzega najlepszych praktyk w zakresie czytelności, wydajności i utrzymania, pozostaje zadaniem dla ludzi.
- Debugowanie i obsługa błędów: Systemy AI mogą generować kod szybko, ale nie zawsze radzą sobie dobrze z debugowaniem lub zrozumieniem subtelnych błędów w istniejącym kodzie. Subtelności debugowania, zwłaszcza w dużych, złożonych systemach, często wymagają ludzkiego zrozumienia i doświadczenia.
- Opieranie się na danych szkoleniowych: Skuteczność AI w programowaniu jest w dużej mierze uzależniona od jakości i zakresu danych szkoleniowych. Jeśli dane szkoleniowe nie zawierają przykładów pewnych błędów, wzorców lub scenariuszy, zdolność AI do radzenia sobie z tymi sytuacjami jest ograniczona.
- Wyzwania etyczne i bezpieczeństwa: Wraz ze wzrostem roli AI w programowaniu pojawiają się obawy etyczne i bezpieczeństwa, zwłaszcza wokół prywatności danych i potencjalnych uprzedzeń w kodzie wygenerowanym przez AI. Zapewnienie odpowiedzialnego rozwoju narzędzi programowania napędzanych przez AI jest kluczowe.
Bilansowanie AI i tradycyjnych umiejętności programistycznych
W przyszłych zespołach programistycznych może pojawić się model hybrydowy. Menadżerowie produktów mogą tłumaczyć wymagania na polecenia dla generatorów kodu AI. Nadzór ludzki może nadal być konieczny do zapewnienia jakości, ale skupi się na weryfikacji i dostosowywaniu wyjść AI. Zmiana ta sugeruje malejący nacisk na tradycyjne zasady programowania, takie jak modularność i abstrakcja, ponieważ kod wygenerowany przez AI nie musi przestrzegać standardów konserwacji ukierunkowanych na ludzi.
W tej nowej erze rola inżynierów i naukowców komputerowych ulegnie znacznej transformacji. Będą oni współpracować z LLM, dostarczając dane szkoleniowe i przykłady, aby osiągnąć zadania, przenosząc focus z intratnych kodowań na strategiczną pracę z modelami AI.
Podstawowa jednostka obliczeniowa przesunie się z tradycyjnych procesorów do ogromnych, wstępnie wytrenowanych modeli LLM, oznaczając odejście od przewidywalnych, statycznych procesów do dynamicznych, adaptacyjnych agentów AI.
Zakres przesunie się od tworzenia i zrozumienia programów do kierowania modelami AI, przedefiniując role naukowców komputerowych i inżynierów oraz zmieniając nasze interakcje z technologią.
Potrzeba ludzkiej perspektywy w kodzie wygenerowanym przez AI
Przyszłość programowania jest mniej związana z kodowaniem, a bardziej z kierowaniem inteligencją, która będzie napędzać nasz świat technologiczny.
Przekonanie, że przetwarzanie języka naturalnego przez AI może w pełni zastąpić precyzję i złożoność formalnych notacji matematycznych i tradycyjnego programowania, jest, co najwyżej, przedwczesne. Przesunięcie w kierunku AI w programowaniu nie eliminuje potrzeby rygoru i precyzji, którą tylko formalne programowanie i umiejętności matematyczne mogą zapewnić.
Ponadto wyzwanie testowania kodu wygenerowanego przez AI na problemy, które nie zostały wcześniej rozwiązane, pozostaje znaczące. Techniki takie jak testowanie oparte na właściwościach wymagają głębokiego zrozumienia programowania, umiejętności, których AI, w swoim obecnym stanie, nie może powielić ani zastąpić.
Podsumowując, chociaż AI obiecuje zautomatyzować wiele aspektów programowania, element ludzki pozostaje kluczowy, zwłaszcza w obszarach wymagających kreatywności, złożonego rozwiązywania problemów i nadzoru etycznego.












