Se você pensou que 2024 poderia ser o ano em que o discurso sobre IA generativa desaceleraria, tenho más notícias. Ninguém está revertendo o curso da IA. Ela veio para ficar, e precisamos trabalhar com ela. A maioria dos desenvolvedores de software hoje já sabe disso.
IA Generativa: Desafios e Soluções para Desenvolvedores
A IA generativa nem sempre funciona bem com desenvolvedores. Um dos maiores desafios que os desenvolvedores provavelmente enfrentarão em 2024 é como evitar cair em maus hábitos de IA generativa que os tornarão piores programadores. Como eles farão isso? O primeiro passo é tirar o “grande” dos grandes modelos de linguagem (LLMs) porque, para codificação empresarial comercial séria e sensível, os LLMs de uso geral podem estar crescendo um pouco demais.
LLMs e Codificação
Embora modelos de linguagem grande ofereçam aos desenvolvedores de software muitas ferramentas úteis, eles podem introduzir alguns problemas não intencionais. Como eles extraem de conjuntos tão grandes de dados, você pode acidentalmente introduzir código protegido por direitos autorais ou com falhas em seu produto. Os codificadores seriam sábios em empregar modelos menores e mais refinados em seu trabalho.
Quando os LLMs se Tornam Grandes Demais para a Codificação
Pesquisadores da Universidade de Washington já questionaram o tamanho crescente dos LLMs anos atrás. Poucos, porém, poderiam negar a promessa atraente de LLMs como GPT-4 para tornar os programadores mais eficientes. Quem diria não a um tempo de colocação no mercado mais rápido? A ideia de desenvolvedores se transformando em arquitetos em vez de codificadores é tentadora. Além disso, ferramentas como ChatGPT são mentores fantásticos para ajudar jovens programadores a se familiarizarem com os fundamentos da programação.
Mas, apesar de todas as suas maravilhas, os LLMs tradicionais de hoje são como Hoovers digitais gigantes, sugando indiscriminadamente quase tudo na web. Eles também não são exatamente transparentes sobre de onde estão obtendo dados — uma enorme fonte de problemas de confiança. Se você não sabe de onde um modelo está obtendo seus dados, como sabe que não acabou acidentalmente com um código protegido por direitos autorais ou que o código é bom em primeiro lugar?
Você não quer que sua empresa lance uma máquina de café com WiFi, por exemplo, apenas para descobrir seis meses depois que parte do código gerado para ela é muito semelhante (se não o mesmo) ao código protegido por direitos autorais de uma organização completamente diferente.
Isso pode acontecer naturalmente quando humanos escrevem código do zero, mas as chances parecem ser maiores ao usar a IA generativa. Se até 1% do código for duvidoso, isso é uma preocupação. E se seu produto não tiver capacidade de atualização over-the-air, você terá que retirá-lo. Esse não será um bom dia para ninguém.
Com isso em mente, você não pode culpar as empresas por seu descontentamento com o progresso da IA generativa. Cerca de dois terços dos executivos de nível C em uma pesquisa recente do Boston Consulting Group expressaram que estão menos do que satisfeitos com a IA generativa.
Em minhas próprias conversas com clientes com quem trabalhamos na Qt, estou ouvindo mais e mais pessoas expressando preocupação sobre construir seus produtos com assistentes de IA generativa de código fechado. Os modelos simplesmente não estão dando às equipes de desenvolvimento as respostas personalizadas e de qualidade de que precisam ao inserir perguntas nos chatbots.
Alguns se voltaram para engenharia rápida para refinar resultados, mas essa dificilmente é a única opção viável. No mínimo, a engenharia rápida é um processo altamente tedioso e demorado. Além disso, o custo de um engenheiro rápido dedicado pode superar os benefícios — no ano passado, alguns relataram salários de até US$ 300.000.
Não, existe uma solução mais econômica, e a resposta está em modelos mais especializados.
Os Programadores Devem Procurar Modelos Menores para Assistência de IA
Grandes modelos de linguagem não são a única maneira de ter sucesso na geração de código assistida por IA. Estamos vendo um impulso crescente para LLMs menores e mais focados, especializados em codificação. O motivo? Eles são simplesmente melhores.
Já existem muitas opções no cenário, desde BigCode e Codegen até CodeAlpaca, Codeium e StarCoder. O StarCoder em particular, apesar de ser bem menor, foi descoberto que supera os maiores modelos como PaLM, LaMDA e LLaMA em termos de qualidade e relevância dos resultados. O fato de o ajuste fino de um modelo menor estar superando o de seus pares maiores e mais populares não é surpreendente, porque ele foi feito sob medida para codificação.
Provavelmente continuaremos vendo mais fornecedores tentando competir com empresas maiores de LLM criando esses modelos menores e hiperfocados, incluindo em todos os setores, de tecnologia médica a finanças e bancos, e muito mais. Se todos eles serão tão bons quanto a oferta da OpenAI é discutível.
Da perspectiva de um codificador, no entanto, eles provavelmente estarão muito mais seguros evitando o vazamento de dados não seguros ou legalmente sensíveis se o pool do qual eles extraem for consideravelmente menor. E faz sentido: você realmente precisa que seus LLMs estejam cheios de informações estranhas que não beneficiam sua escrita de código, como quem ganhou o Prêmio Nobel de Literatura em 1952?
LLMs hipergrandes como o GPT-4 da OpenAI são ótimos para dar consultoria técnica, como explicar código, ou por que ou como usar certos métodos de programação. No entanto, nenhum desses conselhos acaba diretamente no seu código de produção. Para gerar código que você entrega aos clientes, você pode optar por modelos dedicados e menores que são pré-ajustados e ajustados com conteúdo confiável. De qualquer forma, 2024 provavelmente será o ano em que os desenvolvedores começarão a examinar cuidadosamente qual LLM eles usam para cada tarefa.
Tabela Comparativa de Modelos de Linguagem
Modelo de Linguagem | Tamanho | Foco | Vantagens | Desvantagens |
---|---|---|---|---|
GPT-4 | Grande | Geral | Alta capacidade de gerar texto | Risco de vazamento de dados |
StarCoder | Médio | Codificação | Alta qualidade e relevância | Menor capacidade de gerar texto |
CodeAlpaca | Pequeno | Codificação | Foco específico | Menor capacidade de gerar texto |
Codeium | Pequeno | Codificação | Foco específico | Menor capacidade de gerar texto |
BigCode | Grande | Codificação | Alta capacidade de gerar texto | Risco de vazamento de dados |
Adapte a Ferramenta à Tarefa
Nenhuma ferramenta de IA generativa (como o ChatGPT) substitui programadores reais; eles não podem ser considerados uma solução infalível para produzir grandes volumes de código.
Isso não quer dizer que a IA generativa não transformará o cenário do DevOps nos próximos anos, mas se houver um futuro em que a IA generativa elimine a necessidade de supervisão humana, não estamos nem perto disso. Os desenvolvedores ainda terão que tratar cada linha de código como se fosse deles e fazer aos colegas a mesma pergunta que sempre deveriam fazer: “Este é um código bom ou ruim?”
Mas, como inevitavelmente teremos que trabalhar mais próximos da IA para atender às crescentes demandas de software do mundo, deveríamos pelo menos garantir que a IA funcione para os desenvolvedores, e não o contrário. E às vezes isso significará procurar um LLM que não seja necessariamente o maior — ou o mais popular — mas o adequado para a tarefa de codificação em questão.
Perguntas Frequentes
1. Por que os desenvolvedores devem considerar modelos menores de linguagem para assistência de IA?
Os desenvolvedores devem considerar modelos menores de linguagem para assistência de IA porque eles são mais especializados e menos propensos a introduzir código protegido por direitos autorais ou com falhas. Modelos menores são mais fáceis de ajustar e personalizar, tornando-os mais eficientes para tarefas específicas de codificação.
2. Quais são as desvantagens dos grandes modelos de linguagem (LLMs)?
As desvantagens dos grandes modelos de linguagem (LLMs) incluem a possibilidade de introduzir código protegido por direitos autorais ou com falhas, a falta de transparência sobre a origem dos dados e o risco de vazamento de dados não seguros ou legalmente sensíveis. Além disso, LLMs grandes podem ser mais lentos e mais caros de treinar.
3. Como a engenharia rápida pode ser usada para refinar resultados de IA generativa?
A engenharia rápida pode ser usada para refinar resultados de IA generativa ao permitir que os desenvolvedores ajustem e personalizem os modelos de linguagem para melhor atender às suas necessidades específicas. No entanto, a engenharia rápida pode ser um processo tedioso e demorado, e o custo de um engenheiro rápido dedicado pode superar os benefícios.
4. Por que a transparência é importante ao usar LLMs para codificação?
A transparência é importante ao usar LLMs para codificação porque permite que os desenvolvedores saibam de onde os dados estão sendo obtidos e garante que o código gerado seja seguro e de alta qualidade. A falta de transparência pode levar à introdução de código protegido por direitos autorais ou com falhas, o que pode causar problemas legais e técnicos.
5. Como os desenvolvedores podem garantir que a IA funcione para eles, e não o contrário?
Os desenvolvedores podem garantir que a IA funcione para eles, e não o contrário, ao escolher modelos de linguagem que sejam adequados para a tarefa de codificação em questão. Isso pode significar optar por modelos menores e mais especializados que são pré-ajustados e ajustados com conteúdo confiável. Além disso, os desenvolvedores devem tratar cada linha de código como se fosse deles e fazer aos colegas a mesma pergunta que sempre deveriam fazer: “Este é um código bom ou ruim?”
Conclusão
Em 2024, a IA generativa continuará a ser uma força dominante no desenvolvimento de software. No entanto, os desenvolvedores devem estar cientes dos desafios e das soluções disponíveis para garantir que a IA funcione para eles, e não o contrário. A escolha de modelos menores e mais especializados pode ajudar a evitar problemas de direitos autorais e falhas de código, enquanto a transparência e a personalização são cruciais para garantir a qualidade e a segurança do código gerado.