Entretiens

Itamar Friedman, PDG et co-fondateur de CodiumAI – Série d’entretiens

mm
Ajouter Unite.AI à vos sources préférées sur Google

Itamar Friedman est le PDG et co-fondateur de CodiumAI. Codium se concentre sur l’« intégrité du code » du côté de la génération de code — génération de tests automatisés, d’explications de code et de critiques. Ils ont publié des recherches sur la génération de solutions de code pour les défis de programmation compétitive qui surpassent Google DeepMind.

Quand et comment avez-vous initialement été intéressé par l’IA ?

En 2009, j’ai travaillé chez Mellanox (Acq. par NVIDIA (NVDA )) et j’ai étudié l’ingénierie électrique. En réalisant que de nombreux processus de développement fastidieux chez Mellanox pouvaient être automatisés par des algorithmes d’apprentissage automatique, j’ai changé mes spécialisations pour l’optimisation et l’apprentissage automatique et j’ai obtenu un master dans ce domaine. Dès 2010, j’ai déjà travaillé sur un projet de deep learning (avec 3 couches de réseau neuronal profond) posant les bases de mon travail chez Alibaba où j’ai dirigé un groupe de recherche spécialisé dans la recherche d’architecture neuronale, la formation de modèles et la construction d’outils AutoML pour les développeurs. Vers 2021, je n’avais pas honte d’appeler notre travail « IA », car les grands modèles de langage sont devenus des outils puissants, et mon imagination de ce qui pouvait être réalisé avec eux a grandi.

Votre startup précédente, Visualead, axée sur la vision par ordinateur, a finalement été acquise par le groupe Alibaba, qu’était cette startup, et quels étaient certains de vos enseignements clés tirés de cette expérience ?

Visualead était spécialisé dans la numérisation de logos, de codes QR et de tout ce qui se trouve entre les deux, y compris la sécurisation et la dissimulation d’informations dans les images pour permettre des transactions et des interactions P2P sécurisées. Chez Visualead, nous exécutions des algorithmes sur des appareils mobiles depuis 2012, y compris des modèles. C’était un défi et une tâche difficile de le faire à l’époque, et nous avons appris beaucoup de choses sur la construction de modèles efficaces et les garde-fous autour de ces créatures statistiques.

Jusqu’à ce jour, j’applique encore les leçons apprises à cette époque aux projets que j’entreprends actuellement – par exemple, lorsque nous avons construit l’outil de génération de solutions open source AlphaCodium nous avons introduit le concept d’ingénierie de flux et appliqué ce concept pour construire un flux pour garder les modèles LLM.

Pouvez-vous partager l’histoire de la création de CodiumAI ?

Chez Alibaba, j’ai vu de première main comment un bogue dans le code pouvait entraîner un problème d’un million de dollars et les défis auxquels les développeurs étaient confrontés pour maintenir la génération de code sans sacrifier la qualité ou l’intégrité. Ce problème persiste, et aujourd’hui, le code de mauvaise qualité a été attribué à un problème d’un trillion de dollars qui continue de croître.

L’équipe de CodiumAI se spécialise dans la construction d’outils alimentés par l’IA à grande échelle et est déterminée à résoudre les problèmes auxquels les développeurs sont confrontés. Avec la naissance de nouvelles capacités LLM et IA, nous avons compris que c’était notre opportunité de construire une plate-forme d’intégrité de code holistique pour aider les équipes occupées comme la nôtre à réduire les bogues et à atténuer d’autres problèmes d’intégrité. Alors que de plus en plus de code est généré par l’IA, le problème de benchmarking de ce code et de garantir qu’il fonctionne comme prévu est devenu un point de douleur critique et un que nous étions déterminés à résoudre. La construction d’outils alimentés par l’IA à grande échelle, et donc le benchmarking, est un concept essentiel pour nous.

En tant que groupe de développeurs expérimentés, nous comprenons ; traiter avec des tâches fastidieuses telles que les tests et les critiques de code pouvait être frustrant. Nous sommes très motivés pour finalement permettre aux équipes occupées d’augmenter et de gérer leur intégrité de code.

Pouvez-vous décrire les types d’analyses non triviales que CodiumAI effectue sur le code, et comment cela soutient les développeurs dans l’amélioration de la qualité du code ?

Jusqu’à récemment, les outils existants disponibles pour les développeurs offraient peu de valeur – mais avec l’arrivée des LLM (ChatGPT, Copilot, etc.) les capacités commencent à dépasser les attentes, et le soutien disponible pour les développeurs n’est plus trivial.

