Entrevistas

Itamar Friedman, CEO y Co-Fundador de CodiumAI – Serie de Entrevistas

mm
Añade Unite.AI a tus fuentes preferidas en Google

Itamar Friedman, es el CEO y Co-Fundador de CodiumAI. Codium se enfoca en el lado de la “integridad del código” de la generación de código — generando pruebas automatizadas, explicaciones de código y revisiones. Han publicado investigaciones sobre la generación de soluciones de código para desafíos de programación competitiva que superan a Google DeepMind.

¿Cuándo y cómo te interesaste inicialmente en la IA?

En 2009, trabajé en Mellanox (Adq. por NVIDIA (NVDA )) y estudié ingeniería eléctrica. Al darme cuenta de que muchos de los procesos de desarrollo tediosos en Mellanox podrían automatizarse con algoritmos de aprendizaje automático, cambié mis especialidades a optimización y aprendizaje automático y completé una maestría en el espacio. Para 2010 ya estaba trabajando en un proyecto de aprendizaje profundo (con una red neural de 3 capas) sentando las bases para mi tiempo en Alibaba, donde lideré un grupo de investigación especializado en búsqueda de arquitectura neural, entrenamiento de modelos y creación de herramientas AutoML para desarrolladores. Alrededor de 2021, no me avergonzaba llamar a nuestro trabajo “IA”, ya que los modelos de lenguaje grande se convirtieron en herramientas poderosas, y mi imaginación de lo que podría lograrse con ellos creció.

Tu startup anterior, Visualead, se centraba en la visión por computadora y finalmente fue adquirida por el Grupo Alibaba, ¿cuál era esta startup y cuáles fueron algunos de tus conocimientos clave de esta experiencia?

Visualead se especializó en escanear logotipos, códigos QR y todo lo que hay entre ellos, incluyendo la seguridad y ocultación de información en imágenes para habilitar transacciones y compromisos P2P seguros. En Visualead, habíamos estado ejecutando algoritmos en dispositivos móviles desde 2012, incluyendo modelos. Fue un desafío y un truco hacer eso en ese momento, y aprendimos mucho sobre la creación de modelos eficientes y guardias alrededor de estas criaturas estadísticas.

Hasta hoy, todavía aplico las lecciones aprendidas de ese tiempo a los proyectos actuales que emprendo, por ejemplo, cuando construimos la herramienta de generación de soluciones de código de código abierto AlphaCodium introdujimos el concepto de Ingeniería de Flujo y aplicamos este concepto para construir un flujo para guardia LLMs modelos de salida.

¿Puedes compartir la historia de la génesis detrás del lanzamiento de CodiumAI?

En Alibaba, vi de primera mano cómo un error en el código podría llevar a un problema de un millón de dólares y los desafíos que enfrentaban los desarrolladores para mantenerse al día con la generación de código sin sacrificar la calidad o la integridad. Este problema persiste, y hoy en día, el código de baja calidad ha sido atribuido a un problema de un billón de dólares que continúa creciendo.

El equipo de CodiumAI se especializa en construir herramientas impulsadas por IA a escala y está impulsado para abordar los puntos dolorosos que enfrentan los desarrolladores. Con el nacimiento de nuevas capacidades LLM y IA, entendimos que esta era nuestra oportunidad de construir una plataforma de integridad de código holística para ayudar a equipos ocupados como nosotros a reducir errores y mitigar otros problemas de integridad. A medida que más y más código se generaba mediante IA, el problema de medir este código y asegurarse de que funcionara como se pretendía se convirtió en un punto doloroso crítico y uno que estábamos impulsados a resolver. Construir herramientas impulsadas por IA a escala y, por lo tanto, la medición es un concepto esencial para nosotros.

Como un grupo de desarrolladores experimentados, lo entendemos; lidiar con tareas tediosas como las pruebas y la revisión del código podría ser frustrante. Estamos muy impulsados por la misión de finalmente permitir que los equipos ocupados aumenten y gestionen su integridad de código.

¿Puedes describir qué tipos de análisis no triviales realiza CodiumAI en el código y cómo esto apoya a los desarrolladores para mejorar la calidad del código?

Hasta hace poco, las herramientas existentes disponibles para los desarrolladores ofrecían poco valor, pero con la llegada de LLM (ChatGPT, Copilot, etc.) las capacidades están comenzando a superar las expectativas, y el apoyo disponible para los desarrolladores ya no es trivial.

