Interviews

Itamar Friedman, CEO & Co-Founder von CodiumAI – Interview-Serie

mm
Unite.AI zu deinen bevorzugten Quellen auf Google hinzufügen

Itamar Friedman ist CEO und Co-Founder von CodiumAI. Codium konzentriert sich auf die “Code-Integrität”-Seite der Code-Generierung – Generierung automatisierter Tests, Code-Erklärungen und -Überprüfungen. Sie haben Forschungsergebnisse über die Generierung von Code-Lösungen für Wettbewerbs-Programmierherausforderungen veröffentlicht, die Google DeepMind überbieten.

Wann und wie sind Sie ursprünglich an AI interessiert geworden?

Im Jahr 2009 arbeitete ich bei Mellanox (Acq. von NVIDIA (NVDA )) und studierte Elektrotechnik. Als ich erkannte, dass viele der mühsamen Entwicklungsprozesse bei Mellanox durch maschinelle Lernalgorithmen automatisiert werden konnten, wechselte ich mein Studienfach zu Optimierung und maschinellem Lernen und absolvierte einen Master-Abschluss in diesem Bereich. Bereits 2010 arbeitete ich an einem Deep-Learning-Projekt (mit 3 Schichten tiefem neuronalen Netzwerk), das die Grundlage für meine Zeit bei Alibaba legte, wo ich eine Forschungsgruppe leitete, die sich auf die Suche nach neuronalen Architekturen, das Training von Modellen und die Entwicklung von AutoML-Tools für Entwickler spezialisierte. Um 2021 herum war ich nicht mehr scheu, unsere Arbeit als “KI” zu bezeichnen, da große Sprachmodelle zu leistungsstarken Werkzeugen wurden und meine Vorstellung davon, was mit ihnen erreicht werden konnte, wuchs.

Ihre vorherige Startup-Unternehmen Visualead wurde schließlich von der Alibaba-Gruppe übernommen. Was war dies für ein Startup und welche waren einige Ihrer wichtigsten Erkenntnisse aus dieser Erfahrung?

Visualead spezialisierte sich auf das Scannen von Logos, QR-Codes und allem dazwischen, einschließlich der Sicherung und Versteckung von Informationen in Bildern, um sichere P2P-Transaktionen und -Interaktionen zu ermöglichen. Bei Visualead führten wir seit 2012 Algorithmen auf mobilen Geräten aus, einschließlich Modelle. Es war herausfordernd und knifflig, dies damals zu tun, und wir lernten viel über den Bau effizienter Modelle und Schutzvorkehrungen für diese statistischen Kreaturen.

Bis heute wende ich noch immer die Lektionen an, die ich während dieser Zeit gelernt habe, auf aktuelle Projekte an, die ich in Angriff nehme – zum Beispiel, als wir das Open-Source-Lösungsgenerierungstool AlphaCodium entwickelten, führten wir das Konzept der Flow-Engineering ein und wendeten dieses Konzept an, um einen Fluss zu schaffen, der die Ausgabe von LLM-Modellen sichert.

Könnten Sie die Entstehungsgeschichte hinter der Gründung von CodiumAI teilen?

Bei Alibaba sah ich mit eigenen Augen, wie ein Fehler im Code zu einem Millionendollarproblem führen konnte und welche Herausforderungen Entwickler hatten, um mit der Code-Generierung Schritt zu halten, ohne die Qualität oder Integrität zu opfern. Dieses Problem besteht fort und heute wird low-quality-Code als trillionen-Dollar-Problem angesehen, das weiter wächst.

Das Team bei CodiumAI spezialisiert sich auf den Bau von KI-gestützten Werkzeugen im großen Maßstab und ist bestrebt, die Schmerzpunkte zu bekämpfen, mit denen Entwickler konfrontiert sind. Mit der Geburt neuer LLM- und KI-Fähigkeiten erkannten wir, dass dies unsere Chance war, eine umfassende Code-Integritätsplattform zu bauen, um Teams wie uns selbst zu helfen, Fehler zu reduzieren und andere Integritätsprobleme zu mildern. Da immer mehr Code von KI generiert wird, wurde das Problem der Bewertung dieses Codes und der Sicherstellung, dass er wie beabsichtigt funktioniert, zu einem kritischen Schmerzpunkt, den wir lösen wollten. Der Bau von KI-gestützten Werkzeugen im großen Maßstab und somit die Bewertung ist für uns ein wesentliches Konzept.

