Mã hóa với chatGPT

Feb 10 2023
Sử dụng mô hình ngôn ngữ của OpenAI để viết mã Python cho khoa học dữ liệu địa lý
Gần đây, tôi phát hiện ra ChatGPT, một bot trò chuyện ai được phát triển bởi OpenAI có khả năng phản hồi người dùng theo cách đặc biệt của con người. chatGPT không chỉ có thể đưa ra phản hồi bằng văn bản mà bạn còn có thể yêu cầu nó viết mã.

Gần đây, tôi phát hiện ra ChatGPT , một bot trò chuyện ai do OpenAI phát triển có khả năng phản hồi người dùng theo cách đặc biệt của con người. chatGPT không chỉ có thể đưa ra phản hồi bằng văn bản mà bạn còn có thể yêu cầu nó viết mã. Trên thực tế, một người quen gần đây đã nói với tôi rằng cô ấy đã sử dụng chatGPT để làm một số bài tập về nhà cho chương trình Thạc sĩ về khoa học dữ liệu đô thị, cả về viết luận và viết mã.

Ví dụ về việc sử dụng chatGPT cho khoa học dữ liệu, xem bài viết trên Phương tiện

Là một người dành phần lớn thời gian làm việc của mình để viết mã, việc có một bot trò chuyện viết mã cho tôi nghe có vẻ cực kỳ thú vị (hãy nghĩ đến tất cả số giờ tôi có thể tiết kiệm được!) và hơi đáng sợ (điều này có nghĩa là tôi sẽ không còn công việc trong một vài năm?) . Tôi quyết định dùng thử khả năng mã hóa của GPT trò chuyện, đặc biệt là để phân tích dữ liệu không gian bằng Python. Bài báo này cho thấy một số kết quả đầu tiên và những suy nghĩ đầu tiên của tôi.

Đối với bài viết này, tôi đã yêu cầu Chat GPT thực hiện một nhiệm vụ điển hình mà tôi phải làm thường xuyên: biến một đa giác (có thể là hình dạng của một quốc gia, thành phố hoặc đô thị) thành một lưới các ô để có thể dễ dàng tổng hợp số liệu thống kê.

Trước khi bắt đầu, Chat GPT thực sự là gì? Tôi đã đặt câu hỏi này cho chính chatbot và đây là câu trả lời của nó:

GPT (viết tắt của “Generative Pre-training Transformer”) là một loại mô hình ngôn ngữ được phát triển bởi OpenAI. Đó là một mạng lưới thần kinh được đào tạo để tạo văn bản giống con người bằng cách dự đoán từ tiếp theo trong một chuỗi được cung cấp một tập dữ liệu lớn gồm các ví dụ. Trò chuyện GPT đề cập đến việc sử dụng mô hình này trong các ứng dụng trò chuyện, nơi nó có thể được sử dụng để tạo phản hồi cho tin nhắn của người dùng trong thời gian thực. Nó được thiết kế để có thể tiếp tục cuộc trò chuyện bằng cách hiểu ngữ cảnh của cuộc trò chuyện và đưa ra các phản hồi thích hợp.

Hãy bắt đầu!

Đầu tiên, tôi đã hỏi Chat GPT, "tạo lưới khung dữ liệu địa lý trong một đa giác" và đây là phản hồi của nó:

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

Tuy nhiên, có một mô-đun python khác được gọi là gridify, vì vậy có lẽ chatbot đã bị nhầm lẫn bởi điều đó, xem liên kết tại đây . Nó cũng quên nhập thuộc shapelytính Polygontrước khi sử dụng, nhưng đó chỉ là vấn đề nhỏ.

Điều thú vị về trò chuyện GPT là bạn có thể trò chuyện liên tục với nó và nó sẽ ghi nhớ các tương tác trước đó của bạn. Vì vậy, tôi đã hỏi một câu hỏi tiếp theo để cố gắng có được một đoạn mã đang hoạt động. Vì vậy, tôi đã hỏi: “Tôi đã thử mã này nhưng gặp lỗi “mô-đun 'geopandas' không có thuộc tính 'gridify'”. bạn có thể sửa cái này cho tôi được không?”, và đây là phản hồi của nó:

Mặc dù bot tuyên bố rằng shapelycó thuộc tính gridify, nhưng tôi phát hiện ra điều đó không đúng khi tôi chạy mã. shapelycũng không có thuộc tính gridify.

Vì vậy, tôi đã hỏi một câu hỏi tiếp theo khác, “Tôi đã thử mã nhưng nhận được thông báo lỗi “Không có mô-đun nào có tên 'shapely.gridify'”. Còn lựa chọn nào khác không?”

Sau đó, bot tiếp tục tự tin nói với tôi rằng gridify LÀ một phần của shapelythư viện, nhưng đã bị xóa trong các phiên bản mới hơn - điều đó cũng không đúng theo như tôi biết.

Đoạn mã nó viết tạo ra… một vòng lặp hình vuông, khác xa so với những gì tôi đang tìm kiếm. Thành thật mà nói tôi thấy nó khá buồn cười.

Nỗ lực thứ hai: nó đã thành công!

Cuộc trò chuyện đầu tiên của tôi với trò chuyện GPT rõ ràng không suôn sẻ lắm, vì vậy tôi quyết định bắt đầu lại và đặt câu hỏi của mình rõ ràng hơn. Tôi đã hỏi nó, “mã trăn để tạo một lưới các ô dưới dạng khung dữ liệu địa lý”, và đây là câu trả lời của nó:

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

