A Inteligência Artificial (IA) e os Large Language Models (LLMs) estão revolucionando a indústria de tecnologia. E, no Nubank, estamos usando essas tecnologias para aprimorar os fluxos de trabalho de engenharia no Brasil, México e Colômbia. Em uma palestra recente no Clojure Conj 2024, Carin Meier, Principal Software Engineer no Nubank, e Marlon Silva, Software Engineer no Nubank, compartilharam como as ferramentas baseadas em IA estão transformando a forma como trabalhamos.

O Clojure Conj, conferência realizada desde 2010, é um evento chave para a comunidade global de Clojure. Ela reúne desenvolvedores e líderes da área para discutir as últimas tendências na programação em Clojure. Em 2024, a conferência foi a oportunidade perfeita para Carin e Marlon apresentarem como o Nubank está integrando IA, incluindo LLMs, para agilizar nossos processos de engenharia.

Neste artigo, exploraremos os principais pontos da palestra e como essas ferramentas de IA estão otimizando tudo, desde a geração de código até a colaboração em equipe no Nubank — e como elas também podem ajudar sua equipe.

O que são Large Language Models (LLMs)?

Antes de mergulharmos nas nossas experiências, vamos começar com uma visão geral rápida sobre o que são LLMs e como eles funcionam.

De maneira geral, LLMs como GPT-3 e GPT-4 são modelos de aprendizado de máquina treinados em vastos conjuntos de dados para prever a próxima palavra (ou token) em uma sequência com base no contexto fornecido. Eles são projetados para imitar a compreensão e a geração de linguagem de forma humana.

Por exemplo, quando você digita um prompt como “Clojure é uma linguagem de programação adorável que permite que você”, um LLM pode prever e continuar a frase com algo como “faça um programa em um estilo funcional puro”. O modelo faz isso baseando-se em padrões que aprendeu durante o treinamento, onde encontra grandes quantidades de código e documentação, permitindo gerar frases significativas em resposta.

No entanto, os LLMs não são perfeitos. Eles exigem experimentação para entender seu potencial, especialmente quando se trata de gerar código em linguagens de programação específicas como Clojure, uma linguagem que não possui tantos dados públicos de treinamento em comparação com linguagens mais populares como Python ou JavaScript.

Conheça nossas oportunidades

O poder da avaliação: testando LLMs para Clojure

Para entender se os LLMs poderiam realmente aprimorar os fluxos de trabalho de engenharia, precisávamos testar suas capacidades. No Nubank, selecionamos alguns modelos e os utilizamos para gerar código Clojure. Enquanto muitos benchmarks existentes mostravam resultados impressionantes para linguagens como Python e JavaScript, estávamos curiosos para saber como esses modelos se comportariam com Clojure, que uma sintaxe própria e conceitos únicos.

Inicialmente, utilizamos uma ferramenta chamada MultiPL-E (Multi-Programming Language Evaluation of Large Language Models of  Code) Benchmarking Tool. Essa ferramenta de código aberto nos permite testar a qualidade do código gerado por LLMs com base em um conjunto de problemas pré-definidos, como os presentes nos conjuntos de dados HumanEval e MBPP.

Com essa ferramenta, passamos a colocar à prova nossa capacidade de geração de código em Clojure. Graças ao inestimável apoio de Alex Miller, uma figura importante na comunidade de Clojure e parte vital das operações do Nubank, integramos Clojure ao MultiPL-E e começamos a compará-lo lado a lado com Python e JavaScript.

No início, não aplicamos nenhum ajuste especial ou artifícios de engenharia; queríamos apenas observar o potencial bruto dos modelos mais recentes (incluindo projetos open source como Llama3 e variantes privadas de GPT da OpenAI) na produção de código pronto para uso em produção. Não foi surpresa que, de início, Clojure ficasse um pouco atrás de Python e JavaScript—provavelmente reflexo do corpus menor de código em Clojure utilizado para treinar a maioria dos LLMs—mas a surpresa foi a proximidade real desses resultados.

A cada nova versão—GPT-3.5, GPT-4, GPT-4o, o1-preview, o1 e além—temos observado essa diferença diminuir ainda mais. É animador ver Clojure ganhando terreno tão rapidamente, e isso nos dá esperança em um futuro em que a disparidade entre linguagens praticamente desapareça. À medida que mais modelos são treinados em conjuntos de dados cada vez mais diversos, esperamos ver o desempenho de Clojure equiparar-se ao de Python e JavaScript.

A comunidade de código aberto e esforços contínuos como o MultiPL-E estão avançando para melhorar o suporte e a visibilidade de linguagens funcionais, e estamos empolgados com o que isso significa para os desenvolvedores que contam com Clojure todos os dias.

A lição aqui? Não tenha medo de experimentar. Teste diversos modelos e veja como eles se alinham com seus casos de uso específicos. O desempenho desses modelos pode variar significativamente dependendo das suas necessidades.

Construindo ferramentas flexíveis para equipes de Engenharia

Uma das principais lições da nossa jornada com os LLMs foi a importância de construir ferramentas flexíveis e extensíveis. O mundo da IA está se movendo tão rápido que não conseguimos prever exatamente o que nossos engenheiros precisarão no próximo mês, quanto mais no próximo ano.