Als Gruppe von erfahrenen Entwicklern verstehen wir es; mit mühsamen Aufgaben wie Testen und Code-Überprüfen umzugehen, kann frustrierend sein. Wir sind hochgradig missioniert, endlich Teams zu ermöglichen, ihre Code-Integrität zu erhöhen und zu verwalten.

Können Sie beschreiben, welche Arten von nicht-trivialen Analysen CodiumAI auf Code durchführt und wie dies Entwickler bei der Verbesserung der Code-Qualität unterstützt?

Bis vor kurzem boten die vorhandenen Tools für Entwickler wenig Wert – aber mit dem Erscheinen von LLMs (ChatGPT, Copilot usw.) beginnen die Fähigkeiten, die Erwartungen zu übertreffen, und die Unterstützung, die Entwicklern zur Verfügung steht, ist nicht mehr trivial.

Der Codiumate-Coding-Agent, der von CodiumAI entwickelt wurde, bietet Entwicklern einzigartige Tools, um ihre Arbeitsabläufe zu verbessern und die Code-Generierung zu optimieren. Codiumate rationalisiert den Entwicklungsprozess, indem er automatisierte Unterstützung während der Codierung bietet. Mit den vorhandenen Code-Snippets, die ein menschlicher Entwickler in seiner Umgebung hervorhebt, kann der Agent automatisch einen einfachen und kohärenten Entwicklungsplan erstellen, Code gemäß diesem Plan schreiben, duplizierten Code identifizieren, den der Entwickler verwenden oder entfernen möchte, Dokumentation erstellen und Tests vorschlagen, um sicherzustellen, dass der Code ordnungsgemäß funktioniert, bevor er in einer Live-Umgebung bereitgestellt wird.

Codiumate bietet Entwicklern eine tiefgehende Verhaltensanalyse – es beleuchtet mögliche Verhaltensweisen und Zweige, die der Code umfasst. Dies ermöglicht es dem Entwickler, den generierten Code zu untersuchen und Tests zu erstellen, die (Zweige) alle Verhaltensweisen abdecken, wodurch der Code mehr verbessert wird, als wenn der Entwickler alle möglichen Fälle selbst berücksichtigt hätte.

Welche spezifischen Funktionalitäten bietet der PR-Agent für die Analyse von Pull-Requests und wie rationalisiert er den Überprüfungsprozess auf Plattformen wie GitHub und GitLab (GTLB )?

Der PR-Agent bietet eine Vielzahl von Funktionalitäten, die darauf ausgelegt sind, den Pull-Request- (PR-) Analyse- und Überprüfungsprozess auf verschiedenen Git-Providern zu verbessern und zu rationalisieren.

Die automatische PR-Beschreibungs-Generierung generiert automatisch umfassende und detaillierte Beschreibungen für Pull-Requests. Diese Funktion behandelt häufige Probleme, bei denen Entwickler aus Zeitgründen oder aus Versehen detaillierte PR-Beschreibungen übersehen. Mit automatisierten Beschreibungen verfügt jeder PR über ausreichenden Kontext, was es Überprüfern erleichtert, die Änderungen zu verstehen, ohne dass sie den Code-Diffs ausführlich entschlüsseln müssen. Wir haben auch eine automatische PR-Überprüfung entwickelt, um Entwicklern eine umfassende Übersicht über den PR zu geben, mit der sie potenzielle Probleme wie Fehler, Sicherheitslücken oder Code-Gerüche proaktiv erkennen können. Diese vorherige Rückmeldung ermöglicht es Entwicklern, Korrekturen vorzunehmen, bevor der Überprüfungsprozess beginnt, wodurch die Qualität des Codes, der die Überprüfer erreicht, verbessert wird.

