Github Copilot, IA programadora e low-code/no-code em Data Science
A tendência é o “como fazer” ser cada vez mais relegado às máquinas, cabendo a humanos (inclusive a quem lida com código) saber “o que” e “por que” fazer
No texto “Um ano de GPT-3, a IA que se comunica (e até codifica) como humano”, comentamos sobre o uso de Inteligência Artificial para automatizar o trabalho de programação, o que traz benefícios e, é claro, questionamentos e implicações a quem trabalha com software, de desenvolvedores a cientistas de dados, por exemplo.
Pois mal digerimos a novidade do GPT-3 e já surgiu outra ferramenta que pode ser chamada de “filha” dela, especializada na geração de código.
Em 29 de junho de 2021, a plataforma de armazenamento e versionamento de código Github, em parceria com a OpenAI, a organização por trás do GPT-3, anunciou o Github Copilot, uma espécie de “programador em par” virtual capaz de gerar desde autopreenchimento de linhas até a criação de funções inteiras para quem lida com código.
Tudo bem que já existem outras aplicações que fazem o mesmo, como Kite, Tabnine e similares. A diferença, agora, é que a IA por trás do Copilot é como uma versão do GPT-3 treinada em código, ou seja, carrega todo o poder daquele modelo de geração de linguagem e tem a faca e o queijo na mão para dominar o mundo da programação.
O Github é a maior plataforma de armazenamento e versionamento de código da atualidade, o que lhe dá acesso a uma enorme comunidade e a muito código. Por trás da plataforma, está a Microsoft, que a adquiriu em 2018, na tentativa de retomar mercado e avançar sobre o código aberto.
A OpenAI, a organização que criou o GPT-3, e que já tinha em sua participação, por exemplo, Microsoft e Elon Musk (o fundador da Tesla e SpaceX), a partir de 2019 anunciou parceria exclusiva com a empresa fundada por Bill Gates e, em 2020, comunicou o licenciamento do GPT-3 para que a Microsoft o usasse em seus produtos e serviços.
A parceria exclusiva, a partir de 2019, foi para poder treinar o GPT-3. O algoritmo, exigente em poder computacional, foi treinado em um supercomputador de IA da Azure, a nuvem da Microsoft.
Para relembrar, o GPT-3 é uma rede neural com 175 bilhões de parâmetros1 e que foi treinada em 45 terabytes de textos da web ou cerca de 499 bilhões de palavras.
O que o Copilot usa, nos bastidores, é uma parte do OpenAI Codex, uma IA “descendente” do GPT-3, capaz de traduzir linguagem natural em código. O Copilot (ainda) não tem esse poder, mas o que está em seu núcleo, o Codex, em teoria, permite que você diga em linguagem natural o que deve ser programado e a IA, por meio de um editor de código, gera o código para você.
Exemplo hipotético e simplório: digamos que queremos criar código para classificar perfis de clientes de acordo com alguns critérios, uma tarefa do dia a dia da Ciência de Dados. Em vez de quebrar a cabeça digitando e lembrando todo o código, bibliotecas e funções, o Codex permite dizer a ele algo como “crie um classificador de perfil de clientes em Python” e ele se encarregará de gerar o código.
“Programar envolve ter uma ideia sobre como fazer algo e, em seguida, implementá-la, e o GitHub Copilot é bom na segunda parte” — Greg Brockman, co-fundador e CTO da OpenAI, à CNBC.
É claro que não é tão “mágico” assim, você pede e a coisa sai prontinha. Mas aí está outra capacidade do Codex, que já começa a ser aprimorada com o Copilot: conforme mais gente usa a ferramenta para autopreencher e autocompletar trechos de código, mais o algoritmo por trás aprende e se aperfeiçoa, o que pode levá-lo a patamares sem precedentes de qualidade e precisão.
Em princípio, a ferramenta funciona melhor com as linguagens Python, JavaScript, Typescript, Ruby e Go, algumas das mais populares hoje, conforme o CEO do Github, Nat Friedman, na postagem de lançamento. Mas, com o tempo, deve se aperfeiçoar na geração de código em outras linguagens também.
Junte a Microsoft (um império baseado em código), o Github (o maior repositório de código do mundo) adquirido por ela, o GPT-3 (maior IA geradora de linguagem natural já criado) cedido a ela, e o OpenAI Codex (o poder do GPT-3 para geração de código) treinado, para variar, no próprio Github e outras bases abertas, e se tem indícios da penetração que a novidade pode ter na comunidade de código. A Microsoft investiu US $1 bilhão na OpenAI para colher frutos como esses, para se ter ideia.
Mais: o Github Copilot funcionará apenas como extensão para o VS Code, editor de código também da Microsoft, pelo menos por enquanto. A API do Codex, com os recursos completos de tradução de linguagem natural em código, segundo a OpenAI, deve estar disponível a outros interessados até o fim deste verão no hemisfério Norte.
No momento, o Copilot é experimental. É preciso se inscrever em lista de espera para poder utilizá-lo. Normalmente, a OpenAI concede acesso em primeira mão apenas a parceiros confiáveis, a fim de testar a ferramenta e evitar usos nocivos ou indiscriminados (o GPT-3, por exemplo, até o momento é restrito e controlado, dado seu poder, que pode ser usado para fins nada nobres, como geração de conteúdo de ódio em larga escala).
A novidade não deixa de despertar preocupações e questionamentos de ordem prática, é claro. Há preocupação com a qualidade dos códigos gerados, sujeitos a herdar bugs, brechas de segurança e má-práticas contidas nos conjuntos de treinamento.
As perguntas frequentes do Copilot abordam algumas dessas questões. Elas lembram que o código gerado não é perfeito; afirmam que “a grande maioria do código que sugere é gerado exclusivamente e nunca foi visto antes”, sobre a possibilidade de cópias na íntegra de outros códigos; falam sobre autoria do código gerado com ajuda da extensão e como ele lida com dados pessoais embutidos no treinamento.
Também reconhece que a ferramenta pode gerar código indesejável, mas que trabalha para excluí-los do conjunto de treinamento e fornece um e-mail (copilot-safety@github.com) para denunciar saídas ofensivas.
A tarefa, agora, é acompanhar os relatos que irão surgir do uso da extensão. Como tudo que envolve GPT-3 gera furor quase imediato, já há algumas opiniões de quem conseguiu autorização para botar a mão na massa na ferramenta, como o artigo “Some Experiments using GitHub Copilot with Python” (“Alguns experimentos usando GitHub Copilot com Python”).
O que mais prospera nessas ocasiões, em todo o caso (exemplos aqui e aqui), é aquela velha pergunta sobre se o rádio iria acabar com a televisão, isto é, se a IA vai acabar com o emprego dos programadores — enfim, aquele modo de ver novas tecnologias como bestas apocalípticas.
IA programadora
Perguntar se ou afirmar que a Inteligência Artificial irá acabar com programadores é uma daquelas simplificações totalizantes que não condizem muito com o que sabemos sobre a realidade.
Fenômenos sociais, em geral, não são instantâneos como um raio ou uma colisão frontal. Eles progridem de forma caótica e invisível, como o capim que cresce à beira da estrada, sem que consigamos acompanhar e delimitar o momento em que acontece significativa uma mudança de estado (o matagal avançando sobre a pista, por exemplo).
Portanto, esqueçamos eventos perfeitos que geram uma mudança de estado completa (a qual, no nosso caso, seria apenas a IA substituindo todos os humanos na programação de computadores). A perder de vista, é muito difícil, quase improvável, que isso ocorra, embora haja probabilidade, é claro.
Contudo, a modificação de postos de trabalho que lidam com programação e a redução daqueles que a IA poderá substituir, obviamente, são plausíveis de serem transformados e eliminados a médio ou até a curto prazo. É uma questão de eficiência econômica e, mais do que isso, das origens humanas.
Desde que se conhece por sapiens, o ser humano busca dominar a natureza (e outros ao seu redor), e utiliza a tecnologia para isso. O objetivo é satisfazer suas necessidades com o menor gasto de energia possível, para que possa ter todo o tempo para desfrutar daquilo que deseja.
Essa busca parece ser irrefreável, faz parte do humano. Enquanto puder criar uma forma mais eficiente de fazer algo, principalmente aquilo que é enfadonho e repetitivo, fará, mesmo que demore décadas ou séculos.
Apenas para lembrar, quando o campo da Inteligência Artificial foi formado, na década de 1950, nos EUA, vendia-se com um otimismo efusivo que já naquela década seria possível fazer tradução automática de documentos e gravações do russo para o inglês (era época de Guerra Fria, e os americanos tinham uma tara por saber o que acontecia com os rivais soviéticos).
Não aconteceu conforme se imaginava, mas nem por isso se desistiu da busca. Cinco décadas depois, a tradução automática se tornou possível de fato com o Google, por meio de uma abordagem de aprendizado gradativo, que até hoje aperfeiçoa a tarefa, mas sem estar totalmente livre de erros.
Tradutores humanos até o momento não se extinguiram por causa disso. É possível afirmar que nunca serão extintos pela IA? Não. Não sabemos sobre futuro, apenas imaginamos e opinamos e dispomos de alguns cálculos para nos assegurar de probabilidades. É possível que esses mesmos tradutores continuem a existir por um longo tempo ainda? Talvez, se tomarmos por base o passado recente.
O que ocorre na prática é adaptação. Provavelmente há tradutores que se usam da ajuda da automação para agilizar trabalhos. Por outro lado, a tradução automática democratizou o acesso a artigos e vídeos (por meio das legendas) e permitiu conversação rápida e informal entre pessoas de idiomas diferentes, entre outras facilidades.
Trazendo para o contexto da programação, é mais provável que a inserção gradativa da IA na atividade modifique práticas e papéis, eliminando funções baseadas em repetição e retrabalho, mas criando novas ocupações, pelo menos de duas formas.
A primeira forma é por meio da própria colaboração com a máquina. Conforme uma novidade se estabelece, é natural que surjam novas especializações para lidar com ela. Como o ser humano é craque em se adaptar, irá, aos poucos, migrar para novos postos de trabalho onde atue em colaboração com a máquina — o conceito de centauros, times formados por máquinas e humanos, como já ocorre no xadrez, por exemplo.
A segunda forma é por meio dos efeitos colaterais que qualquer nova tecnologia causa. Sempre há novos problemas que surgem e que precisam ser tratados, o que demanda mais capacidade de tomada de decisão humana, seja em aspectos educativos (treinamento), seja regulatório (leis e políticas), seja nos conflitos (judiciário), entre outras áreas.
Repare-se como não é nada 8 ou 80 como vozes eufóricas ou apocalípticas tendem a anunciar. Há muitas nuances em questões sociais que tornam as totalizações ingênuas.
Low-code e no-code em Data Science
O que resta a ser feito é o que sempre fizemos como humanidade: acompanhar as tendências, extrair o que é útil delas, manter algum senso de alerta e se adaptar às mudanças. Está aí a Covid para nos lembrar disso. Melhor não se apegar tanto ao presente, que logo será passado, nem esperar para agir na última hora.
Iniciativas como o GPT-3, o Github Copilot e similares vão de encontro ao que descrevemos como movimento da tecnologia, mais do que simples tendência, sobre soluções de baixo código (low-code) ou nenhum código (no-code), em um texto da nossa Newsletter sobre Product Management e UX Design.
Para definições, low-code são soluções prontas que exigem algum conhecimento em programação (muitas vezes, em uma linguagem proprietária ou apenas em algumas bibliotecas e funções), para serem operadas ou configuradas. No-code são as soluções do tipo “arraste-e-solte”, que não exigem domínio de programação.
Obviously.ai, H2O.ai, Levity.ai e várias outras plataformas do chamado AutoML são exemplos de soluções do tipo para Data Science. Possibilitam percorrer todo o fluxo de obter, limpar, analisar, modelar e colocar soluções para funcionar sem termos de mergulhar (ou, pelo menos, podendo ficar mais próximo da superfície) em código, estatística e matemática.
Teachable Machine, uma proposta educativa, permite construir modelos de aprendizagem de máquina para classificar imagens, sons, movimentos sem precisar codificar, o que é um aliado para introduzir crianças e adolescentes no assunto. (Os resultados, por curiosidade, são gerados em tensorflow.js, biblioteca para machine learning em Javascript, o que permite soluções de ML no front-end, outra tendência.)
Ambientes como esses ainda dependem de cliques e movimentos de mouse e um certo aprendizado para operá-los. Agora, imaginemos acoplar o poder de comunicação por meio de um GPT-3 a esses serviços. Em vez de clicarmos, arrastarmos ou digitarmos algum código ainda inacessível à maioria, apenas expressarmos, em linguagem humana, o que queremos que a máquina faça?
O GPT-3 torna essa realidade alcançável e, certamente, soluções desse tipo passam pela cabeça de seus criadores e investidores. Vale lembrar que a Microsoft, décadas atrás, fez uma revolução em empresas de todos os tamanhos com a suíte Office, principalmente com o Word e o Excel.
Ambas democratizaram o acesso à criação de documentos profissionais e o armazenamento de dados e cálculos, em uma época em que se teria de recorrer a soluções muito mais especializadas, caras e arcanas para as mesmas tarefas. (Mesmo tendo aposentado operadores de máquinas de escrever, esses softwares também criaram ou facilitaram muito mais postos de trabalho).
Quanto mais operamos em escala, mais tendemos à padronização, o que é meio caminho para a automação. Se conseguirmos juntar isso com agilidade, baixo custo e pouca ou nenhuma necessidade de especialização para fazê-lo, vamos fazê-lo sem olhar para trás.
O que fica de lição é que cabe acompanhar essas tendências e enxergar oportunidades nelas, mais do que encará-las com desconfiança ou simplesmente dar de ombros.
Uma automação como o Github Copilot, dentro de alguns anos, pode ser um novo padrão no mercado, com milhares ou milhões de profissionais de código usando-o no dia a dia. A tecnologia irá ficar melhor à medida que mais gente usar, o que, por consequência, irá atrair mais pessoas.
Mais dia, menos dia, a Microsoft ou outras empresas irão acoplar a capacidade do Codex ou do GPT-3, de forma generalista, a um software pronto de testes A/B, para limpeza ou exploração de dados ou mesmo aprendizado de máquina, como as soluções de AutoML.
Reduzindo-se custos e viabilizando-se uma ferramentas dessas, muitas pessoas de negócios, sem necessitar ter todo um background técnico, irão operá-las, construir novas soluções sobre elas e destravar avanços sem depender de especialistas.
Em um cenário assim, será muito mais necessário dominar capacidades de saber “o que” fazer, como interpretar e analisar experimentos, entender como algoritmos realmente funcionam e, é claro, saber se comunicar e extrair o máximo da máquina, do que sujar a mão com código repetitivo e toda a carpintaria que software ainda requer.
É melhor se atentar a isso do que ficar resmungando, depois, que a área foi inundada por amadores ou reclamar que o mercado não aceita mais profissionais experientes (e atrasados). Adaptação e sobrevivência individual, em resumo. Quanto aos aspectos coletivos, aí dependem de política, que é outra história.
Comentários nos ajudam a saber quais temas a comunidade deseja ver tratados aqui e a ampliar discussões.
O que você pensa que pode acontecer com automações como o Github Copilot e o GPT-3 surgindo? São só novidades da moda, por enquanto? Causam certa desorientação? É assunto demais para absorvermos? Mal aprendemos algo e já nos sentimos desatualizados? Fiquem à vontade para participar nos comentários.
No próximo texto, aprofundaremos uma abordagem sobre Inteligência Artificial e Data Science, como uma área se relaciona com a outra, um pouco da história da IA e o que temos até aqui no campo. Até lá!
Artigo escrito por Rogério Kreidlow, jornalista, que gosta de observar a tecnologia em relação a temas amplos, como política, economia, história e filosofia.
Um parâmetro em deep learning (aprendizado profundo) é uma propriedade de treinamento. No caso de geração de linguagem natural, pode ser a frequência de palavras, o comprimento de frases, a distribuição de verbos e substantivos nelas, por exemplo.