Kodowanie za pomocą chatGPT

Feb 10 2023
Używanie modelu językowego OpenAI do pisania kodu w Pythonie do nauki o danych geograficznych
Niedawno dowiedziałem się o ChatGPT, ai chat bocie opracowanym przez OpenAI, który jest w stanie odpowiadać użytkownikom w niezwykle ludzki sposób. ChatGPT może nie tylko udzielać odpowiedzi za pomocą tekstu, ale także poprosić go o napisanie kodu.

Niedawno dowiedziałem się o ChatGPT , ai chat bocie opracowanym przez OpenAI , który jest w stanie odpowiadać użytkownikom w niezwykle ludzki sposób. ChatGPT może nie tylko udzielać odpowiedzi za pomocą tekstu, ale także poprosić go o napisanie kodu. W rzeczywistości znajomy powiedział mi niedawno, że używała chatGPT do odrabiania pracy domowej na studiach magisterskich z miejskiej nauki o danych, zarówno do pisania esejów, jak i pisania kodu.

Przykład użycia chatGPT do analizy danych, zobacz średni artykuł

Dla kogoś, kto spędza większość czasu pracy na programowaniu, posiadanie czatbota piszącego dla mnie kod brzmi zarówno niesamowicie ekscytująco (pomyśl o wszystkich godzinach, które mógłbym zaoszczędzić!), jak i trochę przerażająco (czy to oznacza, że ​​nie będę miał praca za kilka lat?) . Postanowiłem wypróbować możliwości kodowania czatu GPT, szczególnie do analizy danych przestrzennych w Pythonie. Ten artykuł pokazuje pierwsze wyniki i moje pierwsze przemyślenia.

Na potrzeby tego artykułu poprosiłem Chat GPT o wykonanie typowego zadania, które często wykonuję: przekształcenie wielokąta (może to być kształt kraju, miasta lub gminy) w siatkę komórek, w której można łatwo agregować statystyki.

Zanim zaczniemy, czym właściwie jest Czat GPT? Zadałem to pytanie samemu chatbotowi i oto jego odpowiedź:

GPT (skrót od „Generative Pre-training Transformer”) to model języka opracowany przez OpenAI. Jest to sieć neuronowa przeszkolona do generowania tekstu podobnego do ludzkiego poprzez przewidywanie następnego słowa w sekwencji na podstawie dużego zbioru przykładów. Czat GPT odnosi się do wykorzystania tego modelu w aplikacjach czatowych, gdzie można go wykorzystać do generowania odpowiedzi na wiadomości użytkowników w czasie rzeczywistym. Został zaprojektowany, aby móc prowadzić rozmowę poprzez zrozumienie kontekstu rozmowy i generowanie odpowiednich odpowiedzi.

Zaczynajmy!

Najpierw poprosiłem Chat GPT, aby „utworzył siatkę geodataframe w obrębie wielokąta”, a to była jego odpowiedź:

import geopandas as gpd

# create a polygon
polygon = gpd.GeoDataFrame({'geometry': gpd.GeoSeries([Polygon([(0,0), (0,1), (1,1), (1,0)])])})
# create a grid of geodataframe within the polygon
grid = gpd.gridify(polygon, cell_size=0.1, geometry='Polygon')
# plot the grid
grid.plot()

Istnieje jednak inny moduł Pythona o nazwie gridify, więc być może chatbot został przez to zdezorientowany, patrz link tutaj . Zapomniał również zaimportować shapelyatrybut Polygonprzed jego użyciem, ale to był tylko drobny problem.

Interesującą rzeczą w czacie GPT jest to, że możesz prowadzić z nim ciągłą rozmowę, a on zapamięta twoje poprzednie interakcje. Zadałem więc dodatkowe pytanie, aby spróbować uzyskać działający fragment kodu. Zapytałem więc: „Próbowałem tego kodu, ale wystąpił błąd„ moduł „geopandas” nie ma atrybutu „gridify””. czy możesz to dla mnie naprawić?”, a oto jego odpowiedź:

Podczas gdy bot twierdził, że shapelyma atrybut gridify, dowiedziałem się, że to nieprawda, kiedy uruchomiłem kod. shapelynie ma też atrybutu gridify.

Zadałem więc kolejne pytanie uzupełniające: „Wypróbowałem kod, ale otrzymałem komunikat o błędzie „Brak modułu o nazwie 'shapely.gridify'”. Jakieś inne opcje?

Następnie bot z przekonaniem powiedział mi, że gridify JEST częścią shapelybiblioteki, ale został usunięty w nowszych wersjach — to również nie jest prawda, o ile mi wiadomo.

Napisany przez niego kod wygenerował… kwadratową pętlę, co jest dalekie od tego, czego szukałem. Szczerze mówiąc, wydało mi się to całkiem zabawne.

Druga próba: udało się!

Moja pierwsza rozmowa z czatem GPT najwyraźniej nie szła zbyt dobrze, więc postanowiłem zacząć od nowa i zadać pytanie jaśniej. Zapytałem go „kod Pythona do generowania siatki komórek jako georamki” i oto jego odpowiedź:

import geopandas as gpd
from shapely.geometry import Polygon

# Define the bounds of the grid
min_x, min_y = 0, 0
max_x, max_y = 10, 10

# Define the size of the cells in the grid
cell_width, cell_height = 1, 1

# Define the projection to use
crs = "EPSG:4326"  # WGS84

# Initialize an empty list to store the grid cells
grid_cells = []