Mithilfe von KI können automatisierte Code-Vorschläge auch Vorschläge für Verbesserungen oder alternative Implementierungen direkt im PR-Interface machen. Diese Vorschläge könnten Optimierungen, die Einhaltung von Codierstandards oder sogar architektonische Verbesserungen sein, die dazu beitragen, die Qualität der Code-Basis schrittweise zu erhöhen.

Der PR-Agent unterstützt zahlreiche Optionen für die Anpassung der Befehle, die er bietet. Eine der nützlichsten Anpassungsoptionen ist die Verwendung von benutzerdefinierten Labels, um die Organisation und Verwaltung von Pull-Requests auf Plattformen wie GitHub und GitLab zu verbessern. Diese Funktionalität trägt zur betrieblichen Effizienz und Klarheit der Entwicklungs- und Überprüfungsprozesse bei.

Wie generiert CodiumAI sinnvolle Tests und was macht diese Tests effektiver als Standard-Einheitstests?

Wir verbessern die Testgenerierung, indem wir Code-Repositorys nach relevanten Code-Snippets scannen, die mit dem zu testenden Code zusammenhängen. Mit Hilfe von chain-of-thought-Prompts kartieren wir alle möglichen Code-Verhaltensweisen, einschließlich typischer Pfade und Randfälle, und unsere Methode nutzt kontextspezifisches Abrufen und auf verschiedene Programmiersprachen zugeschnittene Prompts, die Expertenwissen aus dem Bereich einbeziehen, um sicherzustellen, dass die Tests Branchenstandards erfüllen. Zusätzlich richtet CodiumAI spezifische Laufzeitumgebungen ein, um besser Fehler zu erkennen und selbstheilende Tests zu generieren. Diese Fähigkeiten machen die von CodiumAI generierten Tests umfassender als Standard-Einheitstests, die oft ungewollte Verhaltensweisen aufgrund der inhärenten Vorurteile der Entwickler und der Grenzen bei der Vorhersage aller möglichen Szenarien verpassen. Dies führt zu Tests, die nicht nur gründlich, sondern auch effektiver bei der Aufdeckung subtiler Fehler und Randfälle sind.

Basierend auf Nutzerfeedback – welche sind die am meisten geschätzten Funktionen von CodiumAI und wie haben diese Funktionen die Produktivität von Entwicklern beeinflusst?

Basierend auf dem Nutzerfeedback, das wir erhalten haben, sehen wir, dass die /ask with code block context und /test generation Funktionen des Codiumate-Agents sehr gefragt sind und die Arbeitsabläufe von Entwicklern verbessern.

Mit /ask with code block context (siehe Dokumentation hier: /ask) können Entwickler offene Fragen zu ihrem Code stellen oder Code-Verbesserungen oder -Überprüfungen während einer kostenlosen Chat-Sitzung anfordern. Diese Funktion ist besonders nützlich, um ein tieferes Verständnis der Code-Basis zu erlangen, da das Modell den vollen Kontext des Projekts beibehält und somit in der Lage ist, hoch detaillierte und spezifische Anfragen zu beantworten.

Das /test generation (siehe Dokumentation hier: /test) Tool ermöglicht es Entwicklern, umfassende Test-Suiten für ihren Code mit nur einem Klick zu generieren. Die Erforschung des Code-Verhaltens, die Identifizierung und Lösung von Fehlern sowie die schnelle Erweiterung der Code-Abdeckung ist ein großer Gewinn für die Produktivität.

Die PR-Agent /review (siehe Dokumentation hier – /review) Funktion scannet PR-Code-Änderungen und generiert automatisch eine PR-Überprüfung, um Probleme zu erkennen, bevor Entwickler in die Produktion übergehen. Die

/describe (siehe Dokumentation hier – /describe) Funktion scannet die PR-Code-Änderungen und generiert eine Beschreibung für den PR – Titel, Typ, Zusammenfassung, Durchlauf und Labels, was Entwicklern Zeit und Energie spart, die sie besser auf anspruchsvollere oder kreativere Aufgaben anwenden können.

Wie identifiziert CodiumAI Randfälle und verdächtige Verhaltensweisen im Code?

