Wywiady
Itamar Friedman, CEO & Co-Founder of CodiumAI – Wywiad

Itamar Friedman jest CEO i współzałożycielem CodiumAI. Codium koncentruje się na stronie „integralności kodu” generowania kodu — generowaniu automatycznych testów, wyjaśnień kodu i przeglądów. Opublikowali badania na temat generowania rozwiązań kodu dla wyzwań programistycznych, które przewyższają Google DeepMind.
Kiedy i jak zainteresowałeś się sztuczną inteligencją?
W 2009 roku pracowałem w Mellanox (nabyty przez NVIDIA (NVDA )) i studiowałem inżynierię elektryczną. Zorientowałem się, że wiele nużących procesów rozwojowych w Mellanox można zautomatyzować za pomocą algorytmów machine learning, więc zmieniłem swoje specjalizacje na optymalizację i machine learning i ukończyłem studia magisterskie w tej dziedzinie. Do 2010 roku już pracowałem nad projektem głębokiego uczenia (z 3-warstwową siecią neuronową), który położył podwaliny pod moją pracę w Alibaba, gdzie kierowałem grupą badawczą specjalizującą się w wyszukiwaniu architektury neuronowej, szkoleniu modeli i tworzeniu narzędzi AutoML dla deweloperów. Około 2021 roku nie wstydziłem się nazywać naszej pracy „sztuczną inteligencją”, ponieważ duże modele językowe stały się potężnymi narzędziami, a moja wyobraźnia tego, co można osiągnąć za ich pomocą, rosła.
Jaki był Twój poprzedni startup zorientowany na wizję komputerową Visualead, który ostatecznie został przejęty przez Alibaba Group, i jakie były Twoje najważniejsze wnioski z tego doświadczenia?
Visualead specjalizował się w skanowaniu logotypów, kodów QR i wszystkiego, co pomiędzy, w tym zabezpieczaniu i ukrywaniu informacji w obrazach w celu umożliwienia bezpiecznych transakcji i zaangażowania p2p. W Visualead prowadziliśmy algorytmy na urządzeniach mobilnych od 2012 roku, w tym modele. Było to wyzwaniem i trudnością robienie tego w tamtym czasie, i nauczyliśmy się wiele o budowaniu wydajnych modeli i barier ochronnych wokół tych statystycznych stworzeń.
Do dziś jeszcze stosuję lekcje, które nauczyłem się w tym czasie, w bieżących projektach, które podejmuję – na przykład, gdy zbudowaliśmy otwarte rozwiązanie generacji kodu AlphaCodium, wprowadziliśmy pojęcie inżynierii przepływu i zastosowaliśmy tę koncepcję, aby zbudować przepływ, który chroni wyjście modeli LLM.
Czy mógłbyś opowiedzieć o historii powstania CodiumAI?
W Alibaba widziałem na własne oczy, jak błąd w kodzie mógł prowadzić do problemu wartego milion dolarów i jakie wyzwania stawali przed deweloperami, aby utrzymać generowanie kodu bez poświęcania jakości lub integralności. Ten problem nadal istnieje, a dziś niskiej jakości kod został przypisany do problemu wartego bilion dolarów, który nadal rośnie.
Zespół w CodiumAI specjalizuje się w budowaniu narzędzi zasilanych przez sztuczną inteligencję w skali i jest zmotywowany do rozwiązania bólów głowy, z którymi stykają się deweloperzy. Z narodzinami nowych LLM i możliwości sztucznej inteligencji, zrozumieliśmy, że to jest nasza okazja do zbudowania holistycznej platformy integralności kodu, aby pomóc zajętym zespołom, takim jak my, zmniejszyć błędy i złagodzić inne problemy z integralnością. Im więcej kodu generowanego przez sztuczną inteligencję, tym bardziej istotnym staje się problem benchmarkowania tego kodu i upewnienia się, że działa zgodnie z zamierzeniem, i to jest punkt bólu, który chcemy rozwiązać. Budowanie narzędzi zasilanych przez sztuczną inteligencję w skali, a więc benchmarkowanie, jest dla nas pojęciem podstawowym.
Jako doświadczeni deweloperzy, rozumiemy to; radzenie sobie z nudnymi zadaniami, takimi jak testowanie i przeglądanie kodu, może być frustrujące. Jesteśmy bardzo zmotywowani, aby w końcu umożliwić zajętym zespołom zwiększyć i zarządzać integralnością kodu.
Czy mógłbyś opisać, jakie rodzaje nietrywialnej analizy CodiumAI wykonuje na kodzie, i jak to wspiera deweloperów w poprawie jakości kodu?
Aż do niedawna, istniejące narzędzia dostępne dla deweloperów oferowały niewielką wartość – ale z przybyciem LLM (ChatGPT, Copilot itd.) możliwości zaczynają przekraczać oczekiwania, a wsparcie dostępne dla deweloperów nie jest już trywialne.
Codiumate Coding-Agent opracowany przez CodiumAI oferuje deweloperom unikalne narzędzia, aby poprawić swój przepływ pracy i udoskonalić generowanie kodu. Codiumate upraszcza proces rozwoju, zapewniając automatyczne wsparcie w trakcie zadania programistycznego. Korzystając z istniejących fragmentów kodu, które deweloper wybiera w swoim środowisku, agent może automatycznie wygenerować łatwy do naśladowania i spójny plan rozwoju, napisać kod zgodnie z tym planem, zidentyfikować duplikaty kodu, które deweloper może chcieć usunąć, wygenerować dokumentację i zasugerować testy, aby upewnić się, że kod działa prawidłowo, zanim zostanie wdrożony w środowisku produkcyjnym.
Codiumate zapewnia deweloperom dogłębną analizę behawioralną – ujawniając możliwe zachowania i gałęzie, które kod podlega. Pozwala to deweloperom na zbadanie wygenerowanego kodu i stworzenie testów, które obejmują wszystkie zachowania, co poprawia kod bardziej niż gdyby deweloper samodzielnie uwzględnił wszystkie możliwe przypadki.
Jakie funkcjonalności oferuje PR-Agent do analizy pull request, i jak upraszcza proces przeglądu na platformach takich jak GitHub i GitLab (GTLB )?
PR-Agent oferuje szereg funkcjonalności zaprojektowanych do poprawy i uproszczenia procesu analizy i przeglądu pull request na różnych dostawcach git.
Automatyczna generacja opisów pull request automatycznie generuje szczegółowe opisy dla pull request. Ta funkcja rozwiązuje powszechne problemy, w których deweloperzy mogą pominąć szczegółowe opisy pull request z powodu ograniczeń czasowych lub zaniedbania. Dzięki zautomatyzowanym opisom, każdy pull request jest wyposażony w wystarczającą kontekst, co ułatwia recenzentom zrozumienie zmian bez potrzeby rozszyfrowywania różnic w kodzie.
Korzystając z sztucznej inteligencji, zautomatyzowane sugestie kodu mogą również sugerować ulepszenia lub alternatywne wdrożenia bezpośrednio w interfejsie pull request. Sugestie te mogą być optymalizacjami, przestrzeganiem standardów kodowania lub nawet ulepszeniami architektonicznymi, co pomaga podnieść jakość bazy kodu stopniowo.
PR-Agent obsługuje wiele opcji dostosowywania poleceń, które oferuje. Jedną z najbardziej przydatnych opcji dostosowywania jest użycie niestandardowych etykiet do poprawy organizacji i zarządzania pull request na platformach takich jak GitHub i GitLab. Ta funkcjonalność przyczynia się do operacyjnej wydajności i przejrzystości procesów rozwoju i przeglądu.
Jak CodiumAI generuje znaczące testy, i co sprawia, że te testy są bardziej skuteczne niż standardowe testy jednostkowe?
Poprawiamy generowanie testów, skanując repozytoria kodu w poszukiwaniu odpowiednich fragmentów kodu związanych z kodem podlegającym testowi. Wykorzystując łańcuchowe podpowiedzi, mapujemy wszystkie możliwe zachowania kodu, w tym typowe ścieżki i przypadki krańcowe, nasze podejście wykorzystuje kontekstowe pobieranie i dostosowane podpowiedzi dostosowane do różnych języków programowania, włączając wiedzę ekspercką, aby upewnić się, że testy spełniają standardy branżowe. Dodatkowo, CodiumAI konfiguruje środowiska uruchomieniowe, aby lepiej wykryć błędy i wygenerować samonaprawialne testy. Te możliwości sprawiają, że testy generowane przez CodiumAI są bardziej kompleksowe niż standardowe testy jednostkowe, które często pomijają niezamierzone zachowania ze względu na wrodzone uprzedzenia deweloperów i ograniczenia w przewidywaniu wszystkich możliwych scenariuszy.
Na podstawie opinii użytkowników, jakie są najbardziej cenione funkcje CodiumAI, i jak te funkcje wpłynęły na produktywność deweloperów?
Na podstawie opinii użytkowników, które otrzymaliśmy, widzimy, że funkcje /ask z kontekstem bloku kodu i /generowanie testów agenta Codiumate są bardzo poszukiwane i poprawiają przepływ pracy deweloperów.
Z /ask z kontekstem bloku kodu (patrz dokumentacja tutaj: /ask) deweloperzy mogą zadawać otwarte pytania o swoim kodzie lub prosić o ulepszenia kodu podczas bezpłatnej sesji czatu. Ta funkcja jest szczególnie przydatna do uzyskania głębszego zrozumienia bazy kodu, ponieważ model zachowuje pełny kontekst projektu, umożliwiając odpowiedzi na bardzo szczegółowe i specyficzne pytania.
/generowanie testów (patrz dokumentacja tutaj: /test) pozwala deweloperom generować kompleksowe zestawy testów dla swojego kodu zaledwie jednym kliknięciem. Eksploracja zachowania kodu, identyfikacja i rozwiązywanie błędów w czasie, oraz szybkie zwiększanie pokrycia kodu jest ogromnym atutem dla produktywności.
/przegląd (patrz dokumentacja tutaj – /review) funkcja skanuje zmiany kodu w pull request i automatycznie generuje przegląd pull request, aby wykryć problemy przed tym, jak deweloperzy pushują do produkcji.
/opisz (patrz dokumentacja tutaj – /describe) funkcja skanuje zmiany kodu w pull request i generuje opis dla pull request – tytuł, typ, podsumowanie, przewodnik i etykiety, oszczędzając deweloperom czas i energię, którą mogą lepiej wykorzystać na bardziej wymagające lub kreatywne zadania.
Jak CodiumAI identyfikuje przypadki krańcowe i podejrzane zachowania w kodzie?
Nasze narzędzia skanują repozytorium deweloperów w poszukiwaniu odpowiednich fragmentów kodu związanych z kodem podlegającym testowi, a korzystając z łańcuchowych podpowiedzi, mapujemy wszystkie możliwe zachowania kodu i wyświetlamy je deweloperom. CodiumAI może identyfikować podejrzane zachowania bezpośrednio (niezależnie od generowania testów), identyfikując niezgodności lub niespójności między różnymi fragmentami kodu lub między fragmentami kodu a towarzyszącą dokumentacją.
CodiumAI obsługuje główne języki programowania; czy mógłbyś wyjaśnić, jak radzi sobie z językowymi niuansami w analizie kodu i generowaniu testów?
Dla głównych języków programowania, nasza platforma idzie poza podstawowe wsparcie, wdrażając specjalistyczne techniki. Obejmują one kontekstowe pobieranie i dostosowane podpowiedzi dostosowane do unikalnej składni i semantyki każdego języka. Te dostosowane podpowiedzi włączają wiedzę ekspercką z dziedziny języka, aby osiągnąć wyniki na poziomie branży. Dodatkowo, zapewniamy możliwości ustawienia środowiska uruchomieniowego specyficznego dla tych języków, co poprawia zdolność naszego narzędzia do wykrywania błędów i generowania samonaprawialnych testów.
Dla mniej popularnych języków, wykorzystujemy duże modele językowe (LLM), które naturalnie rozumieją wiele języków programowania. Uzupełniamy to o naszą ogólną infrastrukturę kontekstową i system podpowiedzi adaptacyjnych, które razem umożliwiają dokładną analizę kodu i generowanie testów w różnych środowiskach programistycznych. Przyjmując podejście dwupoziomowe, możemy zagwarantować kompleksowe wsparcie niezależnie od użytego języka programowania.
Jakie przyszłe ulepszenia są planowane dla CodiumAI, aby dalej wspierać i upraszczać zadania deweloperów?
Przyszła strategia rozwoju CodiumAI koncentruje się na udoskonaleniu dostępnego zestawu narzędzi zasilanych przez sztuczną inteligencję, aby bezproblemowo integrować się we wszystkich etapach cyklu życia rozwoju oprogramowania. Wykorzystując zaawansowane zasady inżynierii przepływu, aby uproszczać i przyspieszać przepływ pracy deweloperów, nasi agenci będą dostarczać znaczącą wartość na różnych etapach rozwoju. Ponadto, CodiumAI jest zaangażowany w zapewnienie, że te narzędzia doskonale radzą sobie z złożonymi, realnymi scenariuszami kodu i tekstu, czyniąc je niezastąpionymi w codziennych zadaniach programistycznych. To holistyczne podejście ma na celu podniesienie naszej oferty do poziomu solidnego, codziennie używanego narzędzia dla deweloperów, zwiększając produktywność i wydajność w procesie rozwoju oprogramowania.
Dziękujemy za wspaniały wywiad, czytelnicy, którzy chcą dowiedzieć się więcej, powinni odwiedzić CodiumAI.












