Codierung mit chatGPT

Feb 10 2023
Verwendung des Sprachmodells von OpenAI zum Schreiben von Python-Code für die Geodatenwissenschaft
Kürzlich habe ich von ChatGPT erfahren, einem von OpenAI entwickelten KI-Chatbot, der in der Lage ist, auf bemerkenswert menschliche Weise auf Benutzer zu reagieren. chatGPT kann nicht nur Antworten per Text geben, Sie können es auch bitten, Code zu schreiben.

Kürzlich habe ich von ChatGPT erfahren , einem von OpenAI entwickelten KI-Chatbot , der in der Lage ist, auf bemerkenswert menschliche Weise auf Benutzer zu reagieren. chatGPT kann nicht nur Antworten per Text geben, Sie können es auch bitten, Code zu schreiben. Tatsächlich erzählte mir kürzlich eine Bekannte, dass sie chatGPT verwendet habe, um einige ihrer Hausaufgaben für ihren Master in Urban Data Science zu machen, sowohl zum Schreiben von Aufsätzen als auch zum Schreiben von Code.

Ein Beispiel für die Verwendung von chatGPT für die Datenwissenschaft finden Sie im mittleren Artikel

Als jemand, der die meiste Zeit seiner Arbeitszeit mit dem Programmieren verbringt, klingt es für mich sowohl unglaublich aufregend (denken Sie an all die Stunden, die ich sparen könnte!) als auch ein wenig beängstigend (bedeutet das, dass ich keine Zeit mehr habe, wenn ich einen Chatbot habe, der Code für mich schreibt). Job in ein paar Jahren?) . Ich beschloss, die Codierungsfunktionen von Chat GPT auszuprobieren, insbesondere für die räumliche Datenanalyse mit Python. Dieser Artikel zeigt einige erste Ergebnisse und meine ersten Gedanken.

Für diesen Artikel habe ich Chat GPT gebeten, eine typische Aufgabe zu erledigen, die ich oft erledigen muss: ein Polygon (z. B. die Form eines Landes, einer Stadt oder einer Gemeinde) in ein Zellenraster umzuwandeln, in dem Statistiken leicht aggregiert werden können.

Bevor wir beginnen: Was ist Chat GPT eigentlich? Ich habe diese Frage dem Chatbot selbst gestellt und dies ist seine Antwort:

GPT (kurz für „Generative Pre-training Transformer“) ist eine Art Sprachmodell, das von OpenAI entwickelt wurde. Es handelt sich um ein neuronales Netzwerk, das darauf trainiert ist, menschenähnlichen Text zu generieren, indem es anhand eines großen Beispieldatensatzes das nächste Wort in einer Sequenz vorhersagt. Unter Chat-GPT versteht man die Verwendung dieses Modells in Chat-Anwendungen, wo damit in Echtzeit Antworten auf Benutzernachrichten generiert werden können. Es soll in der Lage sein, ein Gespräch fortzuführen, indem es den Kontext des Gesprächs versteht und entsprechende Antworten generiert.

Lasst uns beginnen!

Zuerst habe ich Chat GPT gefragt: „Erstellen Sie ein Geodatenrahmen-Gitter innerhalb eines Polygons“, und dies war die Antwort:

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()

Es gibt jedoch ein anderes Python-Modul namens gridify, sodass der Chatbot möglicherweise dadurch verwirrt wurde, siehe Link hier . shapelyAußerdem wurde vergessen, das Attribut vor der Verwendung zu importieren Polygon, aber das war nur ein kleines Problem.

Das Interessante an Chat-GPT ist, dass Sie damit eine kontinuierliche Unterhaltung führen können und es sich an Ihre vorherigen Interaktionen erinnert. Deshalb habe ich eine Folgefrage gestellt, um zu versuchen, einen funktionierenden Code zu erhalten. Also fragte ich: „Ich habe diesen Code ausprobiert, aber die Fehlermeldung „Modul ‚geopandas‘ hat kein Attribut ‚gridify‘“ erhalten.“ Können Sie das für mich beheben?“, und dies war die Antwort:

Während der Bot behauptete, dass er shapelydas Attribut habe gridify, stellte ich fest, dass das nicht stimmte, als ich den Code ausführte. shapelyhat das Attribut auch nicht gridify.

Also stellte ich eine weitere Folgefrage: „Ich habe den Code ausprobiert, aber die Fehlermeldung „Kein Modul namens ‚shapely.gridify‘“ erhalten.“ Irgendwelche anderen Optionen?“

Der Bot erzählte mir dann selbstbewusst, dass es Teil der Bibliothek gridify seishapely , aber in neueren Versionen entfernt wurde – das stimmt meines Wissens auch nicht.

Der von ihm geschriebene Code erzeugte … eine quadratische Schleife, die weit von dem entfernt ist, was ich gesucht habe. Ehrlich gesagt fand ich es ziemlich urkomisch.

Zweiter Versuch: Es hat funktioniert!

Mein erstes Gespräch mit Chat GPT verlief offensichtlich nicht sehr gut, also beschloss ich, noch einmal von vorne zu beginnen und meine Frage klarer zu stellen. Ich habe es gefragt: „Python-Code zum Generieren eines Zellengitters als Geodatenrahmen“, und hier ist seine Antwort:

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()

Ergebnis des von chatGPT generierten Python-Codes zum Erstellen eines Zellenrasters