El agente de codificación Codiumate desarrollado por CodiumAI ofrece a los desarrolladores herramientas únicas para mejorar su flujo de trabajo y mejorar la generación de código. Codiumate simplifica el proceso de desarrollo al proporcionar asistencia automatizada en toda la tarea de codificación. Utilizando los fragmentos de código existentes que un desarrollador humano resalta en su entorno, el agente puede redactar automáticamente un plan de desarrollo fácil de seguir y coherente, escribir código según ese plan, identificar código duplicado que el desarrollador pueda querer usar o eliminar, redactar documentación y sugerir pruebas para asegurarse de que el código funcione correctamente antes de ser implementado en un entorno en vivo.

Codiumate proporciona a los desarrolladores un análisis de comportamiento en profundidad, iluminando posibles comportamientos y ramas que el código bajo prueba abarca. Esto permite al desarrollador examinar el código generado y crear pruebas que (rama) cubran todos los comportamientos, mejorando así el código más de lo que si el desarrollador hubiera contado con todos los casos posibles por su cuenta.

¿Qué funcionalidades específicas proporciona el Agente de PR para el análisis de solicitudes de extracción y cómo simplifica el proceso de revisión en plataformas como GitHub y GitLab (GTLB )?

El Agente de PR ofrece una variedad de funcionalidades diseñadas para mejorar y simplificar el análisis y la revisión de solicitudes de extracción en varios proveedores de git.

La generación automática de descripciones de PR genera automáticamente descripciones detalladas y completas para las solicitudes de extracción. Esta función aborda problemas comunes en los que los desarrolladores pueden omitir descripciones detalladas de PR debido a limitaciones de tiempo u omisiones. Con descripciones automatizadas, cada PR está equipado con suficiente contexto, lo que facilita a los revisores entender los cambios sin necesidad de descifrar extensamente las diferencias de código. También construimos una revisión automática de PR para proporcionar a los desarrolladores una visión general completa de la PR, lo que les permite detectar problemas potenciales como errores, vulnerabilidades de seguridad o olores de código de manera proactiva. Esta retroalimentación preventiva permite a los desarrolladores hacer correcciones antes del proceso de revisión, lo que mejora la calidad del código que llega a los revisores.

Al aprovechar la IA, las sugerencias de código automatizadas también pueden sugerir mejoras o implementaciones alternativas directamente dentro de la interfaz de PR. Estas sugerencias podrían ser optimizaciones, adherencia a estándares de codificación o incluso mejoras arquitectónicas, lo que ayuda a elevar la calidad de la base de código de forma incremental.

El Agente de PR admite numerosas opciones para personalizar los comandos que ofrece. Una de las opciones de personalización más útiles es el uso de etiquetas personalizadas para mejorar la organización y gestión de las solicitudes de extracción en plataformas como GitHub y GitLab. Esta funcionalidad contribuye a la eficiencia operativa y la claridad de los procesos de desarrollo y revisión.

¿Cómo genera CodiumAI pruebas significativas y qué las hace más efectivas que las pruebas unitarias estándar?

Mejoramos la generación de pruebas al escanear los repositorios de código en busca de fragmentos de código relevantes relacionados con el código bajo prueba. Al emplear instrucciones de cadena de pensamiento para trazar todos los comportamientos de código posibles, incluidos los caminos típicos y los casos de borde, nuestro enfoque utiliza la búsqueda de contexto específico y instrucciones personalizadas adaptadas a diferentes lenguajes de programación, incorporando conocimientos de expertos para asegurarse de que las pruebas cumplan con los estándares de la industria. Además, CodiumAI configura entornos de tiempo de ejecución específicos para detectar errores y generar pruebas auto-sanadoras. Estas capacidades hacen que las pruebas generadas por CodiumAI sean más exhaustivas que las pruebas unitarias estándar, que a menudo pasan por alto comportamientos no intencionados debido a los sesgos inherentes de los desarrolladores y las limitaciones para prever todos los escenarios posibles. Esto da como resultado pruebas que no solo son exhaustivas, sino también más efectivas para descubrir errores sutiles y casos de borde.

Basado en la retroalimentación de los usuarios, ¿cuáles son las características más valoradas de CodiumAI y cómo han impactado la productividad de los desarrolladores?

Basado en la retroalimentación que hemos recibido, vemos que las características /ask con contexto de bloque de código y /generación de pruebas del agente Codiumate son muy solicitadas y mejoran el flujo de trabajo de los desarrolladores.

Con /ask con contexto de bloque de código (ver documentación aquí: /ask) los desarrolladores pueden hacer preguntas abiertas sobre su código o solicitar mejoras o revisiones de código durante una sesión de chat gratuita. Esta función es particularmente beneficiosa para obtener una comprensión más profunda de la base de código, ya que el modelo retiene el contexto completo del proyecto, lo que le permite abordar preguntas muy detalladas y específicas.