L’agent de codage Codiumate développé par CodiumAI offre aux développeurs des outils uniques pour améliorer leur flux de travail et améliorer la génération de code. Codiumate rationalise le processus de développement en fournissant une assistance automatisée tout au long de la tâche de codage. En utilisant les extraits de code existants que le développeur humain met en évidence dans son environnement, l’agent peut automatiquement établir un plan de développement facile à suivre et cohérent, écrire du code selon ce plan, identifier le code dupliqué que le développeur peut vouloir utiliser ou supprimer, établir une documentation et suggérer des tests pour garantir que le code fonctionne correctement avant son déploiement dans un environnement de production.

Codiumate fournit aux développeurs une analyse comportementale approfondie – mettant en évidence les comportements possibles et les branches que le code sous test englobe. Cela permet au développeur d’examiner le code généré et de créer des tests qui (branche) couvrent tous les comportements, améliorant ainsi le code plus que si le développeur avait pris en compte tous les cas possibles lui-même.

Quelles sont les fonctionnalités spécifiques que l’agent PR fournit pour l’analyse des demandes d’extraction, et comment cela rationalise le processus d’examen sur des plates-formes comme GitHub et GitLab (GTLB ) ?

L’agent PR offre une variété de fonctionnalités conçues pour améliorer et rationaliser le processus d’analyse et d’examen des demandes d’extraction sur divers fournisseurs de git.

La génération automatique de descriptions de demande d’extraction génère automatiquement des descriptions détaillées pour les demandes d’extraction. Cette fonctionnalité répond à des problèmes courants où les développeurs pourraient omettre des descriptions détaillées de demande d’extraction en raison de contraintes de temps ou d’oubli. Avec des descriptions automatisées, chaque demande d’extraction est équipée d’un contexte suffisant, ce qui facilite aux réviseurs la compréhension des modifications sans avoir à décoder les différences de code de manière extensive. Nous avons également construit un examen automatique de demande d’extraction pour fournir aux développeurs une vue d’ensemble complète de la demande d’extraction, ce qui leur permet de détecter des problèmes potentiels tels que des bogues, des vulnérabilités de sécurité ou des odeurs de code de manière proactive. Ces commentaires préventifs permettent aux développeurs d’apporter des corrections avant le processus d’examen, améliorant ainsi la qualité du code qui atteint les réviseurs.

En exploitant l’IA, les suggestions de code automatisées peuvent également suggérer des améliorations ou des implémentations alternatives directement dans l’interface de demande d’extraction. Ces suggestions pourraient être des optimisations, des conformités aux normes de codage ou même des améliorations architecturales, aidant à élever la qualité de la base de code de manière incrémentale.

L’agent PR prend en charge de nombreuses options pour personnaliser les commandes qu’il propose. L’une des options de personnalisation les plus utiles est l’utilisation d’étiquettes personnalisées pour améliorer l’organisation et la gestion des demandes d’extraction sur des plates-formes comme GitHub et GitLab. Cette fonctionnalité contribue à l’efficacité opérationnelle et à la clarté des processus de développement et d’examen.

Comment CodiumAI génère-t-il des tests significatifs, et qu’est-ce qui rend ces tests plus efficaces que les tests unitaires standard ?

Nous améliorons la génération de tests en analysant les référentiels de code pour les extraits de code pertinents liés au code sous test. En utilisant des invites de réflexion, nous cartographions tous les comportements de code possibles, y compris les chemins typiques et les cas limites, notre approche utilise une recherche de contexte spécifique et des invites personnalisées adaptées à différents langages de programmation, en intégrant une expertise de domaine pour garantir que les tests répondent aux normes de l’industrie. De plus, CodiumAI configure des environnements d’exécution spécifiques pour mieux détecter les bogues et générer des tests auto-réparateurs. Ces capacités rendent les tests générés par CodiumAI plus complets que les tests unitaires standard, qui manquent souvent de comportements involontaires en raison des préjugés inhérents aux développeurs et des limites de prévision de tous les scénarios possibles. Cela donne lieu à des tests qui ne sont pas seulement exhaustifs mais également plus efficaces pour découvrir des bogues subtils et des cas limites.

Sur la base des commentaires des utilisateurs, quels sont les fonctionnalités les plus appréciées de CodiumAI, et comment ces fonctionnalités ont-elles eu un impact sur la productivité des développeurs ?

Sur la base des commentaires des utilisateurs que nous avons reçus, nous voyons que les fonctionnalités /ask avec contexte de bloc de code et /génération de test de l’agent Codiumate sont très demandées et améliorent le flux de travail des développeurs.

