Codificação com chatGPT
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.
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()
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.
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.
É 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.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)