Pengkodean dengan chatGPT

Feb 10 2023
Menggunakan model bahasa OpenAI untuk menulis kode Python untuk ilmu geo-data
Baru-baru ini, saya mengetahui tentang ChatGPT, bot obrolan ai yang dikembangkan oleh OpenAI yang mampu merespons pengguna dengan cara yang sangat manusiawi. ChatGPT tidak hanya dapat memberikan respons menggunakan teks, Anda juga dapat memintanya untuk menulis kode.

Baru-baru ini, saya mengetahui tentang ChatGPT , bot obrolan ai yang dikembangkan oleh OpenAI yang mampu merespons pengguna dengan cara yang sangat manusiawi. ChatGPT tidak hanya dapat memberikan respons menggunakan teks, Anda juga dapat memintanya untuk menulis kode. Faktanya, seorang kenalan baru-baru ini memberi tahu saya bahwa dia menggunakan chatGPT untuk mengerjakan beberapa pekerjaan rumahnya untuk Magister ilmu data perkotaan, baik untuk menulis esai maupun menulis kode.

Contoh penggunaan chatGPT untuk ilmu data, lihat artikel Medium

Sebagai seseorang yang menghabiskan sebagian besar jam kerjanya untuk membuat kode, memiliki bot obrolan menulis kode untuk saya terdengar sangat menarik (pikirkan semua jam yang bisa saya hemat!) Dan sedikit menakutkan (apakah ini berarti saya akan kehabisan waktu? pekerjaan dalam beberapa tahun?) . Saya memutuskan untuk mencoba kemampuan pengkodean chat GPT, khususnya untuk analisis data spasial dengan Python. Artikel ini menunjukkan beberapa hasil pertama, dan pemikiran pertama saya.

Untuk artikel ini, saya meminta Chat GPT untuk melakukan tugas umum yang harus sering saya lakukan: mengubah poligon (bisa berbentuk negara, kota, atau kotamadya) menjadi kisi sel tempat statistik dapat dikumpulkan dengan mudah.

Sebelum kita mulai, sebenarnya apa itu Chat GPT? Saya menanyakan pertanyaan ini ke chatbot itu sendiri, dan ini jawabannya:

GPT (kependekan dari "Generative Pre-training Transformer") adalah jenis model bahasa yang dikembangkan oleh OpenAI. Ini adalah jaringan saraf yang dilatih untuk menghasilkan teks seperti manusia dengan memprediksi kata berikutnya secara berurutan dengan contoh dataset yang besar. Chat GPT mengacu pada penggunaan model ini dalam aplikasi obrolan, di mana ia dapat digunakan untuk menghasilkan respons terhadap pesan pengguna secara real time. Ini dirancang untuk dapat melakukan percakapan dengan memahami konteks percakapan dan menghasilkan tanggapan yang sesuai.

Ayo mulai!

Pertama, saya meminta Obrolan GPT, "buat kisi geodataframe dalam poligon", dan inilah jawabannya:

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

Namun, ada modul python lain yang disebut gridify, jadi mungkin chatbot bingung dengan itu, lihat tautan di sini . Itu juga lupa mengimpor shapelyatribut Polygonsebelum menggunakannya, tapi itu hanya masalah kecil.

Hal yang menarik tentang obrolan GPT adalah Anda dapat melakukan percakapan terus menerus dengannya, dan itu akan mengingat interaksi Anda sebelumnya. Jadi saya mengajukan pertanyaan lanjutan untuk mencoba mendapatkan kode yang berfungsi. Jadi saya bertanya, “Saya mencoba kode ini tetapi mendapatkan error “module 'geopandas' tidak memiliki atribut 'gridify'”. dapatkah Anda memperbaikinya untuk saya?”, dan inilah tanggapannya:

Sementara bot mengklaim shapelymemiliki atribut gridify, saya menemukan bahwa itu tidak benar ketika saya menjalankan kodenya. shapelytidak memiliki atribut gridifyjuga.

Jadi saya mengajukan pertanyaan lanjutan lainnya, “Saya mencoba kodenya tetapi mendapat pesan kesalahan “Tidak ada modul bernama 'shapely.gridify'”. Ada pilihan lain?”