Chat-GPT ist also tatsächlich in der Lage, einfachen Code in Python für die räumliche Datenwissenschaft zu schreiben, sofern ihm eine gut geschriebene und klare Frage gestellt wird.

Abschließende Gedanken

Dieses kurze Experiment mit chatGPT beleuchtet zwei interessante Dinge über den Chatbot und vielleicht die KI im Allgemeinen.

Erstens können wir sehen, dass KI Artefakte erzeugen kann, die auf den ersten Blick legitim aussehen, sich aber bei weiteren Untersuchungen als falsch herausstellen. Ein häufiges Beispiel sind von KI generierte Bilder von Gesichtern , bei denen die Gesichter auf den ersten Blick zwar realistisch aussehen, sich bei näherer Betrachtung jedoch als seltsame Anomalien herausstellen.

Beispiel für Anomalien in KI-generierten Gesichtern, siehe mittlerer Artikel

geopandasBeim Schreiben unseres Codes hat chat GPT etwas Ähnliches getan, indem es ein Modul namens „-ein Modul“ erstellt hat, gpd.gridify()das sinnvoll erscheint, aber eigentlich nicht existiert.

Zweitens besteht der Zweck von chatGPT (und vielleicht auch anderen KI-Bots) nicht darin, genaue Informationen zu präsentieren, sondern vielmehr scheinbar genaue Informationen. Laut der FAQ-Seite von chatGPT ist das Modell darauf trainiert, die menschliche Sprache so weit wie möglich nachzuahmen und uns nicht die Wahrheit zu liefern.

FAQ-Seite von chatGPT

Aus diesem Grund behauptet es so selbstbewusst, dass gridifyes Teil der geopandasBibliothek sei, und wenn es sich als falsch erweist, behauptet es stattdessen , es gridifysei Teil der Bibliothek. shapelyKeine dieser Aussagen ist wahr, aber vielleicht ist das nicht der Sinn von chatGPT.

Was kommt als nächstes?

Ich bin auf jeden Fall sehr begeistert von den Funktionen von chatGPT und werde es in Zukunft für die Arbeit an anderen, schwierigeren Codierungsaufgaben verwenden.

Ich habe auch festgestellt, dass es beim Generieren von Ideen sehr praktisch ist – ich habe nach Ideen für Data-Science-Projekte im Bereich Nachhaltigkeit + Geodatenwissenschaft gefragt, und obwohl es für mich keine neuen Ideen hervorbrachte, lieferte es einen recht guten Überblick über die Nachhaltigkeit / Welt der Geodatenwissenschaft, was meiner Meinung nach für jemanden, der neu auf diesem Gebiet ist, sehr praktisch sein könnte.

Hier ist die Antwort von chatGPT, als ich nach Projektideen fragte:

  • Nachhaltige Verkehrsplanung: Entwickeln Sie ein Tool, das Planern hilft, öffentliche Verkehrsnetze zu optimieren, um Treibhausgasemissionen zu reduzieren und die Zugänglichkeit zu verbessern. Dies könnte die Analyse von Mustern der Reisenachfrage, die Integration mit Datenquellen für öffentliche Verkehrsmittel und die Implementierung von Algorithmen für Netzwerkdesign und Routing umfassen.
  • Nachhaltige Landnutzungsplanung: Entwickeln Sie ein Tool, das Planern hilft, Landnutzungsmuster zu optimieren, um Umweltauswirkungen zu minimieren und die Nachhaltigkeit zu verbessern. Dies könnte die Analyse von Landnutzungs- und Landbedeckungsmustern, die Integration mit Landnutzungsdatenquellen und die Implementierung von Algorithmen zur Landnutzungszuweisung und -optimierung umfassen.
  • Umweltverträglichkeitsprüfung: Entwickeln Sie ein Tool, das Organisationen dabei hilft, die Umweltauswirkungen ihrer Betriebe oder Projekte zu bewerten. Dies könnte die Integration von Datenquellen zu Umweltindikatoren wie Luft- und Wasserqualität und die Implementierung von Algorithmen zur Folgenabschätzung und -vorhersage umfassen.
  • Auswahl von Standorten für erneuerbare Energien: Entwickeln Sie ein Tool, das Organisationen dabei hilft, geeignete Standorte für die Erzeugung erneuerbarer Energien zu identifizieren, z. B. Solar- oder Windparks. Dies könnte die Analyse von Mustern der Sonneneinstrahlung, der Windgeschwindigkeit und anderer relevanter Faktoren sowie die Integration mit Datenquellen zur Landnutzung und Topographie umfassen.
  • Nachhaltige Lieferkettenoptimierung: Entwickeln Sie ein Tool, das Unternehmen dabei hilft, ihre Lieferketten zu optimieren, um Umweltauswirkungen zu minimieren und die Nachhaltigkeit zu verbessern. Dies könnte die Analyse von Material- und Energieflussmustern, die Integration mit Datenquellen der Lieferkette und die Implementierung von Algorithmen zur Optimierung und Risikobewertung umfassen.

Danksagungen

Ich möchte meinen Freunden Alexey Ilyshkin und Alexis Oh dafür danken, dass sie mir ihre Gedanken zu chatGPT und KI mitgeteilt haben. Unsere Berichterstattungen wurden in den Abschnitt „Abschließende Gedanken“ dieses Artikels integriert.