Mas leido
Building Stories
Modo Rua: Redefiniendo el desarrollo de aplicaciones mediante iteración centrada en el usuario Ago 23
Building Stories
NuStories: Adaptación de productos para clientes fanáticos en varios países Oct 30
Culture & Values
Cómo los valores y la cultura de Nu dan forma a los productos que creamos Ago 7
Carreras
Reunimos a grandes mentes de diversos orígenes que permiten la discusión y el debate y mejoran la resolución de problemas.
Conoce más sobre nuestras carreras



La Inteligencia Artificial (IA) y los Large Language Models (LLMs) están revolucionando la industria tecnológica. Y, en Nubank, estamos utilizando estas tecnologías para mejorar los flujos de trabajo de ingeniería en Brasil, México y Colombia. En una reciente charla en Clojure Conj 2024, Carin Meier, Principal Software Engineer en Nubank, y Marlon Silva, Software Engineer en Nubank, compartieron cómo las herramientas basadas en IA están transformando la forma en que trabajamos.
Clojure Conj, una conferencia que se lleva a cabo desde 2010, es un evento clave para la comunidad global de Clojure. Reúne a desarrolladores y líderes del área para discutir las últimas tendencias en programación en Clojure. En 2024, la conferencia fue la oportunidad perfecta para que Carin y Marlon presentaran cómo Nubank está integrando IA, incluyendo LLMs, para agilizar nuestros procesos de ingeniería.
En este artículo, explicaremos los principales puntos de la charla y cómo estas herramientas de IA están optimizando todo, desde la generación de código hasta la colaboración en equipo en Nubank, y cómo también pueden ayudar a tu equipo.
¿Qué son los Large Language Models (LLMs)?
Antes de sumergirnos en nuestras experiencias, comencemos con una visión general rápida sobre qué son los LLMs y cómo funcionan.
En general, los LLMs como GPT-3 y GPT-4 son modelos de aprendizaje automático entrenados en vastos conjuntos de datos para predecir la próxima palabra (o token) en una secuencia en función del contexto proporcionado. Están diseñados para imitar la comprensión y la generación de lenguaje de forma humana.
Por ejemplo, cuando escribes un prompt como ″Clojure es un lenguaje de programación encantador que te permite″, un LLM puede predecir y continuar la frase con algo como ″hacer un programa en un estilo funcional puro″. El modelo hace esto basándose en patrones que aprendió durante el entrenamiento, donde encuentra grandes cantidades de código y documentación, permitiendo generar frases significativas en respuesta.
Sin embargo, los LLMs no son perfectos. Requieren experimentación para entender su potencial, especialmente cuando se trata de generar código en lenguajes de programación específicos como Clojure, un lenguaje que no tiene tantos datos públicos de entrenamiento en comparación con lenguajes más populares como Python o JavaScript.
Descubre las oportunidades
El poder de la evaluación: probando LLMs para Clojure
Para entender si los LLMs realmente podrían mejorar los flujos de trabajo de ingeniería, necesitábamos probar sus capacidades. En Nubank, seleccionamos algunos modelos y los utilizamos para generar código Clojure. Si bien muchos benchmarks existentes mostraban resultados impresionantes para lenguajes como Python y JavaScript, teníamos curiosidad por saber cómo estos modelos se comportarían con Clojure, que tiene una sintaxis propia y conceptos únicos.
Inicialmente, utilizamos una herramienta llamada MultiPL-E (Multi-Programming Language Evaluation of Large Language Models of code) Benchmarking Tool. Esta herramienta de código abierto nos permite evaluar la calidad del código que generan los LLM a partir de un conjunto de problemas predefinidos, como los presentes en los conjuntos de datos HumanEval y MBPP.
Con esta herramienta, pudimos poner a prueba nuestra capacidad de generación de código en Clojure. Gracias al invaluable apoyo de Alex Miller, una figura destacada en la comunidad de Clojure y pieza fundamental en las operaciones de Nubank, integramos Clojure en MultiPL-E y comenzamos a compararlo en paralelo con Python y JavaScript.
Al principio, no aplicamos ningún ajuste especial ni trucos de ingeniería; simplemente queríamos observar el potencial bruto de los modelos más recientes (incluyendo proyectos de código abierto como Llama3 y variantes privadas de GPT de OpenAI) para producir código listo para producción. No fue sorpresa que Clojure quedara un poco detrás de Python y JavaScript en un inicio—probablemente reflejo del corpus más reducido de código en Clojure utilizado para entrenar la mayoría de los LLM—pero la verdadera sorpresa fue ver lo cercanos que estaban realmente esos resultados.
Con cada nueva versión—GPT-3.5, GPT-4, GPT-4o, o1-preview, o1 y las que vendrán—hemos observado cómo la brecha se reduce aún más. Es alentador ver a Clojure ganar terreno con tanta rapidez, y nos da esperanza de un futuro en el que la disparidad entre lenguajes prácticamente desaparezca. A medida que se entrenan más modelos con conjuntos de datos cada vez más diversos, esperamos ver que el rendimiento de Clojure iguale al de Python y JavaScript.
La comunidad de código abierto y los esfuerzos continuos, como MultiPL-E, están avanzando para mejorar el soporte y la visibilidad de los lenguajes funcionales. Nos entusiasma lo que esto representa para quienes dependen de Clojure en su día a día.
¿La lección aquí? No tengas miedo de experimentar. Prueba diversos modelos y ve cómo se alinean con tus casos de uso específicos. El rendimiento de estos modelos puede variar significativamente dependiendo de tus necesidades.
Construyendo herramientas flexibles para equipos de Ingeniería
Una de las principales lecciones de nuestra jornada con los LLMs fue la importancia de construir herramientas flexibles y extensibles. El mundo de la IA se está moviendo tan rápido que no podemos predecir exactamente lo que nuestros ingenieros necesitarán el próximo mes, y mucho menos el próximo año.
En Nubank, abrazamos esa incertidumbre. Creamos herramientas pequeñas, modulares y fáciles de adaptar a medida que surgen nuevos desarrollos. Un buen ejemplo de esto es Roxy, un proxy local que facilita el uso de LLMs en un entorno regulado.
Roxy fue diseñado para garantizar que cualquier interacción con LLMs esté en conformidad con las regulaciones de seguridad y cumplimiento. En lugar de construir una solución compleja y personalizada para un caso de uso específico, creamos una interfaz simple y flexible que los ingenieros pueden usar de varias maneras. Este enfoque nos permite adaptarnos rápidamente a los nuevos requisitos y oportunidades que surgen.
La lección aquí es que los equipos no deben sobredimensionar sus herramientas. Deben crear algo simple y capaz de crecer y evolucionar junto con la tecnología.
Fomentando una comunidad para compartir conocimientos sobre IA
En cualquier campo de rápida evolución, la colaboración es fundamental. En Nubank, descubrimos que crear comunidades de práctica, a lo que llamamos guildas, es invaluable. Estos son grupos de usuarios internos en los cuales compartimos experiencias, discutimos desafíos y buscamos maneras de usar nuevas herramientas, como los LLMs, de forma eficaz.
Al reunirnos regularmente, garantizamos que todos se mantengan actualizados sobre los últimos avances de la IA y tengan la oportunidad de proporcionar feedback. Esto nos ayuda a mejorar continuamente nuestras herramientas y técnicas de integración de LLMs en los flujos de trabajo de ingeniería.
Si estás trabajando con IA o cualquier nueva tecnología, considera crear tu propia comunidad. Es una excelente manera de continuar aprendiendo y mantenerse a la vanguardia.
¿Los LLMs pueden ayudarnos a pensar?
Mientras muchas personas temen que la IA sustituya el pensamiento humano, creemos que los LLMs pueden, en realidad, mejorar nuestro pensamiento, si se usan correctamente. Por ejemplo, los LLMs pueden ayudar a ingenieros y gerentes de producto a pensar críticamente, hacer mejores preguntas y abordar problemas desde nuevos ángulos.
Algo que nos ha resultado útil es utilizar la IA para guiarnos en la identificación de la causa raíz de un problema, en lugar de limitarnos a dar la respuesta. Por ejemplo, si estamos enfrentando un problema de rendimiento en un microservicio, podemos preguntarle al LLM algo como: ″¿Cómo puedo estructurar mejor una solución para un microservicio que funciona lentamente en una operación de IO?″.
La idea no es pedir una respuesta inmediatamente, sino usar el LLM para ayudarnos a estructurar nuestro pensamiento. Al usar LLMs de esta manera, podemos profundizar más en el problema y encontrar mejores soluciones.
En otro ejemplo, Marlon usó este método para elaborar un informe de producto. Le pidió al LLM que asumiera el papel de un gerente de producto y lo ayudara a estructurar un informe para la alta gerencia sobre el benchmark de los modelos LLM para Clojure. El resultado fue un informe que superó las expectativas e impresionó al gerente de producto.
El poder de los agentes de IA autónomos
A medida que la IA evoluciona, la idea de agentes autónomos que pueden escribir código y resolver problemas por sí mismos se está volviendo más real. Exploramos algunas herramientas en etapa inicial, como Open Hands, que usan LLMs para auxiliar en tareas como análisis de datos.
En una demostración reciente, encargamos a Open Hands realizar un análisis de datos en el conjunto de datos Iris usando Clojure. El agente planeó, escribió y ejecutó el código de forma autónoma, demostrando cómo los LLMs pueden ayudar a los ingenieros en tareas que normalmente requerirían más tiempo y esfuerzo. Aunque la tecnología aún está en sus etapas iniciales, estamos entusiasmados con las posibilidades que presenta.
Devin, un ingeniero de software autónomo de IA desarrollado por Cognition Labs, es otro ejemplo de cómo la IA está revolucionando el desarrollo de software. Devin ha sido fundamental para ayudarnos a migrar nuestro masivo sistema ETL, que supera los 6 millones de líneas de código.
Al automatizar tareas repetitivas como la refactorización y la migración de código, Devin permitió a Nubank completar un proyecto que, inicialmente, se estimaba que requeriría más de 18 meses con mil ingenieros, en tan solo unas semanas, logrando un aumento de eficiencia de 12 veces y generando importantes ahorros en costos.
Mirando hacia el futuro
A medida que la IA continúa evolucionando, queda claro que los LLMs no son solo herramientas para automatizar tareas, sino que son esenciales para mejorar los flujos de trabajo de los desarrolladores. Al integrar LLMs en los procesos de ingeniería de Nubank, hemos visto de primera mano cómo pueden aumentar la productividad, fomentar la creatividad y llenar vacíos entre equipos técnicos y de negocios.
Y, a medida que continuamos explorando y refinando nuestras soluciones de IA, alentamos a otras organizaciones a experimentar y construir herramientas flexibles y extensibles que se adapten al mundo acelerado de la IA. El futuro de la ingeniería está aquí, y con los LLMs, las posibilidades son infinitas.
Conoce más detalles sobre lo que compartimos sobre este tema en el siguiente video:
Descubre las oportunidades