Bot kemudian dengan percaya diri memberi tahu saya bahwa gridify ADALAH bagian dari shapelyperpustakaan, tetapi telah dihapus di versi yang lebih baru — itu juga tidak benar sejauh yang saya tahu.

Kode yang ditulisnya menghasilkan ... loop persegi, yang jauh dari yang saya cari. Sejujurnya saya merasa itu sangat lucu.

Upaya kedua: berhasil!

Percakapan pertama saya dengan obrolan GPT jelas tidak berjalan dengan baik, jadi saya memutuskan untuk memulai lagi, dan menanyakan pertanyaan saya dengan lebih jelas. Saya menanyakannya, "kode python untuk menghasilkan kisi sel sebagai bingkai geodata", dan inilah jawabannya:

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

Hasil chatGPT menghasilkan kode Python untuk membuat kisi sel

So chat GPT is indeed capable of writing simple code in Python for spatial data science, as long as it is given a well written and clear question.

Final thoughts

This brief experiment with chatGPT highlights two interesting things about the chatbot, and perhaps AI in general.

Firstly, we can see that AI can generate artifacts that may look legitimate at first glace, but turns out to be wrong under further investigation. A common example is images of faces generated by AI, where the faces may look realistic at first glance, but turn out to have strange anomalies when looked at more closely.

Example of anomalies in AI generated faces, see medium article

When writing our code, chat GPT did the something similar by making up a geopandas module called gpd.gridify() — a module that seems to make sense, but doesn’t actually exist.

Secondly, the purpose of chatGPT (and perhaps other AI bots) is not to present accurate information, but rather what looks like accurate information. According to the FAQ page of chatGPT, the model is trained to mimic human speech as much as possible, and not to provide us with the truth.

FAQ page of chatGPT

This is why it so confidently claims that gridify is part of the geopandas library, and when proven wrong, claims that gridify is part of shapely library instead. Neither of these statements are true, but perhaps that is not the point of chatGPT.

What’s next?

I’m definitely very excited about the capabilities of chatGPT, and will be using it to work on other more difficult coding tasks in the future.

I also found that it is quite handy at generating ideas — I asked for ideas for data science projects for sustainability + spatial data science, and while it didn’t produce ideas that were novel to me, it provided quite a good overview of the sustainability / spatial data science world, which I can imagine could be quite handy for someone new to the field.

Here’s chatGPT’s response when I asked for project ideas:

  • Sustainable transportation planning: Develop a tool that helps planners optimize public transportation networks to reduce greenhouse gas emissions and improve accessibility. This could involve analyzing patterns of travel demand, integrating with public transportation data sources, and implementing algorithms for network design and routing.
  • Sustainable land use planning: Develop a tool that helps planners optimize land use patterns to minimize environmental impacts and enhance sustainability. This could involve analyzing patterns of land use and land cover, integrating with land use data sources, and implementing algorithms for land use allocation and optimization.
  • Environmental impact assessment: Develop a tool that helps organizations assess the environmental impacts of their operations or projects. This could involve integrating with data sources on environmental indicators, such as air and water quality, and implementing algorithms for impact assessment and prediction.
  • Renewable energy site selection: Develop a tool that helps organizations identify suitable sites for renewable energy generation, such as solar or wind farms. This could involve analyzing patterns of solar insolation, wind speed, and other relevant factors, and integrating with data sources on land use and topography.
  • Pengoptimalan rantai pasokan berkelanjutan: Kembangkan alat yang membantu organisasi mengoptimalkan rantai pasokan mereka untuk meminimalkan dampak lingkungan dan meningkatkan keberlanjutan. Ini dapat melibatkan analisis pola aliran material dan energi, integrasi dengan sumber data rantai suplai, dan penerapan algoritme untuk pengoptimalan dan penilaian risiko.

Terima kasih

Saya ingin berterima kasih kepada teman saya Alexey Ilyshkin dan Alexis Oh karena telah berbagi pemikiran mereka tentang chatGPT dan AI dengan saya. Cakupan kami diintegrasikan ke dalam bagian 'pemikiran akhir' dari artikel ini.