La herramienta /generación de pruebas (ver documentación aquí: /test) permite a los desarrolladores generar suites de pruebas exhaustivas para su código con solo un clic. Explorar el comportamiento del código, identificar y resolver errores de inmediato y ampliar rápidamente la cobertura del código es un activo enorme para la productividad.

La función /revisión del Agente de PR (ver documentación aquí – /review) analiza los cambios de código de la PR y genera automáticamente una revisión de la PR para detectar problemas antes de que los desarrolladores lo envíen a producción. La

/describe (ver documentación aquí – /describe) analiza los cambios de código de la PR y genera una descripción para la PR – título, tipo, resumen, recorrido y etiquetas, ahorrando a los desarrolladores tiempo y energía que pueden aplicar mejor a tareas más exigentes o creativas.

¿Cómo identifica CodiumAI los casos de borde y comportamientos sospechosos en el código?

Nuestras herramientas escanean el repositorio del desarrollador en busca de fragmentos de código relevantes que se relacionen con el código bajo prueba, y utilizando instrucciones de cadena de pensamiento, trazamos todos los comportamientos de código posibles y se los mostramos al desarrollador. CodiumAI puede identificar comportamientos sospechosos directamente (independientemente de la generación de pruebas), identificando discrepancias o inconsistencias entre diferentes fragmentos de código, o entre fragmentos de código y la documentación acompañante.

CodiumAI admite los principales lenguajes de programación; ¿puedes elaborar sobre cómo maneja las peculiaridades del lenguaje en el análisis de código y la generación de pruebas?

Para los principales lenguajes de programación, nuestra plataforma va más allá del soporte básico al implementar técnicas especializadas. Estas incluyen la búsqueda de contexto específico y la instrucción personalizada adaptada a la sintaxis y la semántica únicas de cada lenguaje. Estas instrucciones personalizadas incorporan conocimientos de expertos en el dominio para obtener resultados a nivel de la industria. Además, proporcionamos capacidades para establecer un entorno de tiempo de ejecución específico para estos lenguajes, lo que mejora la capacidad de nuestra herramienta para detectar errores y generar pruebas auto-sanadoras. Estas capacidades hacen que las pruebas generadas por CodiumAI sean más exhaustivas que las pruebas unitarias estándar, que a menudo pasan por alto comportamientos no intencionados debido a los sesgos inherentes de los desarrolladores y las limitaciones para prever todos los escenarios posibles.

Para lenguajes menos comunes, aprovechamos los modelos de lenguaje grande (LLM) que inherentemente comprenden múltiples lenguajes de programación. Esto se complementa con nuestra infraestructura de contexto general y nuestro sistema de instrucción adaptativa, que juntos facilitan el análisis de código y la generación de pruebas precisas en diversos entornos de programación. Al adoptar un enfoque de dos niveles, podemos garantizar un soporte integral independientemente del lenguaje de programación utilizado.

¿Qué mejoras futuras están planeadas para CodiumAI para apoyar y simplificar las tareas de los desarrolladores?

La estrategia de desarrollo futura de CodiumAI se centra en mejorar la suite de herramientas de IA disponibles para integrarse sin problemas en todas las etapas del ciclo de vida de desarrollo de software. Al emplear principios de ingeniería de flujo avanzados para simplificar y simplificar los flujos de trabajo de los desarrolladores, nuestros agentes proporcionarán un valor significativo en diferentes etapas del desarrollo. Además, CodiumAI se compromete a asegurarse de que estas herramientas sobresalgan en el manejo de escenarios de código y texto complejos y del mundo real, lo que las hace indispensables en las tareas de programación diarias. Este enfoque holístico tiene como objetivo elevar nuestra oferta como una herramienta robusta y diaria para los desarrolladores, mejorando la productividad y la eficiencia en el proceso de desarrollo de software.

Gracias por la gran entrevista, los lectores que deseen aprender más pueden visitar CodiumAI.

Antoine es un líder visionario y socio fundador de Unite.AI, impulsado por una pasión inquebrantable por dar forma y promover el futuro de la IA y la robótica. Como empresario serial, cree que la IA será tan disruptiva para la sociedad como la electricidad, y a menudo se le escucha hablando con entusiasmo sobre el potencial de las tecnologías disruptivas y la AGI.

Como futurista, está dedicado a explorar cómo estas innovaciones darán forma a nuestro mundo. Además, es el fundador de Securities.io, una plataforma enfocada en invertir en tecnologías de vanguardia que están redefiniendo el futuro y remodelando sectores enteros.