Unsere Werkzeuge scannen das Repository des Entwicklers nach relevanten Code-Snippets, die mit dem zu testenden Code zusammenhängen, und mit Hilfe von chain-of-thought-Prompts kartieren wir alle möglichen Code-Verhaltensweisen und zeigen sie dem Entwickler an. CodiumAI kann verdächtige Verhaltensweisen direkt (unabhängig von der Testgenerierung) identifizieren, indem es Inkonsistenzen oder Widersprüche zwischen verschiedenen Code-Snippets oder Code-Snippets und der begleitenden Dokumentation identifiziert.

CodiumAI unterstützt große Programmiersprachen; können Sie erläutern, wie es sprachspezifische Nuancen in der Code-Analyse und Testgenerierung behandelt?

Für große Programmiersprachen geht unsere Plattform über die grundlegende Unterstützung hinaus, indem sie spezielle Techniken implementiert. Dazu gehören kontextspezifisches Abrufen und auf jede Sprache zugeschnittene Prompts, die die einzigartige Syntax und Semantik jeder Sprache berücksichtigen. Diese auf die Sprache zugeschnittenen Prompts beinhalten sprachspezifisches Expertenwissen, um branchenübliche Ergebnisse zu erzielen. Zusätzlich bieten wir die Möglichkeit, eine Laufzeitumgebung speziell für diese Sprachen einzurichten, was unsere Fähigkeit verbessert, Fehler zu erkennen und selbstheilende Tests zu generieren.

Für weniger gebräuchliche Sprachen nutzen wir große Sprachmodelle (LLMs), die mehrere Programmiersprachen verstehen. Dies wird durch unsere allgemeine Kontext-Infrastruktur und unser adaptives Prompt-System ergänzt, das zusammen eine genaue Code-Analyse und Testgenerierung in verschiedenen Programmierumgebungen ermöglicht. Durch die Verwendung eines zweistufigen Ansatzes können wir eine umfassende Unterstützung unabhängig von der verwendeten Programmiersprache sicherstellen.

Welche zukünftigen Verbesserungen sind für CodiumAI geplant, um Entwickler noch besser zu unterstützen und ihre Aufgaben zu vereinfachen?

Die zukünftige Entwicklungsstrategie von CodiumAI konzentriert sich auf die Verbesserung des verfügbaren Satzes von KI-Werkzeugen, um sie nahtlos in alle Phasen des Software-Entwicklungslebenszyklus zu integrieren. Durch die Anwendung fortschrittlicher Flow-Engineering-Prinzipien, um die Arbeitsabläufe von Entwicklern zu rationalisieren und zu vereinfachen, werden unsere Agenten einen erheblichen Wert über verschiedene Entwicklungsstadien hinweg bieten. Darüber hinaus ist CodiumAI bestrebt, sicherzustellen, dass diese Werkzeuge hervorragend mit komplexen, realen Code- und Textszenarien umgehen können, was sie unverzichtbar in täglichen Programmieraufgaben macht. Dieser umfassende Ansatz zielt darauf ab, unser Angebot als robustes, tägliches Werkzeug für Entwickler zu erhöhen, um Produktivität und Effizienz im Software-Entwicklungsprozess zu verbessern.

Vielen Dank für das großartige Interview. Leser, die mehr erfahren möchten, sollten CodiumAI besuchen.

Antoine ist ein visionärer Leiter und Gründungspartner von Unite.AI, getrieben von einer unerschütterlichen Leidenschaft für die Gestaltung und Förderung der Zukunft von KI und Robotik. Als Serienunternehmer glaubt er, dass KI für die Gesellschaft so disruptiv sein wird wie Elektrizität, und er wird oft dabei erwischt, wie er über das Potenzial disruptiver Technologien und AGI schwärmt.

Als Futurist ist er darauf bedacht, zu erforschen, wie diese Innovationen unsere Welt prägen werden. Darüber hinaus ist er der Gründer von Securities.io, einer Plattform, die sich auf Investitionen in bahnbrechende Technologien konzentriert, die die Zukunft neu definieren und ganze Branchen umgestalten.