Codificação com chatGPT

Feb 10 2023
Usando o modelo de linguagem do OpenAI para escrever código Python para ciência de dados geográficos
Recentemente, descobri o ChatGPT, um bot de bate-papo ai desenvolvido pela OpenAI que é capaz de responder aos usuários de maneira incrivelmente humana. O chatGPT não apenas pode fornecer respostas usando texto, mas também pode solicitar que ele escreva um código.

Recentemente, descobri o ChatGPT , um bot de bate-papo ai desenvolvido pela OpenAI que é capaz de responder aos usuários de maneira extremamente humana. O chatGPT não apenas pode fornecer respostas usando texto, mas também pode solicitar que ele escreva um código. Na verdade, uma conhecida me disse recentemente que usou o chatGPT para fazer alguns de seus deveres de casa para seu mestrado em ciência de dados urbanos, tanto para escrever ensaios quanto para escrever código.

Exemplo de uso do chatGPT para ciência de dados, consulte o artigo do Medium

Como alguém que passa a maior parte de suas horas de trabalho codificando, ter um bot de bate-papo escrevendo código para mim soa incrivelmente empolgante ( pense em todas as horas que eu poderia economizar! ) emprego daqui a alguns anos?) . Decidi experimentar os recursos de codificação do chat GPT, especificamente para análise de dados espaciais com Python. Este artigo mostra alguns primeiros resultados e meus primeiros pensamentos.

Para este artigo, pedi ao Chat GPT para fazer uma tarefa típica que tenho que fazer com frequência: transformar um polígono (pode ser a forma de um país, cidade ou município) em uma grade de células onde as estatísticas podem ser facilmente agregadas.

Antes de começarmos, o que é o Chat GPT, na verdade? Fiz esta pergunta ao próprio chatbot, e esta é a sua resposta:

GPT (abreviação de “Generative Pre-training Transformer”) é um tipo de modelo de linguagem desenvolvido pela OpenAI. É uma rede neural treinada para gerar texto semelhante ao humano, prevendo a próxima palavra em uma sequência a partir de um grande conjunto de dados de exemplos. Chat GPT refere-se ao uso deste modelo em aplicativos de chat, onde pode ser usado para gerar respostas às mensagens do usuário em tempo real. Ele é projetado para ser capaz de manter uma conversa, entendendo o contexto da conversa e gerando respostas apropriadas.

Vamos começar!

Primeiro, perguntei ao Chat GPT, “faça uma grade geodataframe dentro de um polígono”, e esta foi a resposta:

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

Existe, no entanto, outro módulo python chamado gridify, então talvez o chatbot tenha se confundido com isso, veja o link aqui . Ele também esqueceu de importar o shapelyatributo Polygonantes de usá-lo, mas isso foi apenas um problema menor.

O interessante do chat GPT é que você pode ter uma conversa contínua com ele, e ele se lembrará de suas interações anteriores. Então, fiz uma pergunta de acompanhamento para tentar obter um código funcional. Então perguntei: “Eu tentei este código, mas recebi o erro “módulo 'geopandas' não tem atributo 'gridify'”. você pode consertar isso para mim?”, e esta foi a resposta:

Embora o bot afirmasse shapelyter o atributo gridify, descobri que não era verdade quando executei o código. shapelytambém não tem o atributo gridify.

Então, fiz outra pergunta de acompanhamento: “Tentei o código, mas recebi a mensagem de erro “Nenhum módulo chamado 'shapely.gridify'”. Alguma outra opção?

O bot então passou a me dizer com confiança que gridify faz parte da shapelybiblioteca, mas foi removido em versões mais recentes - isso também não é verdade, até onde eu sei.

O código que ele escreveu produziu … um loop quadrado, que está longe do que eu estava procurando. Sinceramente, achei bem hilário.

Segunda tentativa: funcionou!

Minha primeira conversa com o chat GPT claramente não estava indo muito bem, então decidi começar de novo e fazer minha pergunta com mais clareza. Eu perguntei, “código python para gerar uma grade de células como um geodataframe”, e aqui está sua resposta:

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

Resultado do código Python gerado pelo chatGPT para criar uma grade de células

