Não quero colocar um ponto muito claro sobre isso, mas estou mais do que um pouco assustado. Como experiência, pedi ao ChatGPT para escrever um plug-in que pudesse economizar algum tempo para minha esposa no gerenciamento de seu site. Escrevi uma breve descrição e o ChatGPT escreveu tudo: interface do usuário, lógica e tudo.
Em menos de cinco minutos.
Também: Como começar a usar o ChatGPT
Existem implicações. Chegaremos a isso em alguns minutos. Primeiro, deixe-me levá-lo através da experiência e do que aconteceu.
A necessidade
Minha esposa é proprietária de um site de comércio eletrônico baseado em WordPress focado em um hobby popular. Ela também hospeda um grupo muito ativo no Facebook para os clientes de seu site. Todo mês ela randomiza uma lista de nomes e, em seguida, faz uma animação virtual de giro da roda, usando essa lista aleatória, para o grupo do Facebook. Ela tem usado um site na internet que faz um bom trabalho de randomização de linhas, mas cobra um pouco mais do que vale a pena exportar a lista.
Também: Os detectores de IA podem nos salvar do ChatGPT? Eu tentei 3 ferramentas online para descobrir
Enquanto eu observava sua luta para obter os nomes aleatórios de volta, pensei que poderia ser útil se eu escrevesse um plugin WordPress rápido que pudéssemos instalar em seu site. Ela está no painel todos os dias, então ter isso como uma ferramenta seria útil.
Mas mesmo um plug-in simples levaria alguns dias para ser escrito, com os elementos da interface do usuário e o código lógico, e estou bastante ocupado com os projetos atualmente.
E então pensei no ChatGPT. Houve alguma discussão sobre ChatGPT como ferramenta de programação na mídiaentão decidi tentar.
O prompt
A chave para fazer com que o ChatGPT gere qualquer coisa é um prompt cuidadosamente escrito. No caso da programação, pense nela como um gerente ou cliente. Você tem que descrever claramente o que você precisa para conseguir o que deseja. Comecei com um prompt bem básico, só para ver se daria certo. Aqui está o prompt que usei:
Escreva um plugin WordPress compatível com PHP 8 que forneça um campo de entrada de texto onde uma lista de linhas pode ser colada nele e um botão que, quando pressionado, randomiza as linhas na lista e apresenta os resultados em um segundo campo de entrada de texto.
Em um minuto, ele gerou o código que você vê à direita. Copiei o código gerado em um arquivo .php, coloquei em uma pasta com o mesmo nome raiz do arquivo .php, compactei e carreguei no servidor dela. Funcionou.
Quando mostrei para minha esposa, ela ficou impressionada e surpresa. Mas então as engrenagens começaram a girar e ela pediu um novo recurso: certifique-se de que nomes duplicados não fiquem lado a lado.
Para sua inscrição, às vezes ela precisará incluir o nome de alguém em uma lista várias vezes. Mas ela não queria que essas duplicatas se agrupassem.
Modifiquei meu prompt original, adicionando as seguintes condições adicionais:
…certifica-se de que não haja duas entradas idênticas próximas uma da outra (a menos que não haja outra opção)…com o número de linhas enviadas e o número de linhas no resultado idênticos entre si.
Incluí a frase “a menos que não haja outra opção” e o requisito de contagem idêntico porque queria garantir que todos os nomes fossem incluídos e estava preocupado que isso priorizasse a necessidade de não haver dois nomes lado a lado guardando todos os nomes.
Cerca de 30 segundos depois, eu tinha um novo plugin. Eu carreguei aquele para o servidor e tentei. Funcionou, mas a saída incluiu algumas linhas em branco. Então, adicionei esta condição ao meu prompt anterior:
…sem linhas em branco…
A essa altura, eu já estava acostumado com o tempo de resposta, que sempre era menos de um minuto. Mais um upload e teste e, novamente, funcionou.
Eu queria um recurso final, apenas para confirmar quantas linhas foram processadas. Eu queria que o plug-in mostrasse uma contagem de linhas para os campos de entrada e saída. Aqui está essa adição imediata:
…Sob o primeiro campo, exiba o texto informando “Linha para randomizar: ” com o número de linhas não vazias no campo de origem. No segundo campo, exiba o texto informando “Linhas que foram aleatórias: ” com o número de linhas não vazias no campo de destino.
Isso funcionou, principalmente. Antes de executar, o campo de saída mostra uma linha. Mas uma vez que o processo de randomização é concluído, ele mostra o número exato de linhas em ambos os campos.
A qualidade do código
No geral, a qualidade do código foi limpa. Estou apenas apresentando a resposta original porque senão não caberia no artigo. O programa gerou corretamente o bloco de cabeçalho do WordPress e escreveu a interface do usuário do painel para o plug-in, bem como a lógica de processamento do plug-in.
Ele colocou minhas linhas de resumo acima dos campos, embora eu tenha especificado abaixo, mas isso não é uma grande reclamação. É o mesmo tipo de erro que um cliente pode receber de um empreiteiro humano e exigir um pouco de retrabalho para consertar.
Também: O ajudante de redação do Notion AI pode escrever este artigo?
A codificação funcionou, mas não incorporou todas as práticas recomendadas para a programação do WordPress. Por exemplo, não limpou a entrada do usuário. A comunidade do WordPress é rigorosa quanto à limpeza de entrada para que os hackers não possam preencher campos com dados que possam corromper um site – e esse código não tinha nada disso.
Como teste posterior, instruí o Ai a higienizar a entrada, e isso aconteceu … até certo ponto. Ele limpou a entrada dentro da função PHP, mas não limpou a entrada ao chamar o PHP dentro do HTML. Isso definitivamente deixaria uma abertura para os hackers.
Ele também soltou o item de menu do plug-in em Configurações. Eu provavelmente o teria colocado em Ferramentas ou dado ao recurso seu próprio item de menu. Como não especifiquei de onde deveria ser invocado, acho que o ChatGPT tomou uma decisão viável ao colocar o item de menu onde estava.
Adicionei um requisito final ao meu prompt, solicitando que a IA desse um nome ao plug-in:
Escreva um plugin WordPress compatível com PHP 8 chamado “Robo Randomizer” que…
Estranhamente, a IA me deu um plug-in totalmente diferente, gerando um plug-in que fornece um shortcode em vez de uma interface de painel. Deixe-me explicar isso para não usuários do WordPress, porque é interessante.
Ao escrever algo assim, você pode disponibilizá-lo no site para os visitantes (chamados de front-end) ou para aqueles que fazem login no painel do site para manter o lado (o back-end). Em meu conjunto original de prompts, não especifiquei front-end ou back-end, mas a IA escreveu o que eu queria, que era um back-end, uma interface de painel para a ferramenta.
Também: A OpenAI está contratando desenvolvedores para tornar o ChatGPT melhor na codificação
Mas desta última vez, decidiu escrever o plugin como uma ferramenta de front-end, fazendo-o executar através de um shortcode. No WordPress, você pode incorporar um shortcode (algo como [randomize lines]) dentro de uma postagem e executará o código em um plug-in. A última versão que a IA produziu me deu um código de acesso, o que permitiria que o recurso de linhas aleatórias fosse apresentado aos visitantes do site.
Depois disso, o ChatGPT meio que perdeu o fio. Não consegui adicionar recursos adicionais ao plug-in original e o ChatGPT apenas repetiu a geração da versão do shortcode. Claramente, a manutenção do código não é um ponto forte do ChatGPT.
Implicações
Obviamente, este é um plugin simples. É aproximadamente o tamanho das atribuições que dei aos meus alunos de programação do primeiro ano quando lecionei na UC Berkeley. Não chega nem perto da complexidade dos plugins WordPress de código aberto muito maiores que mantenho para mais de 50.000 usuários.
Também: A função do desenvolvedor está mudando radicalmente. Esses números mostram como
Na semana passada, quando usei o ChatGPT pela primeira vez para criar o plug-in rapidinha para minha esposa e tuitei sobre isso, os correspondentes em minhas redes sociais recuaram. Aqui estão algumas de suas preocupações:
É mau? Uma pessoa estava preocupada que a IA incorporasse informações maliciosas (ou pelo menos promocionais) no plug-in e um usuário não programador nunca saberia. Mas o fato é que, se você não é um programador e não consegue ler o código, mesmo que contrate outro humano, você realmente não sabe o que há dentro dele. Tudo se resume a confiar na reputação ou conseguir que alguém em quem você confia examine o código. No caso do código produzido em meu experimento, ele estava limpo.
É o melhor que pode ser? Aqui, novamente, as pessoas estavam mantendo o código da IA em um padrão diferente até mesmo dos codificadores humanos. Sou um bom programador, mas meu código tem bugs. Não é o melhor que pode ser… pelo menos não no começo. Mas com humanos, o código fica melhor com o tempo. Não tenho certeza se uma IA pode pegar um código existente, melhorá-lo, depurá-lo e aprimorá-lo. No entanto, às vezes as coisas só precisam ser funcionais. Nem sempre importa se eles são os melhores dos melhores. Bom o suficiente geralmente é bom o suficiente. E gerou código que era bom o suficiente.
Isso reduzirá o número de shows de programação humana? Quase sem dúvida. Odeio ver uma máquina assumir o trabalho de qualquer pessoa (especialmente se for uma que eu queira). A IA é definitivamente uma opção para projetos rápidos e fáceis, seja escrevendo ou programando. Os contracheques das pessoas serão impactados, sem dúvida.
Eu tenho estudado IA por décadas. Fiz uma tese sobre IA. Mas mesmo com todo esse histórico, esse aumento na IA generativa de alta qualidade foi surpreendente para mim. Dito isso, o que estamos vendo agora é o nível de produtividade “suficientemente bom”. Infelizmente, é isso que muitos clientes exigem.
Mas – pelo menos por enquanto – o ChatGPT e seus amigos não podem escrever artigos de análise super aprofundados como este, porque refletem opiniões, anedotas e anos de experiência. E embora eles provavelmente possam escrever sub-rotinas e funções para projetos de codificação maiores, eles simplesmente não são capazes de escrever grandes projetos de codificação.
Por exemplo, tive de 20 a 30 reuniões no ano passado com um grande provedor de API para integrar seu serviço ao meu. A maioria dessas reuniões misturava questões de negócios com requisitos técnicos e políticas de licenciamento. Eu desafio qualquer IA a tolerar, entender as nuances e atender aos requisitos de parceiros desse tipo de situação burocrática e, então, ser capaz de produzir módulos de código com os quais todos possam concordar.
Então, sim, estou um pouco assustado com a qualidade do plug-in que “fiz” para minha esposa. Mas a IA ainda tem um longo caminho a percorrer antes de receber o trabalho de desenvolvedores e escritores experientes – desde que os clientes querer o tipo de trabalho que desenvolvedores e escritores experientes produzem. E isso, meus amigos, é algo que eu fazer preocupado sobre.
Você pode acompanhar minhas atualizações diárias do projeto nas redes sociais. Certifique-se de me seguir no Twitter em @DavidGewirtzno Facebook em Facebook.com/DavidGewirtzno Instagram em Instagram.com/DavidGewirtze no YouTube em YouTube.com/DavidGewirtzTV.
source – www.zdnet.com