Contáctenos

Itamar Friedman, director ejecutivo y cofundador de CodiumAI - Serie de entrevistas

Entrevistas

Itamar Friedman, director ejecutivo y cofundador de CodiumAI - Serie de entrevistas

mm

Itamar Friedman, es el director ejecutivo y cofundador de Codium AI. Codium se centra en el lado de la "integridad del código" de la generación de código: generar pruebas, explicaciones y revisiones de código automatizadas. Han publicado una investigación sobre la generación de soluciones de código para desafíos de programación competitivos que superan a Google DeepMind.

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

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

Su anterior startup Visualead, centrada en la visión por computadora, finalmente fue adquirida por Alibaba Group. ¿Qué era esta startup y cuáles fueron algunas de las principales conclusiones de esta experiencia?

Visualead se especializa en escanear logotipos, códigos QR y todo lo demás, incluida la protección y ocultación de información en imágenes para permitir transacciones y participación P2P seguras. En Visualead, ejecutamos algoritmos en dispositivos móviles desde 2012, incluidos modelos. Fue desafiante y complicado hacer eso en el pasado, y aprendimos mucho sobre cómo construir modelos eficientes y barreras de seguridad alrededor de estas criaturas estadísticas.

Hasta el día de hoy, todavía aplico las lecciones aprendidas en esa época a los proyectos actuales que emprendo, por ejemplo, cuando creamos la herramienta de generación de soluciones de código abierto. alfacodio Introdujimos el concepto de ingeniería de flujo y aplicamos este concepto para construir un flujo para proteger la salida de los modelos LLM.

¿Podrías compartir la historia del origen del lanzamiento de CodiumAI?

En Alibaba, vi de primera mano cómo un error en el código podía generar un problema millonario 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 se ha atribuido a un problema de billones de dólares que sigue creciendo.

El equipo de CodiumAI se especializa en crear herramientas potenciadas por IA a escala y está motivado para abordar los puntos débiles que enfrentan los desarrolladores. Con el nacimiento de nuevas capacidades de LLM e IA, entendimos que esta era nuestra oportunidad de construir una plataforma integral de integridad de código para ayudar a equipos ocupados como nosotros a reducir errores y mitigar otros problemas de integridad. A medida que la IA generaba más y más código, el problema de comparar este código y asegurarse de que funcionara según lo previsto se convirtió en un punto crítico que nos vimos obligados a resolver. La creación de herramientas basadas en IA a escala y, por lo tanto, la evaluación comparativa es un concepto esencial para nosotros.

Como grupo de desarrolladores experimentados, lo entendemos; lidiar con tareas tediosas como pruebas y revisión de código puede resultar frustrante. Estamos altamente motivados por la misión de finalmente permitir que los equipos ocupados aumenten y administren la integridad de su código.

¿Puede describir qué tipos de análisis no triviales realiza CodiumAI en el código y cómo esto ayuda a los desarrolladores a 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 los LLM (ChatGPT, Copilot, etc.) las capacidades están empezando a superar las expectativas y el soporte disponible para los desarrolladores ya no es trivial.

El Codiumate Coding-Agent desarrollado por CodiumAI ofrece a los desarrolladores herramientas únicas para mejorar su flujo de trabajo y mejorar la generación de código. Codiumate agiliza el proceso de desarrollo al brindar asistencia automatizada durante toda la tarea de codificación. Utilizando los fragmentos de código existentes que un desarrollador humano destaca en su entorno, el agente puede redactar automáticamente un plan de desarrollo coherente y fácil de seguir, escribir código de acuerdo con ese plan, identificar código duplicado que el desarrollador quiera usar o eliminar, redactar documentación. y sugerir pruebas para garantizar que el código funcione correctamente antes de implementarlo en un entorno real.

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

¿Qué funcionalidades específicas proporciona PR-Agent para el análisis de solicitudes de extracción y cómo agiliza el proceso de revisión en plataformas como GitHub y GitLab?

PR-Agent ofrece una variedad de funcionalidades diseñadas para mejorar y agilizar el proceso de revisión y análisis de solicitudes de extracción (PR) en varios proveedores de git.

La generación automática de descripciones de relaciones públicas genera automáticamente descripciones completas y detalladas para las solicitudes de extracción. Esta función soluciona problemas comunes en los que los desarrolladores pueden omitir descripciones detalladas de relaciones públicas debido a limitaciones de tiempo o supervisión. Con descripciones automatizadas, cada RP está equipado con suficiente contexto, lo que facilita a los revisores comprender los cambios sin necesidad de descifrar las diferencias de código en profundidad. También incorporamos una revisión automática de relaciones públicas para brindar a los desarrolladores una descripción general completa de las relaciones públicas que les permita detectar problemas potenciales como errores, vulnerabilidades de seguridad o errores de código de manera proactiva. Esta retroalimentación preventiva permite a los desarrolladores realizar correcciones antes del proceso de revisión, mejorando así la calidad del código que llega a los revisores.

