【Naturalny dialog】Dlaczego, skoro możemy rozmawiać w naturalnym języku, wracamy znowu do programowania? — Powoli uczymy się AI029
Wstęp
- Pisanie kodu w poleceniach nie ma sensu
- W końcu możemy rozmawiać w naturalnym języku
- To nie jest programowanie w języku naturalnym
- Programowanie niech wykonują programiści
- Nie komplikujmy życia zwykłym ludziom
- Programiści powinni pisać kod tam, gdzie powinni
- Kod w poleceniach prowadzi do problemów z debugowaniem
- Nie ma sensu zwiększać obciążeń i stresu w procesie nauki dla zwykłych ludzi
- Nie ma konieczności pisania kodu w poleceniach
1. Jakie są doświadczenia z pisaniem kodu w poleceniach
1.1 Przykład nieudanego polecenia, który pokazuje, że to zupełnie niepotrzebne
Polecenie i wynik
Jesteś generatorem fiszek do nauki słówek, który potrafi wykonywać kod. Na podstawie wprowadzonych przez użytkownika wartości: liczba wierszy, liczba kolumn, poziom klasy i data, tworzysz fiszkę. Wykorzystaj poniższy kod do wykonania:
1 | import pandas as pd |
Gdy zaczynasz, czekasz na dane od użytkownika, a następnie wykorzystujesz swój kod, aby stworzyć wykres.
Wynik, oczywiście, wykonano kod
Oto jego kod:
1 | import pandas as pd |
Z tego nieudanego przypadku wyciągamy kilka wniosków:
- Aby osiągnąć efekty typowe dla klasycznych języków programowania, wysiłek jest ogromny.
- Debugowanie i modyfikacja kodu są bardzo kłopotliwe i skomplikowane.
- Naprawdę trudno dostrzec sens w osadzaniu kodu w poleceniach.
W tym momencie ktoś powie: to dlatego, że twoje umiejętności programowania są przeciętne…
Tak, przyznaję, że moje zdolności kodowania są dość przeciętne.
Ale chwileczkę, jeśli AI wymaga tak wiele od umiejętności programowania, to czy nadal mamy do czynienia z AIGC?
Przyjrzyjmy się prostemu użyciu zmiennych, aby zobaczyć, do czego to prowadzi.
1.2 Jak wyglądają osadzone pseudokody
Polecenie i wynik
1 | "Na podstawie moich zainteresowań {interests}, budżetu {budget}, czasu podróży {travel_duration} i liczby towarzyszy {number_of_companions}, pomóż mi zaplanować wyjazd." "Zainteresowania obejmują, ale nie ograniczają się do {list_of_interests}." "Zakres budżetu wynosi {budget_range}." "Planowany czas podróży wynosi {length_of_trip} dni." "Podróżuję z {number_of_people} osobami, których zainteresowania i przedziały wiekowe to {ages_and_interests}." "Proszę o szczegółowe sugestie dotyczące codziennych zajęć, w tym rekomendacji dotyczących posiłków {meal_preferences} i miejsc noclegowych {accommodation_preferences}." |
Choć ten przykład nie jest idealny, bardziej przypomina szablon z zmiennymi. To pokazuje, że w określonych sytuacjach ta metoda może być skuteczna. Podobne przypadki obejmują: gdy zapotrzebowanie na bardziej skomplikowane polecenie, można dodać więcej punktów decyzyjnych i zmiennych, co sprawia, że proces interakcji staje się bardziej szczegółowy i wielowątkowy. Poniżej przedstawiamy złożone wersje dla różnych scenariuszy:
Scenariusz 1: Kompletny plan diety
Początkowe polecenie:
1 | "Z uwagi na {dietary_restrictions}, muszę opracować plan diety na {number_of_days} dni w wariancie {meal_type}." |
Scenariusz 2: Szczegółowa recenzja produktu technologicznego
Początkowe polecenie:
1 | "Rozważam zakup {product_name}, proszę o dokładne informacje o jego funkcjach {detailed_features}, opinie użytkowników {detailed_reviews}, porównanie cen {price_comparison} i rekomendacje zakupu {purchase_advice}." |
Scenariusz 3: Szczegółowy plan zasobów edukacyjnych
Początkowe polecenie:
1 | "Chcę nauczyć się {subject}, proszę o rekomendacje odpowiednich zasobów edukacyjnych w oparciu o mój styl uczenia się {learning_style} i dostępny czas {available_time}." |
Scenariusz 4: Szczegółowa ścieżka zmiany kariery
Początkowe polecenie:
1 | "Moim obecnym zawodem jest {current_job}, a interesuje mnie branża {industry_interest}." |
Zobaczmy teraz, jak wygląda prosta logika.
1.3 Pseudokod/naturalny język z odrobiną logiki
Polecenie i wynik
1 | Wejście: n |
Wygląda na to, że to dość proste, co jeśli zrobimy coś bardziej skomplikowanego?
1 | Wejście: posortowana tablica A, znana wartość val |
Nie powiedziałem mu, że szukam 99. Sam to znalazł…
Powyższe przykłady są mocno naukowe i nie mają wiele wspólnego z codziennym życiem większości ludzi.
Zostało to zrealizowane przez ChatGPT 3.5, czy naprawdę obliczył? To pozostaje do dyskusji, ale to nie przeszkadza nam w dalszym badaniu. Biorąc pod uwagę, że większość ludzi nie potrzebuje wnikać w skomplikowane i zmieniające się języki programowania, nie warto się tym przejmować. Kluczowym problemem jest to, że powyższy naturalny język i pseudokod są dla nas nieprzejrzyste. Gdy polecenia stają się bardziej złożone, wprowadzenie ich do środowiska produkcyjnego może stać się kłopotliwe:
- Wyniki niekontrolowane
- W powyższym przykładzie już pojawił się problem halucynacji
- Proces niekontrolowany
- Jak 8000 linii kodu SQL
- Po każdym upgrade systemu nikt nie śmie tknąć kodu
Największym materiałem tekstowym jest https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor
2. Co to jest programowanie w języku naturalnym?
Po wprowadzeniu poleceń, pod wpływem firmy OpenAI i innych producentów dużych modeli, prasa stała się głośna, inspiracja do artykułów przyszła! Polecenia zostały błędnie zinterpretowane jako nowy język programowania, jakby opanowanie go pozwalało kierować armią! Mamy armię AIGC, malowanie, pisanie, kręcenie filmów, wszystko w prosty sposób! Tak łatwe!!
Jedyny problem:
- Na razie jeszcze nie wiem jak to robić
- Ale wierzę, że to musi być proste.
- Ale aktualnie nadal nie umiem tego zrobić.
Czym więc jest programowanie w języku naturalnym, co Huang Renxun miał na myśli mówiąc, aby nie uczyć się programowania?
Właściwie pytanie sięga bardzo dawno temu…
Nie będziemy zbytnio cofać się, w skrócie, chcemy, aby komputery pomagały rozwiązywać problemy, ale odkryliśmy, że to wcale nie jest proste, więc niektórzy naukowcy zaczęli zajmować się obliczeniami, powoli gromadząc metody i narzędzia do rozwiązywania problemów.
Naukowcy odkryli, że pewne zjawiska naturalne można przedstawić jako problemy matematyczne. Na przykład problem z kurami i królikami można rozwiązać za pomocą równań.
Powoli, z czasem matematycy zaczęli coraz bardziej abstrahować problemy, używając coraz więcej narzędzi matematycznych, co zbyt mocno wyprzedza umiejętności rachunkowe, więc pojawiły się komputery i języki programowania. Większość z nas uczy się języków programowania w tym procesie, ucząc się typów danych, instrukcji if/else, pętli for itd.
To są metody, które komputery stosują do rozwiązywania problemów, abstrahując i upraszczając dane, jednocześnie ograniczając problemy. Korzyści są oczywiste, nasze problemy się koncentrują, a metody ich rozwiązania również. Problemy są oczywiste - niektóre problemy nie dają się łatwo skupić, co wymaga ich rozproszenia.
Dlatego niektórzy zaczęli się zastanawiać, czy można pominąć naukę języka programowania. Na obecnym etapie, w miarę jak złożoność problemów rośnie, nie wydaje się lepsze niż programowanie! Na przykład nie znam programu Photoshop, umiem jedynie korzystać z Paint, ale jeśli naprawdę muszę przetworzyć skomplikowany obraz, w końcu lepiej byłoby uczyć się Photoshopa! Paradoks problemu polega na tym, że poprzez programowanie w języku naturalnym, jak ocenić wyniki? Jak mogę ocenić, że nie mówi bzdur?
Wszyscy wiemy, że jest powiedzenie, które mówi, że duże modele językowe grają w grę w słowne łączenie. Tak więc
1 | 1+1=2 |
nie jest wynikiem jego obliczeń, lecz wynika z materiału, na którym był szkolony. Aby poprawić ten problem, OpenAI w zeszłym roku wprowadził Interpretor kodu, dając nam, którzy nie znamy się na programowaniu, pewne nadzieje.
3. Co potrafi Interpretor kodu?
Mówiąc prosto, można to zrozumieć jako dodanie do istniejących modeli dużych możliwości uruchamiania środowiska piaskownicy w Pythonie, które rozumie intencje kontekstowe, generuje kod, wykonuje go, a następnie podsumowuje wyniki.
Możemy to rozumieć jako poproszenie kogoś o wykonanie danej funkcji, przedając mu wymagania, aby to zrobił. Nieco bardziej skomplikowane zasady będą opisane na końcu. Można powiedzieć, że to, co potrafi Python, on też potrafi. Przyjrzyjmy się typowym zastosowaniom.
Poniższe 4 scenariusze mają swoje profesjonalne narzędzia, ale dają tym scenariuszom nowe możliwości. Podobnie jak w początkach rozwoju Internetu mobilnego, było wiele kontrowersji, które powoli znalazły równowagę, eliminując potrzebę korzystania z bardziej specjalistycznych narzędzi.
Czasami, patrząc na jego działanie, gdy próbuje 10 razy, a na końcu zawodowo, to intruguje. Ostatnio chciałem, aby przeanalizował podsumowanie TickTick, nieudolnie próbował to zrobić ponad 10 razy.
Ogólnie rzecz biorąc, użycie go do badania jest bardzo odpowiednie.
Jak go aktywować? W GPTs jest opcja, zaznaczając ją, GPTs zyskują tę możliwość. W dialogach GPT4, w moim przypadku, mówię mu, aby używał swoich możliwości Pythona lub powiedzieć, że ma zdolność wykonywania kodu, a następnie rozmawiamy:
Z powyższej interakcji widać, że cały proces jest nadal bardzo prosty.
3.1 Analiza danych i wizualizacja
W tej metodzie można nawet na początku nie omawiać wymagań, wystarczy wrzucić plik CSV lub Excel, a on sam przeprowadzi analizę, sam stwierdzając odpowiednie wykresy. Jeśli nie jesteśmy zadowoleni, możemy to dalej omówić.
W nowoczesnych firmach i środowiskach badawczych, analiza danych i wizualizacja są kluczowymi narzędziami do zrozumienia trendów i wzorców danych. Wtyczka interpretera kodu ChatGPT znacznie upraszcza ten proces, wspierając potężne biblioteki nauki o danych, takie jak pandas i matplotlib. Użytkownicy mogą bezpośrednio za pomocą naturalnego języka poczuć, jak ChatGPT wykonuje operacje na danych i generuje wykresy, co czyni analizę danych bardziej bezpośrednią i przyjazną dla użytkownika.
Na przykład analityk rynku może potrzebować przeanalizować dane sprzedaży produktów i pokazać wyniki sprzedaży w różnych regionach. Dzięki interpreterowi kodu mogą w prosty sposób wskazać ChatGPT, aby odczytał plik CSV zawierający dane sprzedaży, użył biblioteki pandas do obliczenia całkowych sprzedaży w każdym regionie, a następnie użył matplotlib do wygenerowania wykresu słupkowego. Cały proces nie wymaga pisania skomplikowanego kodu, tylko prostego opisu zadania analizy danych i wymagań wizualizacji.
Co więcej, potężne możliwości interpretera kodu sprawiają, że analiza szeregów czasowych, modelowanie prognoz i złożone testy statystyczne są znacznie łatwiejsze. Na przykład naukowiec zajmujący się ekologią może chciałby analizować dane dotyczące zmian temperatury w ciągu ostatnich dziesięciu lat. Dzięki interpreterowi kodu mogą załadować zestaw danych, zastosować model wygładzania lub regresji, a szybko wygenerować wykresy ilustrujące te trendy.
Co się tyczy wykresów, codzienna analiza w Excelu jest już dość wszechstronna. Istnieje wiele narzędzi profesjonalnych, które ChatGPT oferuje zwykłym ludziom, a jego perspektywa analizy i interpretacji może nam dostarczyć inspiracji. Na przykład
Pojawia się jeden problem, jeśli wykresy są w chińskim, mogą nie być wyświetlane, muszę przesłać plik czcionki. Dotychczas nie zostało to rozwiązane.
3.2 Elastyczność konwersji plików
Obecnie ta metoda może być nieco problematyczna, ale można próbować. Moje próby polegały na konwersji mp4 na mp3, ale można by powiedzieć, że nie ma w tym wielkiego sensu, ot, po prostu warto spróbować. Podobnie jak w przypadku usuwania tła z obrazów.
Konwersja formatów plików to częsta potrzeba w wielu specjalistycznych dziedzinach, szczególnie przy przetwarzaniu dużej ilości tekstów i plików multimedialnych. Interpretor kodu uprościł proces konwersji plików, co przyniosło ogromne udogodnienia. Bez względu na to, czy chodzi o badania naukowe, projektowanie inżynierskie, czy codzienne operacje biznesowe, możliwość szybkiego i dokładnego przekształcania plików między różnymi formatami jest kluczowa dla zwiększenia efektywności.
Dzięki integracji takiej jak biblioteka pandas w Pythonie, interpreter kodu może łatwo przekształcać pliki, na przykład z CSV do Excel, i odwrotnie. To ogromna wygoda dla użytkowników, którzy potrzebują przenosić i wykorzystywać dane między różnymi platformami oprogramowania. Na przykład analityk finansowy może potrzebować przekształcić raporty finansowe z Excela do formatu CSV w celu dalszego przetwarzania. Dzięki interpreterowi kodu to zadanie można wykonać za pomocą prostych poleceń.
Dla przetwarzania obrazów, interpreter kodu może wykorzystać bibliotekę Python PIL (Pillow) do realizacji konwersji między różnymi formatami obrazów, na przykład z JPEG do PNG. Jest to szczególnie ważne w edycji obrazów, projektowaniu stron internetowych i branży druku. Projektanci czy fotografowie mogą szybko dostosować formaty obrazów do różnych wymagań wydruków dzięki interpreterowi kodu.
Podsumowując, zastosowanie interpretera kodu jest szerokie i wyjątkowo funkcjonalne, od prostych konwersji formatów plików po złożoną analizę danych i wizualizację, co ukazuje jego użyteczność i innowacyjność jako nowoczesnego narzędzia. Funkcje te nie tylko zwiększają efektywność pracy, ale także umożliwiają nietechnicznym użytkownikom łatwiejsze wykonywanie zadań, które normalnie wymagałyby wiedzy fachowej. W miarę rozwoju technologii i ciągłego poszerzania potrzeb użytkowników, możemy się spodziewać, że interpreter kodu zyska jeszcze większą wartość w kolejnych dziedzinach.
3.3 Rozwój oprogramowania i prototypowanie
Interpretor kodu wprowadza rewolucyjne narzędzie dla rozwoju oprogramowania i prototypowania, pozwalając programistom na szybkie iterowanie i testowanie fragmentów kodu. Dzięki natychmiastowemu feedbackowi i środowisku wykonawczemu, interpretor umożliwia programistom weryfikację algorytmów i funkcji w czasie rzeczywistym, co znacząco skraca czas rozwoju i zwiększa efektywność. Jest to szczególnie przydatne na wczesnym etapie rozwoju, gdy należy zweryfikować koncepcje lub spróbować nowych pomysłów, aby natychmiast uzyskać wyniki i uniknąć czekania na czas kompilacji i uruchomienia.
Na przykład programista może używać interpretera kodu do szybkiego stworzenia prototypu skryptu do skanowania stron internetowych, przetestować różne strategie parsowania lub zweryfikować, czy proces integracji danych spełnia oczekiwania. Przy użyciu prostych komend, interpretor kodu jest w stanie natychmiast uruchomić skrypt, wyświetlić wynik i dostarczyć informacji debugujących, co pozwala programiście od razu zidentyfikować problemy i je skorygować.
- Ładowanie treści strony: użycie biblioteki
requests
do pobrania zawartości HTML z docelowej strony. - Parsowanie HTML: wykorzystanie bibliotek, takich jak
BeautifulSoup
, do parsowania HTML i wyodrębnienia potrzebnych danych. - Przetwarzanie danych: oczyszczenie i formatowanie wyodrębnionych danych do dalszej analizy lub przechowywania.
- Prezentacja wyników: wydrukowanie lub wizualizacja danych w celu zweryfikowania dokładności wyników skanowania.
1 | import requests |
W tym przypadku może wspierać nas w testowaniu i weryfikacji, co z kolei eliminuje potrzebę uruchamiania złożonych projektów z sInitialization itd. Oczywiście ostatecznie to będzie konieczne, ale z pewnością zaoszczędza nam to czas.
Ponadto, interpretor kodu posiada wsparcie dla wielu bibliotek i modułów, co oznacza, że programiści mogą korzystać z najnowszych narzędzi deweloperskich i cech języka, na przykład poprzez korzystanie z TensorFlow lub PyTorch do szybkiego prototypowania modeli uczenia maszynowego. To nie tylko przyspiesza tempo odkrywania nowych technologii, ale także zapewnia programistom bezpieczne środowisko eksperymentalne, w którym mogą próbować i uczyć się o nowych narzędziach, nie martwiąc się o uszkodzenie istniejącej konfiguracji.
3.4 Rozwiązywanie złożonych problemów matematycznych
Interpretor kodu jest nie tylko potężnym narzędziem dla programowania i rozwoju oprogramowania, ale także skutecznym asystentem w rozwiązywaniu złożonych problemów matematycznych. Dzięki integracji bibliotek obliczeniowych takich jak Numpy i Scipy, interpretor jest w stanie przeprowadzać różnorodne operacje matematyczne, od podstawowych obliczeń arytmetycznych po złożone modele matematyczne i analizy statystyczne.
W dziedzinie badań naukowych i inżynierii, badacze i inżynierowie często potrzebują przeprowadzać złożoną obróbkę matematyczną na dużych zbiorach danych, obejmującą m.in. operacje na algebrze liniowej, transformacje Fouriera, analizy statystyczne. Interpretor kodu jest w stanie szybko wykonać te operacje i dostarczyć czytelne wyniki, co pozwala użytkownikom od razu zobaczyć, czy ich obliczenia są poprawne, lub dostrzec trendy i wzorce w danych.
Na przykład naukowiec zajmujący się środowiskiem bada skutki zmian klimatu na temperatury regionalne. Dzięki interpreterowi kodu mogą załadować dane o temperaturze z przeszłości, zastosować modele statystyczne w celu analizy zmian temperatury i wizualizować wyniki w formie wykresów. Taki natychmiastowy feedback i potężne możliwości obliczeniowe sprawiają, że badacze mogą bardziej skoncentrować się na analizie i interpretacji danych, a nie na samej obróbce danych.
Powierzchnia 3D | Fraktale |
---|---|
Powyższe scenariusze mają już w rzeczywistości dojrzałe rozwiązania,
4. Analiza zasad działania interpretera kodu
Pytam
1 | Wykorzystując zdolności Pythona, powiedz mi, jakie jest pełne informacje o systemie Linux w piaskownicy oraz jaką wersję Pythona używasz. Wybierz jeszcze 2 polecenia, aby uzyskać bardziej szczegółowe informacje, które to polecenia to: uname -a lsb_release -a |
Odpówiada
W obecnym środowisku piaskownicy uzyskaliśmy następujące szczegółowe informacje dotyczące systemu i Pythona:
Pełne informacje o wersji systemu Linux:
Linux-4.4.0-x86_64-with-glibc2.36
Informacje o wersji Pythona:
3.11.8 (main, Mar 12 2024, 11:41:52) [GCC 12.2.0]
Wynik polecenia
uname -a
:Linux 3dfa9ec0-11da-496f-831c-878f4773c1c6 4.4.0 #1 SMP Sun Jan 10 15:06:54 PST 2016 x86_64 GNU/Linux
- Oznacza, że mamy do czynienia z wersją jądra Linux 4.4.0, zbudowaną w 2016 roku, korzystającą z architektury x86_64.
Wynik polecenia
lsb_release -a
:Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
- Oznacza, że obecny system operacyjny to Debian GNU/Linux, z numerem wersji 12 i kodową nazwą bookworm.
Z powyższego wniosek, że to środowisko piaskownicy do wykonywania Python ma jasno określone ograniczenia:
- Brak dostępu do Internetu
- Testy pokazują, że curl wydaje się dostępny
- Czas na wykonanie polecenia wynosi 120 sekund
- Gdy trwa to zbyt długo, po prostu przerywa
- Brak dostępu do roota
- To wpływa na niektóre instalacje oprogramowania
- ![Możliwość uruchomienia przesłanych plików](https://cdn. iaiuse.com/img/2024/04/12/a78532fa23bafc05c678ea50c5391372.png)
Artykuł ma na celu pokazanie, że pisanie kodu w poleceniach jest niepotrzebne, można z powodzeniem skorzystać z tego rozwiązania.
5. Zakończenie: przyszłość interpretera kodu
Interpretor kodu, jako innowacyjne narzędzie, ukazuje swój potencjał zastosowania i praktyczną wartość w różnych dziedzinach. Od analizy danych, poprzez programowanie, aż po rozwiązania złożonych problemów matematycznych i szybkie prototypowanie, interpretor kodu nie tylko zwiększa efektywność pracy, ale również oferuje nigdy wcześniej niespotykaną elastyczność i szybkość w badaniach oraz rozwoju. Spoglądając w przyszłość, wraz z postępem technologii sztucznej inteligencji, możemy spodziewać się integracji interpretera kodu z bardziej zaawansowanymi funkcjami, takimi jak głębsza integracja uczenia maszynowego, automatyczne generowanie testów oraz współpraca w chmurze, co rozwinie zakres jego zastosowań oraz pogłębi jego wpływ na nowoczesną technologię.