Cuidado com o hype - parte 2

Cuidado com o hype - parte 2

IAs não são inteligentes. Repita quantas vezes for necessário até isso entrar na sua cabeça. Ferramentas de IA são sistemas estatísticos sofisticados que reconhecem padrões e geram respostas com base em dados pré-existentes, mas não compreendem ou pensam como humanos.

No primeiro artigo que escrevi nesta rede social eu falei sobre isso, indicando o livro A Mente Nova do Imperador (por isso mesmo, não vou me alongar em explicações). Em outro artigo, Cuidado com o hype, falei sobre o risco de sair adotando uma tecnologia apenas porque é a trend do momento, e agora, mais de 5 anos depois, considerando todas as evoluções que tivemos no campo da IA, e, especificamente, o discurso do uso de IAs de uma forma geral, como se estivéssemos próximos de uma AGI, que, em tese, poderia substituir trabalhadores do conhecimento, é hora de voltar ao tema.

As IAs vão substituir os programadores na mesma medida que os IDEs ou frameworks de linguagens de memória gerenciada "substituíram" os programadores dos anos 70 e 80. Os programadores de hoje, no geral, não são como antes. Ninguém mais cria botões em janelas do Windows programando exatamente sua posição na tela. Você arrasta e solta, e, por trás, o seu IDE vai criar um código com a posição que você quer. Com as IAs, vai ser a mesma coisa: algumas coisas vão mudar, no sentido de que algumas ações serão mais rápidas (pelo auxílio prestado pelo software), porém, o core do desenvolvimento de sistemas, que é a função principal do desenvolvedor (transformar regras de negócio em instruções bem definidas), isso não vai mudar.

(Aliás, é até engraçado todo esse negócio de "engenheiro de prompt". Quer dizer, muita gente nunca conseguiu documentar bem determinadas regras de negócio para que programadores as transformassem em código, e agora precisam fazer exatamente isso: dar requisitos bem definidos para que uma IA faça algo).

O desenvolvedor, entretanto, que acha que vai jogar sua responsabilidade para uma IA vai quebrar a cara (e, acredito, teremos uma nova bolha, assim como houve um pouco antes e durante a pandemia, em que muita gente fez os tais cursos de 6 meses, até ganhou um dinheirinho, mas nunca conseguiu produzir muita coisa e deixou um legado caro pra empresa - ah, e que fique claro: a culpa disso é da empresa e seus dirigentes, que caíram em hypes). Eu uso bastante copilot e chatgpt para algumas coisas triviais, mas que podem demorar, como converter um código de uma linguagem pra outra, ou criar algum algoritmo simples. Porém, não deixo de ficar muito atento ao resultado e analisar bem o que eles me recomendam. Invariavelmente, o código está errado, mas eles são muito confiantes ao dizer que a solução está pronta e até mesmo o resultado esperado (que não se confirma, na prática).

Recentemente, fiz o chatgpt entrar num loop que foi até meus créditos diários acabarem, e fiquei 24 horas sem poder utilizar mais (ou seja, daí você tira o prejuízo que algumas empresas poderão ter, dependendo do que fizerem - me lembra as histórias de contas altíssimas da AWS pq alguém fez alguma lambda consumindo algum serviço que chamava a própria lambda, por exemplo).

Pedi para o chatgpt gerar um código em javascript que fizesse um parse de logs em um determinado formato. Havia uma complexidade: o parse precisava ser recursivo, porém, uma das propriedades tinha um padrão diferente. Eu expliquei isso, e dei um exemplo. Ele me gerou um código que usava regex, e até mesmo disse como ficaria meu exemplo, parseado. Não funcionou. Falei pra ele onde estava o problema, ele pediu desculpas e deu outro código. Não funcionou. Por umas 10 vezes, ele se desculpava e dizia ter gerado um código melhor, mas que nunca funcionava (era até engraçado: "agora vai funcionar", depois "este código é definitivo", depois "esta solução não vai falhar", etc...). Fui mudando as instruções, pedi para ele tentar sem regex, tentando algo na linha de um compilador, e nada, até que eu cansei de testar e pedi que ele próprio rodasse o código antes de me devolver a resposta, e aí que a magia aconteceu: ele respondia um código e entrava num modo de análise. Aí ele mesmo dizia que não tinha funcionado e que encontrou o problema, e dava outro código e entrava no modo de análise. De repente, ele mudou o código de js pra Python, mas ainda dizia que era js, e entrava nesse modo de análise. E foi assim mais umas 10 vezes, até os créditos acabarem.

Vejam que interessante, o momento em que pedi para ele mesmo executar o código:


Reparem que o código gerado ainda é javascript. Ele dá todo o código corrigido (segundo ele), mostra o resultado esperado dado o meu exemplo, e então faz uma explicação da abordagem e executa o teste. Ficou alguns minutos nessa análise, até concluir que deu errado, então ele faz mais um código, agora mudando para python.

Aí isso acontece mais umas duas vezes, até que, no meio da análise, surge a mensagem do fim dos créditos:


No fim, eu mesmo fiz um código que resolveu o problema.