Kết quả mã Python do chatGPT tạo ra để tạo lưới các ô

Vì vậy, trò chuyện GPT thực sự có khả năng viết mã đơn giản bằng Python cho khoa học dữ liệu không gian, miễn là nó được đưa ra một câu hỏi rõ ràng và được viết tốt.

suy nghĩ cuối cùng

Thử nghiệm ngắn này với chatGPT nêu bật hai điều thú vị về chatbot và có lẽ là AI nói chung.

Đầu tiên, chúng ta có thể thấy rằng AI có thể tạo ra các đồ tạo tác thoạt nhìn có vẻ hợp pháp, nhưng hóa ra là sai khi điều tra thêm. Một ví dụ phổ biến là hình ảnh các khuôn mặt do AI tạo ra , trong đó các khuôn mặt thoạt nhìn có thể giống thật, nhưng hóa ra lại có những điểm bất thường kỳ lạ khi nhìn kỹ hơn.

Ví dụ về sự bất thường trong khuôn mặt do AI tạo ra, xem bài viết trung bình

Khi viết mã của chúng tôi, chat GPT đã làm điều tương tự bằng cách tạo một geopandasmô-đun có tên gpd.gridify()— một mô-đun có vẻ hợp lý nhưng thực tế không tồn tại.

Thứ hai, mục đích của chatGPT (và có lẽ là các bot AI khác) không phải là trình bày thông tin chính xác, mà là những gì trông giống như thông tin chính xác. Theo trang Câu hỏi thường gặp của chatGPT , mô hình được đào tạo để bắt chước lời nói của con người nhiều nhất có thể và không cung cấp cho chúng tôi sự thật.

Trang câu hỏi thường gặp của chatGPT

Đây là lý do tại sao nó tự tin tuyên bố rằng đó gridifylà một phần của geopandasthư viện và khi được chứng minh là sai, thay vào đó lại tuyên bố đó gridifylà một phần của shapelythư viện. Cả hai tuyên bố này đều không đúng, nhưng có lẽ đó không phải là điểm của chatGPT.

Cái gì tiếp theo?

Tôi chắc chắn rất hào hứng với các khả năng của chatGPT và sẽ sử dụng nó để thực hiện các tác vụ viết mã khó hơn khác trong tương lai.

Tôi cũng thấy rằng nó khá tiện lợi trong việc tạo ý tưởng — tôi đã hỏi ý tưởng cho các dự án khoa học dữ liệu về tính bền vững + khoa học dữ liệu không gian và mặc dù nó không tạo ra những ý tưởng mới lạ đối với tôi, nhưng nó cung cấp một cái nhìn tổng quan khá tốt về tính bền vững / thế giới khoa học dữ liệu không gian, mà tôi có thể tưởng tượng có thể khá hữu ích cho người mới tham gia lĩnh vực này.

Đây là phản hồi của chatGPT khi tôi hỏi về ý tưởng dự án:

  • Lập kế hoạch giao thông bền vững: Phát triển một công cụ giúp các nhà quy hoạch tối ưu hóa mạng lưới giao thông công cộng để giảm phát thải khí nhà kính và cải thiện khả năng tiếp cận. Điều này có thể liên quan đến việc phân tích các kiểu nhu cầu đi lại, tích hợp với các nguồn dữ liệu giao thông công cộng và triển khai các thuật toán để thiết kế và định tuyến mạng.
  • Quy hoạch sử dụng đất bền vững: Phát triển một công cụ giúp các nhà quy hoạch tối ưu hóa các mô hình sử dụng đất để giảm thiểu tác động môi trường và nâng cao tính bền vững. Điều này có thể liên quan đến việc phân tích các mô hình sử dụng đất và độ che phủ đất, tích hợp với các nguồn dữ liệu sử dụng đất và triển khai các thuật toán để phân bổ và tối ưu hóa sử dụng đất.
  • Đánh giá tác động môi trường: Phát triển một công cụ giúp các tổ chức đánh giá tác động môi trường của các hoạt động hoặc dự án của họ. Điều này có thể liên quan đến việc tích hợp với các nguồn dữ liệu về các chỉ số môi trường, chẳng hạn như chất lượng không khí và nước, đồng thời triển khai các thuật toán để đánh giá và dự đoán tác động.
  • Lựa chọn địa điểm năng lượng tái tạo: Phát triển một công cụ giúp các tổ chức xác định các địa điểm phù hợp để tạo ra năng lượng tái tạo, chẳng hạn như các trang trại năng lượng mặt trời hoặc gió. Điều này có thể liên quan đến việc phân tích các kiểu cách nhiệt mặt trời, tốc độ gió và các yếu tố liên quan khác, đồng thời tích hợp với các nguồn dữ liệu về sử dụng đất và địa hình.
  • Tối ưu hóa chuỗi cung ứng bền vững: Phát triển một công cụ giúp các tổ chức tối ưu hóa chuỗi cung ứng của họ để giảm thiểu tác động đến môi trường và nâng cao tính bền vững. Điều này có thể liên quan đến việc phân tích các mô hình dòng nguyên liệu và năng lượng, tích hợp với các nguồn dữ liệu chuỗi cung ứng và triển khai các thuật toán để tối ưu hóa và đánh giá rủi ro.

Sự nhìn nhận

Tôi muốn cảm ơn những người bạn Alexey Ilyshkin và Alexis Oh vì đã chia sẻ suy nghĩ của họ về chatGPT và AI với tôi. Các bài viết của chúng tôi đã được tích hợp vào phần 'suy nghĩ cuối cùng' của bài viết này.