No Nubank, abraçamos essa incerteza. Criamos ferramentas pequenas, modulares e fáceis de adaptar à medida que novos desenvolvimentos surgem. Um bom exemplo disso é o Roxy, um proxy local que facilita o uso de LLMs em um ambiente regulamentado.

O Roxy foi projetado para garantir que qualquer interação com LLMs esteja em conformidade com as regulamentações de segurança e compliance. Em vez de construir uma solução complexa e personalizada para um caso de uso específico, criamos uma interface simples e flexível que os engenheiros podem usar de várias maneiras. Essa abordagem permite nos adaptarmos rapidamente aos novos requisitos e oportunidades que surgem.

A lição aqui é que as equipes não devem superdimensionar suas ferramentas. Elas devem criar algo simples e capaz de crescer e evoluir junto com a tecnologia.

Fomentando uma comunidade para compartilhar insights sobre IA

Em qualquer campo de rápida evolução, a colaboração é fundamental. No Nubank, descobrimos que criar comunidades de prática — o que chamamos de guildas — é inestimável. Esses são grupos de usuários internos nos quais compartilhamos experiências, discutimos desafios e buscamos maneiras de usar novas ferramentas, como os LLMs, de forma eficaz.

Ao nos reunirmos regularmente, garantimos que todos se mantenham atualizados sobre os últimos avanços da IA e tenham a chance de fornecer feedback. Isso nos ajuda a melhorar continuamente nossas ferramentas e técnicas de integração de LLMs aos fluxos de trabalho de engenharia.

Se você está trabalhando com IA ou qualquer nova tecnologia, considere criar sua própria comunidade. É uma ótima maneira de continuar aprendendo e se manter à frente da curva.

LLMs podem nos ajudar a pensar?

Enquanto muitas pessoas temem que a IA substitua o pensamento humano, acreditamos que os LLMs podem, na verdade, aprimorar nosso pensamento – se usados corretamente. Por exemplo, os LLMs podem ajudar engenheiros e gerentes de produto a pensar criticamente, fazer melhores perguntas e abordar problemas de novos ângulos.

Uma coisa que considerámos útil é utilizar a IA para nos guiar na identificação da causa principal de um problema, ao invés de nos limitarmos a dar a resposta. Por exemplo, se estamos enfrentando um problema de desempenho em um microsserviço, podemos perguntar ao LLM algo como: “Como posso melhor estruturar uma solução para um microsserviço que funciona lentamente em uma operação de IO?”.

A ideia não é pedir uma resposta imediatamente, mas usar o LLM para nos ajudar a estruturar nosso pensamento. Ao usar LLMs dessa maneira, podemos mergulhar mais fundo no problema e encontrar melhores soluções.

Em outro exemplo, Marlon usou esse método para elaborar um relatório de produto. Ele pediu ao LLM que assumisse o papel de um gerente de produto e o ajudasse a estruturar um relatório para a alta gerência sobre o benchmark dos modelos LLM para Clojure. O resultado foi um relatório que superou as expectativas e impressionou o gerente de produto.

Olhando para o futuro: o poder dos agentes de IA autônomos

À medida que a IA evolui, a ideia de agentes autônomos que podem escrever código e resolver problemas por conta própria está se tornando mais real. Exploramos algumas ferramentas em estágio inicial, como o Open Hands, que usam LLMs para auxiliar em tarefas como análise de dados.

Em uma demonstração recente, encarregamos o Open Hands de realizar uma análise de dados no conjunto de dados Iris usando Clojure. O agente planejou, escreveu e executou o código de forma autônoma, demonstrando como os LLMs podem auxiliar os engenheiros em tarefas que normalmente exigiriam mais tempo e esforço. Embora a tecnologia ainda esteja em seus estágios iniciais, estamos entusiasmados com as possibilidades que ela apresenta.

Devin, um engenheiro de software autônomo de IA desenvolvido pela Cognition Labs, é outro exemplo de como a IA está transformando o desenvolvimento de software. Devin foi fundamental para nos ajudar a migrar nosso gigantesco sistema de ETL, com mais de 6 milhões de linhas de código.

Ao automatizar tarefas repetitivas, como refatoração e migração de código, Devin possibilitou que o Nubank concluísse um projeto inicialmente estimado em mais de 18 meses com mil engenheiros em apenas algumas semanas, aumentando a eficiência em 12 vezes e economizando custos de maneira significativa.

Olhando à frente

À medida que a IA continua a evoluir, fica claro que os LLMs não são apenas ferramentas para automatizar tarefas – eles são essenciais para aprimorar os fluxos de trabalho dos desenvolvedores. Ao integrar LLMs nos processos de engenharia do Nubank, vimos em primeira mão como eles podem aumentar a produtividade, fomentar a criatividade e preencher lacunas entre equipes técnicas e de negócios.

E, à medida que continuamos a explorar e refinar nossas soluções de IA, encorajamos outras organizações a experimentarem e construírem ferramentas flexíveis e extensíveis que se adaptem ao mundo acelerado da IA. O futuro da engenharia está aqui, e com os LLMs, as possibilidades são infinitas.

Saiba mais detalhes sobre o que compartilhamos sobre esse tema no vídeo a seguir:

Conheça nossas oportunidades