Avec /ask avec contexte de bloc de code (voir la documentation ici : /ask) les développeurs peuvent poser des questions ouvertes sur leur code, ou demander des améliorations ou des critiques de code pendant une session de chat gratuite. Cette fonctionnalité est particulièrement bénéfique pour acquérir une compréhension plus approfondie de la base de code, car le modèle conserve le contexte complet du projet, lui permettant de répondre à des questions très détaillées et spécifiques.

La fonctionnalité /génération de test (voir la documentation ici : /test) permet aux développeurs de générer des suites de tests complètes pour leur code avec un seul clic. Explorer le comportement du code, identifier et résoudre les bogues rapidement, et étendre rapidement la couverture du code est un atout énorme pour la productivité.

L’agent PR /examen (voir la documentation ici – /review) analyse les modifications de code de la demande d’extraction et génère automatiquement un examen de demande d’extraction pour détecter les problèmes avant que les développeurs ne poussent vers la production. La

/décrire (voir la documentation ici – /describe) analyse les modifications de code de la demande d’extraction et génère une description pour la demande d’extraction – titre, type, résumé, didacticiel et étiquettes, ce qui économise du temps et de l’énergie aux développeurs qu’ils peuvent mieux appliquer à des tâches plus exigeantes ou créatives.

Comment CodiumAI identifie-t-il les cas limites et les comportements suspects dans le code ?

Nos outils analysent le référentiel du développeur pour les extraits de code pertinents liés au code sous test, et en utilisant des invites de réflexion, nous cartographions tous les comportements de code possibles et les affichons au développeur. CodiumAI peut identifier des comportements suspects directement (quelle que soit la génération de tests), en identifiant les discordances ou les incohérences entre différents extraits de code, ou entre extraits de code et la documentation qui l’accompagne.

CodiumAI prend en charge les principaux langages de programmation ; pouvez-vous élaborer sur la manière dont il gère les nuances spécifiques au langage dans l’analyse de code et la génération de tests ?

Pour les principaux langages de programmation, notre plate-forme va au-delà d’un support de base en mettant en œuvre des techniques spécialisées. Celles-ci incluent une recherche de contexte spécifique et des invites personnalisées adaptées à la syntaxe et à la sémantique uniques de chaque langage. Ces invites personnalisées intègrent une expertise de domaine pour obtenir des résultats de niveau industriel. De plus, nous fournissons des capacités pour établir un environnement d’exécution spécifique à ces langages, ce qui améliore la capacité de notre outil à détecter les bogues et à générer des tests auto-réparateurs de manière efficace.

Pour les langages moins courants, nous exploitons les grands modèles de langage (LLM) qui comprennent naturellement plusieurs langages de programmation. Cela est complété par notre infrastructure de contexte général et notre système d’invites adaptatif, qui ensemble facilitent l’analyse de code et la génération de tests précise dans divers environnements de programmation. En adoptant une approche à deux niveaux, nous pouvons garantir un support complet quel que soit le langage de programmation utilisé.

Quels sont les améliorations futures prévues pour CodiumAI afin de soutenir et de simplifier les tâches des développeurs ?

La stratégie de développement future de CodiumAI met l’accent sur l’amélioration de la gamme d’outils alimentés par l’IA pour les intégrer en douceur à toutes les étapes du cycle de vie du développement logiciel. En utilisant des principes d’ingénierie de flux avancés pour rationaliser et simplifier les flux de travail des développeurs, nos agents fourniront une valeur significative à différentes étapes du développement. De plus, CodiumAI s’engage à garantir que ces outils excellent dans la gestion de code et de texte complexes et réels, les rendant indispensables dans les tâches de programmation quotidiennes. Cette approche holistique vise à élever notre offre en tant qu’outil robuste et quotidien pour les développeurs, améliorant ainsi la productivité et l’efficacité dans le processus de développement logiciel.

Merci pour cette grande interview, les lecteurs qui souhaitent en savoir plus peuvent visiter CodiumAI.

Antoine est un leader visionnaire et associé fondateur d'Unite.AI, animé par une passion inébranlable pour façonner et promouvoir l'avenir de l'IA et de la robotique. Un entrepreneur en série, il croit que l'IA sera aussi perturbatrice pour la société que l'électricité, et se fait souvent prendre en train de vanter le potentiel des technologies perturbatrices et de l'AGI.

En tant que futuriste, il se consacre à explorer comment ces innovations vont façonner notre monde. En outre, il est le fondateur de Securities.io, une plateforme axée sur l'investissement dans les technologies de pointe qui redéfinissent l'avenir et remodelent des secteurs entiers.