Aprovechando 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, cumplimiento de estándares de codificación o incluso mejoras arquitectónicas, lo que ayudará a elevar la calidad del código base de forma incremental.

El PR-Agent 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 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é hace que estas pruebas sean más efectivas que las pruebas unitarias estándar?

Mejoramos la generación de pruebas escaneando repositorios de códigos en busca de fragmentos relevantes relacionados con el código bajo prueba. Al emplear indicaciones de cadena de pensamiento para mapear todos los comportamientos potenciales del código, incluidas rutas típicas y casos extremos, nuestro enfoque utiliza búsquedas específicas del contexto e indicaciones personalizadas adaptadas a diferentes lenguajes de programación, incorporando conocimiento experto para garantizar que las pruebas cumplan con los estándares de la industria. Además, CodiumAI configura entornos de ejecución específicos para detectar mejor errores y generar pruebas de autorreparación. Estas capacidades hacen que las pruebas generadas por CodiumAI sean más completas que las pruebas unitarias estándar, que a menudo pasan por alto comportamientos no deseados 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 extremos.

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

Según los comentarios de los usuarios que hemos recibido, vemos que el /preguntar con contexto de bloque de código y /generación de prueba Las características del agente Codiumate son muy buscadas y mejoran el flujo de trabajo del desarrollador.

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

El /generación de prueba (ver documentación aquí: / Prueba) permite a los desarrolladores generar conjuntos de pruebas completos para su código con un solo clic. Explorar el comportamiento del código, identificar y resolver errores rápidamente y ampliar rápidamente la cobertura del código es una gran ventaja para la productividad.

El agente de relaciones públicas /revisar (ver documentación aquí – /revisar) escanea los cambios en el código de relaciones públicas y genera automáticamente una revisión de relaciones públicas para detectar problemas antes de que los desarrolladores pasen a producción. El

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

¿Cómo identifica CodiumAI casos extremos 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 indicaciones de cadena de pensamiento, mapeamos todos los comportamientos posibles del código y se los mostramos al desarrollador. CodiumAI puede identificar comportamientos sospechosos directamente (independientemente de las generaciones de pruebas), identificando discrepancias o inconsistencias entre diferentes fragmentos de código, o fragmentos de código y la documentación adjunta.

CodiumAI admite los principales lenguajes de programación; ¿Puede explicarnos cómo maneja los matices específicos 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 implementando técnicas especializadas. Estas incluyen la obtención de información según el contexto y sugerencias personalizadas adaptadas a la sintaxis y semántica únicas de cada lenguaje. Estas sugerencias personalizadas incorporan el conocimiento de expertos en el dominio del lenguaje para obtener resultados a nivel de la industria. Además, ofrecemos la posibilidad de establecer un entorno de ejecución específico para estos lenguajes, lo que mejora la capacidad de nuestra herramienta para detectar errores y generar pruebas de autorreparación de forma eficaz.

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

¿Qué mejoras futuras están previstas para CodiumAI para respaldar y simplificar aún más las tareas de los desarrolladores?

La estrategia de desarrollo futuro de CodiumAI se centra en optimizar el conjunto de herramientas de IA disponibles para integrarlas a la perfección en todas las etapas del ciclo de vida del desarrollo de software. Al emplear principios avanzados de ingeniería de flujo para optimizar y simplificar los flujos de trabajo de los desarrolladores, nuestros agentes aportarán un valor significativo en las diferentes etapas del desarrollo. Además, CodiumAI se compromete a garantizar que estas herramientas sean excelentes en la gestión de código y texto complejos del mundo real, lo que las convierte en indispensables en las tareas diarias de programación. Este enfoque holístico busca convertir nuestra oferta en una herramienta robusta y de uso diario 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 obtener más información deben visitar Codium AI.

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. Es un emprendedor en serie y cree que la IA será tan disruptiva para la sociedad como la electricidad, y a menudo se le escucha hablar maravillas sobre el potencial de las tecnologías disruptivas y la IA general.

Como titular de futurista, se dedica a explorar cómo estas innovaciones darán forma a nuestro mundo. Además, es el fundador de Valores.io, una plataforma centrada en invertir en tecnologías de vanguardia que están redefiniendo el futuro y transformando sectores enteros.