Portanto, o chat GPT é realmente capaz de escrever um código simples em Python para ciência de dados espaciais, desde que receba uma pergunta bem escrita e clara.

Pensamentos finais

Esta breve experiência com o chatGPT destaca duas coisas interessantes sobre o chatbot e talvez a IA em geral.

Em primeiro lugar, podemos ver que a IA pode gerar artefatos que podem parecer legítimos à primeira vista, mas que se revelam errados após uma investigação mais aprofundada. Um exemplo comum são as imagens de rostos gerados por IA , onde os rostos podem parecer realistas à primeira vista, mas acabam apresentando estranhas anomalias quando observados mais de perto.

Exemplo de anomalias em rostos gerados por IA, consulte o artigo médio

Ao escrever nosso código, o chat GPT fez algo semelhante criando um geopandasmódulo chamado gpd.gridify()— um módulo que parece fazer sentido, mas na verdade não existe.

Em segundo lugar, o objetivo do chatGPT (e talvez de outros bots de IA) não é apresentar informações precisas, mas sim o que parece ser uma informação precisa. De acordo com a página de perguntas frequentes do chatGPT , o modelo é treinado para imitar a fala humana o máximo possível e não para nos fornecer a verdade.

Página de perguntas frequentes do chatGPT

É por isso que afirma com tanta confiança que gridifyfaz parte da geopandasbiblioteca e, quando provado que está errado, afirma que gridifyfaz parte da shapelybiblioteca. Nenhuma dessas afirmações é verdadeira, mas talvez esse não seja o objetivo do chatGPT.

Qual é o próximo?

Estou definitivamente muito empolgado com os recursos do chatGPT e o usarei para trabalhar em outras tarefas de codificação mais difíceis no futuro.

Também descobri que é bastante útil para gerar ideias - pedi ideias para projetos de ciência de dados para sustentabilidade + ciência de dados espaciais e, embora não tenha produzido ideias novas para mim, forneceu uma boa visão geral da sustentabilidade / mundo da ciência de dados espaciais, que posso imaginar que pode ser bastante útil para alguém novo no campo.

Aqui está a resposta do chatGPT quando pedi ideias de projetos:

  • Planejamento de transporte sustentável: Desenvolva uma ferramenta que ajude os planejadores a otimizar as redes de transporte público para reduzir as emissões de gases de efeito estufa e melhorar a acessibilidade. Isso pode envolver a análise de padrões de demanda de viagens, integração com fontes de dados de transporte público e implementação de algoritmos para design e roteamento de rede.
  • Planejamento sustentável do uso da terra: Desenvolva uma ferramenta que ajude os planejadores a otimizar os padrões de uso da terra para minimizar os impactos ambientais e aumentar a sustentabilidade. Isso pode envolver a análise de padrões de uso e cobertura da terra, integração com fontes de dados de uso da terra e implementação de algoritmos para alocação e otimização do uso da terra.
  • Avaliação de impacto ambiental: Desenvolver uma ferramenta que ajude as organizações a avaliar os impactos ambientais de suas operações ou projetos. Isso pode envolver a integração com fontes de dados sobre indicadores ambientais, como a qualidade do ar e da água, e a implementação de algoritmos para avaliação e previsão de impacto.
  • Seleção de local de energia renovável: Desenvolva uma ferramenta que ajude as organizações a identificar locais adequados para geração de energia renovável, como parques solares ou eólicos. Isso pode envolver a análise de padrões de insolação solar, velocidade do vento e outros fatores relevantes e a integração com fontes de dados sobre uso da terra e topografia.
  • Otimização da cadeia de suprimentos sustentável: Desenvolva uma ferramenta que ajude as organizações a otimizar suas cadeias de suprimentos para minimizar os impactos ambientais e aumentar a sustentabilidade. Isso pode envolver a análise de padrões de fluxos de materiais e energia, integração com fontes de dados da cadeia de suprimentos e implementação de algoritmos para otimização e avaliação de riscos.

Reconhecimentos

Gostaria de agradecer aos meus amigos Alexey Ilyshkin e Alexis Oh por compartilharem suas ideias sobre chatGPT e IA comigo. Nossas conversas foram integradas na seção de 'pensamentos finais' deste artigo.