# Iterate over the bounds of the grid and create a Polygon object for each cell
for x in range(min_x, max_x, cell_width):
    for y in range(min_y, max_y, cell_height):
        # Define the coordinates of the cell
        cell_coords = [(x, y), (x+cell_width, y), (x+cell_width, y+cell_height), (x, y+cell_height)]
        
        # Create the Polygon object
        cell = Polygon(cell_coords)
        
        # Add the Polygon to the list
        grid_cells.append(cell)

# Create the GeoDataFrame
gdf = gpd.GeoDataFrame(geometry=grid_cells, crs=crs)

# Visualize the grid
gdf.plot()

Wynik wygenerowanego przez chatGPT kodu Pythona do tworzenia siatki komórek

Tak więc czat GPT jest rzeczywiście w stanie napisać prosty kod w Pythonie do nauki o danych przestrzennych, o ile otrzyma dobrze napisane i jasne pytanie.

Końcowe przemyślenia

Ten krótki eksperyment z chatGPT zwraca uwagę na dwie interesujące rzeczy dotyczące chatbota i być może ogólnie AI.

Po pierwsze, widzimy, że sztuczna inteligencja może generować artefakty, które na pierwszy rzut oka mogą wyglądać na uzasadnione, ale w dalszym badaniu okazują się błędne. Typowym przykładem są obrazy twarzy generowane przez sztuczną inteligencję , gdzie twarze na pierwszy rzut oka mogą wyglądać realistycznie, ale po bliższym przyjrzeniu się okazują się mieć dziwne anomalie.

Przykład anomalii w twarzach generowanych przez sztuczną inteligencję, patrz średni artykuł

Podczas pisania naszego kodu czat GPT zrobił coś podobnego, tworząc geopandasmoduł o nazwie gpd.gridify()— moduł, który wydaje się mieć sens, ale tak naprawdę nie istnieje.

Po drugie, celem chatGPT (i być może innych botów AI) nie jest przedstawianie dokładnych informacji, ale raczej tego, co wygląda na dokładne informacje. Zgodnie ze stroną FAQ chatGPT , model jest wyszkolony tak, aby naśladować ludzką mowę w jak największym stopniu, a nie przekazywać nam prawdę.

Strona FAQ czatuGPT

Właśnie dlatego tak pewnie twierdzi, że gridifyjest częścią biblioteki geopandas, a gdy udowodniono, że się myli, twierdzi, że gridifyjest częścią shapelybiblioteki. Żadne z tych stwierdzeń nie jest prawdziwe, ale być może nie o to chodzi w chatGPT.

Co dalej?

Zdecydowanie jestem bardzo podekscytowany możliwościami chatGPT i będę go używał do pracy nad innymi, trudniejszymi zadaniami związanymi z kodowaniem w przyszłości.

Odkryłem również, że jest to całkiem przydatne w generowaniu pomysłów — poprosiłem o pomysły na projekty data science dotyczące zrównoważonego rozwoju + nauki o danych przestrzennych i chociaż nie stworzyło to pomysłów, które były dla mnie nowe, dostarczyło całkiem dobrego przeglądu zrównoważonego rozwoju / przestrzennego świata nauki o danych, co, jak sobie wyobrażam, może być bardzo przydatne dla kogoś nowego w tej dziedzinie.

Oto odpowiedź chatGPT, gdy poprosiłem o pomysły na projekty:

  • Zrównoważone planowanie transportu: opracuj narzędzie, które pomoże planistom zoptymalizować sieci transportu publicznego w celu zmniejszenia emisji gazów cieplarnianych i poprawy dostępności. Może to obejmować analizę wzorców popytu na podróże, integrację ze źródłami danych transportu publicznego oraz wdrożenie algorytmów do projektowania sieci i wyznaczania tras.
  • Zrównoważone planowanie użytkowania gruntów: opracuj narzędzie, które pomaga planistom optymalizować wzorce użytkowania gruntów, aby zminimalizować wpływ na środowisko i zwiększyć zrównoważony rozwój. Może to obejmować analizę wzorców użytkowania gruntów i pokrycia terenu, integrację ze źródłami danych o użytkowaniu gruntów oraz wdrażanie algorytmów alokacji i optymalizacji użytkowania gruntów.
  • Ocena wpływu na środowisko: opracuj narzędzie, które pomaga organizacjom ocenić wpływ ich operacji lub projektów na środowisko. Może to obejmować integrację ze źródłami danych na temat wskaźników środowiskowych, takich jak jakość powietrza i wody, oraz wdrożenie algorytmów oceny i prognozowania wpływu.
  • Wybór lokalizacji energii odnawialnej: opracuj narzędzie, które pomoże organizacjom zidentyfikować odpowiednie lokalizacje do wytwarzania energii odnawialnej, takie jak farmy słoneczne lub wiatrowe. Może to obejmować analizę wzorców nasłonecznienia, prędkości wiatru i innych istotnych czynników oraz integrację ze źródłami danych na temat użytkowania gruntów i topografii.
  • Zrównoważona optymalizacja łańcucha dostaw: opracuj narzędzie, które pomaga organizacjom optymalizować ich łańcuchy dostaw, aby zminimalizować wpływ na środowisko i zwiększyć zrównoważony rozwój. Może to obejmować analizę wzorców przepływów materiałów i energii, integrację ze źródłami danych łańcucha dostaw oraz wdrożenie algorytmów optymalizacji i oceny ryzyka.

Podziękowanie

Chciałbym podziękować moim przyjaciołom Alexeyowi Ilyshkinowi i Alexisowi Oh za podzielenie się ze mną swoimi przemyśleniami na temat chatGPT i AI. Nasze relacje zostały włączone do sekcji „ostateczne przemyślenia” tego artykułu.