Ainda assim, usei o copilot enquanto escrevia o código e ele dava sugestões para completar a linha, e para gerar uma massa de testes. No fim, um executivo que não entende nada do que eu faço poderia dizer que mais de 50% do meu código foi feito por IA, e não estaria errado. Talvez ele até pense em me mandar embora, achando que a IA estaria apta a me substituir em algum momento no futuro próximo.

Inclusive, isso me lembra da fala do CEO do Google, dizendo que mais de 25% do código lá gerado é feito por IAs, e aí veio um caminhão de gente deslumbrada achando que isso é uma grande mudança, que os programadores vão acabar, etc. Pois um engenheiro do Google esclareceu, dizendo que é até mais do que 25%: eles têm uma ferramenta similar ao copilot (inclusive, ele diz que o copilot é até melhor) que sugere código conforme o desenvolvedor vai escrevendo. Ou seja, o código é, de fato, gerado por IA, porém, quem usou copilot sabe que a sugestão dele nem sempre é a melhor; que é preciso ter alguém - o programador - pra entender o que está sendo sugerido. Para gerar código repetitivo, aí sim a ferramenta é uma mão na roda, porém, ele vai entender que o código é repetitivo devido a ter um programador ali gerando o inicial e corrigindo maluquices que a IA sugere (como o caso que acabei de compartilhar).

Essas frustrações, alucinações, são cada vez mais comuns. Na verdade, elas sempre aconteceram, mas existia a expectativa de que cada nova versão melhoraria muito este problema e estaríamos cada vez mais próximos de uma AGI - coisa que não aconteceu e, tudo indica, não acontecerá: o próprio presidente da OpenAI mencionou estarmos chegando a um teto nos modelos atuais. Porém, enquanto a coisa era mais uma "graça", um chatbot, ou até mesmo algo útil, como fazer resumo de reuniões, mas que, ainda assim, não gera um grande problema quando erra (pelo contrário, gera até algumas risadas), ok. O ponto é que muita gente quer dizer que usa IA, então procura colocar essa ferramenta em processos mais críticos, que envolvem finanças, por exemplo, e aí que o caldo entorna. De quem será a culpa se uma IA ler um contrato e entender que deve cobrar X, quando, na realidade, o correto seria X vezes 1000? Da área de TI? Do programador que fez a chamada para o LLM? Do gestor que, mesmo sem conhecimento, exigiu que se usasse uma IA naquele cenário?

Reflexões para o futuro

Aos desenvolvedores, especialmente os que estão entrando na área: se querem ter futuro, não sejam deslumbrados. Usar código gerado por IA sem uma profunda reflexão e entendimento sobre o que ele faz é mais perigoso ainda do que o já conhecido ctrl+c, ctrl+v no stackoverflow. Aproveite para aprender, mas não assuma que tudo o que uma IA te diz é correto (aliás, assuma que está errado, em primeiro lugar, e então faça uma análise profunda sobre o que foi gerado, inclusive com testes).

Aos gestores de TI (e gestores em geral): não sejam ingênuos. O uso de IA em cenários onde a precisão é importante vai gerar frustração, vai fazer você perder dinheiro, você vai achar que seu time é que é incompetente, e vai acabar contratando consultorias e "engenheiros de prompt" que, depois de um tempo, vão largar um código que não funciona como você esperava na mão do seu time...

O problema do hype é que, ao invés de você ter um problema e entender que a solução é a ferramenta X, você tem a ferramenta X e sai caçando um problema pra falar que usa a ferramenta X (substitua a ferramenta X por qualquer coisa, não apenas IA, e você vai ver que muito dinheiro é desperdiçado em ferramentas que foram compradas em jantares, e que agora precisam de um problema pra justificar seu uso).

A IA é uma ferramenta poderosa, mas está longe de ser autossuficiente. Cabe aos profissionais aprender a usá-la com sabedoria e aos gestores tomarem decisões informadas, evitando cair no hype que pode gerar mais problemas do que soluções.


Ps.: a imagem no topo deste artigo foi gerada por uma IA. Pedi à IA da Meta (Llama 3.2) que gerasse uma imagem de uma máquina substituindo um programador, e é isso que ela conseguiu imaginar. Um robô que parece um assassino olhando uma linha de código, usando seus dedinhos robóticos na tela para focar em uma linha específica. Dúvida: um robô programador precisa do seu dedo para focar em uma linha? Um robô precisa ter dedos para digitar, ao invés de se comunicar com a outra máquina por, sei lá, bluetooth? Aliás, ele precisa digitar código em linguagem de alto nível pra ser compilada em linguagem de máquina? Inclusive, ele parece um pouco perdido, procurando o ponto-e-vírgula que está faltando...

O curioso disso é que a "imaginação" da máquina até reflete um pouco da imaginação do público que não trabalha com isso (inclusive alguns gestores de TI, que não conseguiriam imaginar nada além disso aí mesmo, algo na linha do Exterminador do Futuro). Apesar de difícil mensuração, a realidade é que a imagem reflete a limitação das IAs em capturar conceitos complexos, e cabe a nós, humanos, sermos críticos em relação a elas, desde a decisão do uso da ferramenta em si para um determinado cenário, bem como do resultado produzido.

Entre para ver ou adicionar um comentário

Outras pessoas também visualizaram

Conferir tópicos