Um dos descobrimentos mais interessantes sobre o ChatGPT é que ele consegue escrever um código bastante eficiente. Testei isso pela primeira vez em 2023, quando pedi que ele criasse um plugin para WordPress que minha esposa pudesse usar em seu site. O ChatGPT fez um bom trabalho, mas o projeto era simples. Então, como você pode usar o ChatGPT para escrever código em sua rotina de programação diária? Aqui está um resumo rápido:
O ChatGPT pode gerar códigos úteis ou inutilizáveis. Para obter os melhores resultados, forneça comandos claros e detalhados. Ele se destaca em apoiar tarefas ou rotinas de programação específicas, ao invés de desenvolver aplicações completas do zero. Utilize o ChatGPT para encontrar e escolher as bibliotecas de codificação corretas para finalidades específicas e mantenha uma conversa interativa para estreitar suas opções. Tenha cuidado com a propriedade do código gerado por IA e sempre verifique a confiabilidade desse código. Nunca confie cegamente na saída gerada. Trate as interações com o ChatGPT como uma conversa, refinando suas perguntas com base nas respostas da IA para se aproximar do resultado desejado.
Agora, vamos explorar o ChatGPT em um nível significativamente mais profundo.
Quais tipos de programação o ChatGPT realiza bem? Há dois fatos importantes sobre o ChatGPT e codificação. Primeiro, a IA consegue escrever códigos úteis. O segundo é que a IA pode se perder completamente, entrar em uma furada e gerar lixo inutilizável. Descobri isso da forma mais difícil. Após finalizar o plugin para WordPress da minha esposa, decidi testar até onde o ChatGPT conseguiria ir. Elaborei um comando muito cuidadoso para um aplicativo Mac, incluindo descrições detalhadas de elementos da interface do usuário, interações, o que deveria ser fornecido nas configurações e como tudo funcionaria. Depois, enviei o comando ao ChatGPT. Ele respondeu com um fluxo de texto e código, mas parou no meio do caminho. Quando pedi à IA que continuasse, ela despejou ainda mais código e texto. Solicitei continuidade após continuidade, e mais mã(messages foram gerados. No entanto, nada do que foi produzido era utilizável. A IA não indicou onde o código deveria ser inserido, como estruturar o projeto e, ao analisar bem o código, percebi que deixava de fora operações principais que solicitei, e inseria descrições em texto simples afirmando “lógica de programação vai aqui.”
Após testes repetidos, ficou claro que se você pedir ao ChatGPT que entregue uma aplicação completa, a ferramenta falhará. Um corolário a essa observação é que, se você não souber nada sobre codificação e desejar que o ChatGPT construa algo, ele também irá falhar. O que o ChatGPT faz bem — e faz muito bem — é ajudar alguém que já tem conhecimentos de programação a construir rotinas específicas e finalizar tarefas. Não solicite um aplicativo que funcione na barra de menu. Mas, se você pedir ao ChatGPT uma rotina para colocar um menu na barra de menu e colar isso em seu projeto, a ferramenta se sairá bem.
Além disso, lembre-se de que, embora o ChatGPT pareça ter um conhecimento imenso em áreas específicas (muitas vezes, realmente o tem), ele carece de sabedoria. Assim, a ferramenta pode escrever código, mas não conseguirá dirigir códigos que contenham nuances para problemas específicos ou complexos que requerem uma experiência mais profunda.
Utilize o ChatGPT para demonstrar técnicas, escrever pequenos algoritmos e produzir sub-rotinas. Você também pode pedir assistência ao ChatGPT para dividir um projeto maior em partes e, em seguida, perguntar como codificá-las. Portanto, com isso em mente, vamos examinar alguns passos específicos sobre como o ChatGPT pode ajudar você a escrever código.
Este primeiro passo é decidir o que você quer solicitar ao ChatGPT — mas não faça nenhum pedido ainda. Decida o que você deseja que sua função ou rotina faça, ou o que você quer aprender a incorporar no seu código. Delimite os parâmetros que você irá passar no seu código e o que deseja extrair dele. E, em seguida, pense em como você vai descrever isso.
Imagine que você está pagando um programador humano para realizar essa tarefa. Você está fornecendo informações suficientes para que a pessoa possa trabalhar na sua tarefa? Ou está sendo vago demais, fazendo com que quem você contratou tenha que fazer mais perguntas ou até entregar algo completamente fora do que você deseja?
Por exemplo, digamos que eu queira ser capaz de resumir qualquer página da web. Quero alimentar a IA com este artigo e receber de volta um resumo bem considerado e apropriado. Como minha entrada, vou especificar uma URL de página da web. Como saída, espero um bloco de texto com um resumo.
Continuando com o exemplo acima, uma maneira antiga de extrair dados de uma página da web era encontrar o texto entre tags HTML de parágrafo. No entanto, com a ascensão das ferramentas de IA, é possível usar uma biblioteca de IA para realizar uma extração e resumo inteligente. Um dos pontos em que o ChatGPT se destaca (e também é uma área que você pode facilmente verificar para evitar seu comportamento de apresentação de informações incorretas) é na busca por bibliotecas e recursos.
A OpenAI (quem desenvolveu o ChatGPT) vende acesso à API de seus LLMs para fazer exatamente o que queremos. Mas, no caso deste exemplo, vamos assumir que não queremos pagar taxas de transação.
Vamos analisar como interagir com o ChatGPT para descobrir como usar essa ferramenta, de graça, em um projeto que roda em PHP. Comecei com um comando para coletar informações sobre quais bibliotecas forneceriam a funcionalidade desejada. Uma biblioteca (para quem está acompanhando e não é programador) é um corpo de código que um programador pode acessar para realizar boa parte do trabalho duro para um propósito específico. Uma grande parte da programação moderna é encontrar e escolher as bibliotecas certas, então este é um bom ponto de partida. Neste caso, estou procurando blocos de código escritos por outras pessoas que resumem textos. Aqui está meu primeiro comando: “Descreva dez diferentes bibliotecas de IA open source (e as linguagens com as quais funcionam) que eu possa usar para gerar um resumo dos principais conteúdos de qualquer página da web, ignorando anúncios ou materiais incorporados.”
Esse comando me deu exatamente o que eu queria, incluindo uma menção aos recursos da OpenAI. Acredito que a OpenAI seria excelente aqui, mas para este projeto hipotético, não quero estourar meu orçamento com taxas de API. Então, vou restringir a questão: “Alguma dessas é gratuita?”
O ChatGPT moderou sua resposta, afirmando: “Sim, todas essas dez bibliotecas de IA são open source e gratuitas para uso. No entanto, algumas podem ter limites de uso ou requerer pagamento por acesso a recursos ou funcionalidades adicionais.” Com base nessa resposta, esclareci minha consulta: “Quais dessas bibliotecas não têm limites de uso e não requerem pagamento ou licenciamento adicional?”
Perceba como isso é muito mais uma conversa. Não preciso refazer a pergunta original. Estou apenas aprofundando, como faria se tivesse um especialista ao meu lado. Desta vez, o ChatGPT me deu oito opções de bibliotecas, mas nenhuma delas mencionou a linguagem PHP que eu planejava usar para codificar. Então, aqui está o próximo comando: “Dessas 8 bibliotecas, posso usar alguma com PHP?”
Ele retornou três bibliotecas, mas eu não tinha certeza sobre a função de cada uma. Então, fiz mais uma pergunta: “Qual é a diferença entre Sumy, Gensim e NLTK?”
Ainda sem certeza, esclareci meu plano de uso e então perguntei: “Se eu quiser criar resumos de artigos de notícias em páginas da web, qual biblioteca funcionaria melhor?” A resposta foi clara e promissora: “Sumy é especificamente projetada para sumarização de texto, que é a tarefa de criar um resumo que capture as informações mais importantes de um determinado texto.” Agora, era hora de ver o que era necessário para usar o Sumy com PHP. Fiz minha última pergunta para essa parte do projeto: “Você pode explicar como usar o Sumy a partir do PHP?”
Sinta-se à vontade para testar isso em seu computador e colar esses comandos no ChatGPT. Perceba que, no passo um, decidi sobre qual módulo do programa obter ajuda. Em seguida, nesse passo, conversei com o ChatGPT para decidir qual biblioteca usar e como integrá-la ao meu projeto. Essa abordagem pode não parecer programação, mas garanto que é. Programar não é apenas despejar linhas de código em uma página. Programar é descobrir como integrar todos os recursos e sistemas variados, e como conversar com todos os componentes da sua solução. Aqui, o ChatGPT me ajudou a realizar essa análise de integração.
Por sinal, fiquei curioso se o Google Gemini poderia ajudar de forma similar. O Gemini realmente forneceu alguns insights extras sobre a parte de planejamento da programação em relação às respostas do ChatGPT. Portanto, não hesite em usar múltiplas ferramentas para triangulação de suas respostas.
Desde que escrevi esse artigo, o Google adicionou algumas capacidades de codificação ao Gemini, mas não são essas maravilhas. Você pode ler sobre essa funcionalidade aqui: eu testei as novas habilidades de codificação do Google Gemini. Não foi bem. E ainda mais recentemente, examinei o Gemini Advanced. A IA ainda não está passando em muitos testes.
Vamos agora voltar a codificação.
OK, vamos pausar aqui. Este artigo é intitulado “Como usar o ChatGPT para escrever código.” E ele fará isso. Mas o que realmente estamos fazendo é pedir ao ChatGPT para escrever códigos de exemplo. É importante ser claro. A menos que você esteja escrevendo uma pequena função (como o organizador de linhas/aleatorizador que o ChatGPT escreveu para minha esposa), o ChatGPT não pode produzir seu código final. Primeiro, você terá que mantê-lo. O ChatGPT é péssimo em modificar códigos já escritos. Péssimo, no sentido de que ele não faz isso. Portanto, para obter um código novo, você deve pedir ao ChatGPT para gerar algo novo. Como descobri anteriormente, mesmo se seu comando for praticamente idêntico, o ChatGPT pode mudar inesperadamente o que ele fornece a você.
Em resumo: o ChatGPT não pode manter seu código, ou mesmo ajustá-lo.
Essa limitação significa que você precisa fazer o trabalho pesado. Como sabemos, o primeiro rascunho de um código raramente é o código final. Portanto, mesmo se você espera que o ChatGPT gere um código final, ele seria um ponto de partida, o qual você precisaria levar até a conclusão, integrá-lo ao seu projeto maior, testá-lo, refiná-lo, depurá-lo e assim por diante. Mas esse problema não significa que o código de exemplo seja inútil — muito pelo contrário. Vamos dar uma olhada em um comando que elaborei com base no projeto que descrevi anteriormente. Aqui está a primeira parte: “Escreva uma função PHP chamada summarize_article.”
Como entrada, summarize_article receberá uma URL de um artigo de um site relacionado a notícias, como ZDNET.com ou Reuters.com. Estou dizendo ao ChatGPT qual linguagem de programação ele deve usar. Também estou informando à IA qual a entrada e fornecendo dois sites como exemplos para ajudar o ChatGPT a entender o estilo do artigo. Honestamente, não tenho certeza se o ChatGPT ignorou essa parte da orientação. A seguir, vou dizer o que quero que ele faça: Dentro da função summarize_article, recupere o conteúdo da página da web na URL fornecida. Utilizando a biblioteca Sumy a partir do PHP e quaisquer outras bibliotecas necessárias, extraia o corpo principal do artigo, ignorando anúncios ou materiais incorporados, e resuma-o em aproximadamente 50 palavras. Certifique-se de que o resumo consiste em frases completas. Você pode extrapolar 50 palavras para finalizar a última frase, se necessário.
Essa abordagem é muito similar à forma como eu instruiria um funcionário. Eu gostaria que essa pessoa soubesse que ela não estava restrita apenas ao Sumy. Se precisarem de outra ferramenta, eu queria que a utilizassem.
Além disso, eu também especifiquei um número aproximado de palavras para criar limites em torno do que eu desejava como resumo. Uma versão futura da rotina poderia receber esse número como parâmetro.
Terminei dizendo o que queria como resultado: “Uma vez que o processamento esteja completo, faça com que a função summarize_article retorne o resumo em texto simples.”
O código resultante é bastante simples. O ChatGPT chamou uma outra biblioteca (Goose) para recuperar o conteúdo do artigo. Ele então passou esse resumo para o Sumy com um limite de 50 palavras e retornou o resultado. Contudo, uma vez que os fundamentos sejam escritos, é uma questão de programação voltar e adicionar ajustes, personalizar o que é passado para as duas bibliotecas e entregar os resultados.
Um ponto de nota interessante: Quando originalmente tentei esse teste no início de 2023, o ChatGPT criou uma chamada de exemplo para a rotina que escreveu, utilizando uma URL de uma data posterior a 2021. Naquela época, em março de 2023, o conjunto de dados do ChatGPT ia apenas até 2021. Agora, a base de conhecimento do ChatGPT se estende até o final de junho de 2024 e pode realizar buscas na web. Mas meu ponto é que o ChatGPT criou um link de exemplo que ele não poderia possivelmente saber:
https://www.reuters.com/business/retail-consumer/teslas-musk-says-fremont-california-factory-may-be-sold-chip-shortage-bites-2022-03-18/.
Verifiquei essa URL no site da Reuters e na Wayback Machine e ela não existe. Nunca assuma que o ChatGPT é preciso. Sempre verifique tudo o que ele fornece a você.
Mostrei algumas maneiras em que o ChatGPT comete erros ou “alucina”. Todos os programadores cometem erros, até mesmo os de IA. No entanto, você pode fazer várias coisas para ajudar a refinar seu código, depurar problemas e antecipar erros que possam surgir. Meu truque novo favorito habilitado por IA é inserir o código em uma sessão diferente do ChatGPT (ou em um chatbot diferente) e perguntar: “O que há de errado com este código?” Inevitavelmente, algo aparece. A IA às vezes identifica casos limítrofes ou verificações de erro que devem ser adicionadas ao código, ou situações que podem quebrar se um conjunto de eventos improváveis ocorrer. Então, codifiquei em torno dessas condições de erro, tornando o código mais robusto.
O ChatGPT realmente substituirá os programadores? Não agora — ou, pelo menos — ainda não. O ChatGPT programa no nível de um estudante de programação talentoso no primeiro ano, mas é preguiçoso (como esse estudante de primeiro ano). A ferramenta pode reduzir a necessidade de programadores em nível iniciante. No entanto, em seu nível atual, acredito que a IA facilitará a vida dos programadores em nível iniciante (e até mesmo de programadores mais experientes) para escrever código e buscar informações. É uma economia de tempo, mas a IA não pode realizar muitas tarefas de programação sozinha — pelo menos por enquanto. Em 2030? Quem sabe.
Como posso obter respostas de codificação com o ChatGPT? Basta perguntar. Você viu acima como utilizei uma abordagem de diálogo interativa para restringir as respostas. Não espere que uma única pergunta faça todo o seu trabalho magicamente. Mas use a IA como uma ajudante e recurso, e ela fornecerá muitas informações úteis.
Óbvio que você deve testar essas informações — porque, como disse John Schulman, cofundador da OpenAI: “Nossa maior preocupação era com a factualidade, porque o modelo gosta de fabricar coisas”. O código gerado pelo ChatGPT é garantido para estar livre de erros? De jeito nenhum! Mas você também não pode confiar no código que programadores humanos escrevem. Eu certamente não confio em nenhum código que escrevo. O código que sai do processo de codificação é extremamente falho. Sempre haverá bugs. Antes de disponibilizar, você precisa testar, testar e testar novamente. Em seguida, faça um teste alfa com alguns escolhidos como “cobaias”. Depois, teste beta com sua comunidade de usuários mais ampla.
Mesmo após todo esse trabalho, haverá bugs. Só porque uma IA desempenha a tarefa de codificação não significa que ela consiga produzir códigos sem erros. Não confie. Sempre verifique. E você ainda não terá uma saída totalmente livre de bugs. Essa é a natureza do universo.
O que fazer se o código que eu recebo estiver errado? Recomendo que você considere o chatbot como um estudante ou funcionário um pouco negligente. O que você faria se essa pessoa lhe desse um código que não funciona? Você a enviaria de volta com instruções para refazê-lo e fazê-lo da forma correta. Isso é mais ou menos o que você deve fazer com o ChatGPT (testei isso com o ChatGPT 4 e 4o). Quando as coisas não funcionam, eu digo: “Isso não funcionou. Por favor, tente novamente.”
E a IA faz isso. Muitas vezes, ela me traz variações diferentes sobre o mesmo problema. Eu já repeti esse processo quatro ou cinco vezes em algumas ocasiões até obter uma resposta funcional. Às vezes, porém, a IA fica sem ideias. Outras vezes, a resposta de tentativa seguinte é completamente (e quero dizer completamente) diferente do que você requisitou. Quando fica evidente que você alcançou o limite da habilidade da IA em manter a sanidade no problema, você terá que arregaçar as mangas e codificá-lo por si mesmo. Mas 9 em cada 10 vezes, especialmente com desafios de codificação básicos ou de escrita de interface, a IA cumpre bem essa tarefa.
Quão detalhada deve ser a minha descrição de um problema de programação ao perguntar ao ChatGPT? Detalhada. Quanto mais você deixar espaço para interpretação, mais a IA seguirá seu próprio caminho. Quando faço comandos ao ChatGPT para me ajudar enquanto programo, imagino que estou atribuindo uma tarefa de programação a um dos meus alunos ou a alguém que trabalha para mim.
Eu realmente forneci a essa pessoa informações suficientes para construir um primeiro rascunho ou ela terá que me fazer perguntas adicionais? Pior, essa pessoa terá tão poucas orientações que seguirá uma direção completamente errada? Não seja preguiçoso aqui. O ChatGPT pode economizar horas ou até dias de programação (ele já economizou para mim), mas apenas se você fornecer instruções úteis para começar.
Se eu usar o ChatGPT para escrever meu código, quem é o proprietário? Acontece que não há muita jurisprudência ainda para responder a essa pergunta. Os EUA, o Canadá e o Reino Unido exigem que algo protegido por direitos autorais tenha sido criado por mãos humanas, portanto, o código gerado por uma ferramenta de IA pode não ser passível de registro. Também há questões de responsabilidade com base em onde o código de treinamento foi obtido e como o código resultante é utilizado.
Além disso, o ChatGPT pode ajudar em tarefas de análise de dados e visualização? Sim, e boa parte disso pode ser feito sem código. Confira todo o meu artigo sobre esse tópico: O momento em que percebi que o ChatGPT Plus mudou o jogo para o meu negócio.
Eu também fiz uma peça sobre gráficos e tabelas gerados: Como usar o ChatGPT para criar gráficos e tabelas. Mas aqui é onde fica interessante. No artigo acima, pedi ao ChatGPT Plus: “Faça um gráfico de barras das cinco principais cidades do mundo por população”, e ele fez. Mas você quer código? Tente perguntar: “Faça um gráfico de barras das cinco principais cidades do mundo por população em Swift. Extraia os dados populacionais da internet. Certifique-se de incluir quaisquer bibliotecas necessárias.”
Ao adicionar “em Swift”, você está especificando a linguagem de programação. Ao especificar de onde vêm os dados e forçando o ChatGPT Plus a incluir bibliotecas, a IA incorpora outros recursos que o programa necessita. Essa é a razão pela qual, fundamentalmente, programar com a ajuda de uma IA requer que você saiba o que é programação. Mas, se você souber, é ótimo, porque três sentenças podem lhe trazer um pedaço de código anotado. Legal, não?
Como o ChatGPT lida com diferenças entre dialetos e implementações? Não temos detalhes exatos sobre essa questão da OpenAI, mas nossa compreensão de como o ChatGPT é treinado pode oferecer alguma clareza sobre este problema. Lembre-se de que os dialetos e implementações das linguagens de programação (e suas pequenas peculiaridades) mudam muito mais rapidamente do que a própria linguagem. Essa realidade torna mais difícil para o ChatGPT (e muitos profissionais de programação) acompanhar as mudanças.
Dessa forma, eu trabalharia com essas duas suposições: A mudança dialetica mais recente tem menor probabilidade de ser conhecida pelo ChatGPT; e a linguagem mais popular é aquela que mais dados de treinamento ele aprendeu e, portanto, mais preciso será. Qual é a conclusão? O ChatGPT pode ser uma ferramenta útil. Apenas não atribua superpoderes a ele. Ainda.
Referência: ZDNET