Connect with us

Wywiady

Profesor Eran Yahav, Współzałożyciel i Współdyrektor Generalny Tabnine – Wywiad

mm

Profesor Eran Yahav, Współzałożyciel i Współdyrektor Generalny Tabnine, jest profesorem informatyki w Technion – Izraelskim Instytucie Technologicznym. Jego badania koncentrują się na językach programowania, uczeniu maszynowym i inżynierii oprogramowania, w szczególności na syntezie programów i analizie kodu na dużą skalę. Oprócz pracy akademickiej współzałożył Tabnine (pierwotnie Codota), aby zastosować lata badań w praktycznych narzędziach dla programistów, pomagając w pionierskim wprowadzeniu uzupełniania kodu i automatyzacji napędzanej sztuczną inteligencją. Jego praca łączy środowisko akademickie z przemysłem, skupiając się na tym, aby kod generowany przez AI był bardziej niezawodny, bezpieczny i świadomy kontekstu w rzeczywistych środowiskach przedsiębiorstw.

Tabnine to platforma do kodowania wspomagana sztuczną inteligencją, zaprojektowana, aby wspierać programistów w całym cyklu życia rozwoju oprogramowania – od pisania i debugowania kodu po generowanie testów i dokumentacji. Początkowo uruchomiona jako narzędzie do uzupełniania kodu, ewoluowała w szerszą platformę skoncentrowaną na przedsiębiorstwach, która integruje generatywną sztuczną inteligencję i przepływy pracy oparte na agentach, umożliwiając zespołom automatyzację złożonych zadań programistycznych przy jednoczesnym zachowaniu silnej kontroli nad prywatnością, bezpieczeństwem i zgodnością. Dzięki wsparciu dla dziesiątek języków programowania i integracji z głównymi środowiskami IDE, Tabnine ma na celu zwiększenie produktywności programistów, zapewniając jednocześnie, że kod generowany przez AI pozostaje godny zaufania i zgodny ze standardami organizacyjnymi.

Spędził Pan lata na badaniach nad analizą i syntezą programów w Technion, a wcześniej pracował Pan w IBM Research. Jaki problem w rozwoju oprogramowania przekonał Pana do współzałożenia Tabnine i w jaki sposób Pana badania akademickie ukształtowały pierwotną wizję firmy?

Moja praca akademicka koncentrowała się na analizie i syntezie programów, co w istocie polega na uczeniu maszyn rozumienia i generowania kodu. Doktorat zrobiłem z analizy programów i to właśnie w tej dziedzinie spędziłem też pierwsze lata pracy badawczo-rozwojowej. Rozwiązywanie problemów z jakością oprogramowania za pomocą analizy programów uświadomiło mi, że niektóre problemy są bardzo trudne do naprawienia, gdy program został już napisany niepoprawnie. Lepiej zapobiegać niż leczyć, jak to mówią. To przekonało mnie, że właściwym sposobem na rozwiązanie problemów z jakością oprogramowania jest synteza programów, której poświęciłem większość czasu i energii badawczej.

Początkowo pracowałem nad syntezą programów dla programów współbieżnych, próbując zautomatyzować tworzenie programów współbieżnych z sekwencyjnych. Następnie przeszedłem do bardziej ogólnie stosowalnej syntezy programów z wykorzystaniem uczenia maszynowego.

Synteza programów z wykorzystaniem uczenia maszynowego była również fundamentalną ideą napędzającą Tabnine. Pomysł, który teraz wydaje się oczywisty, polegał na tym, że modele mogą uczyć się wzorców kodowania bezpośrednio z dużych korpusów kodu i wspierać programistów w czasie rzeczywistym. Ta ogólna idea znajduje zastosowanie na wszystkich etapach cyklu życia rozwoju oprogramowania – od tworzenia kodu, przez jego przegląd, po wdrożenie i dalej.

Wizją zawsze było wzmocnienie ludzkiego programisty poprzez dostarczenie mu narzędzi, które przyspieszają proces rozwoju i usuwają tarcie. Rozwój oprogramowania to dyscyplina twórcza i rozwiązywania problemów, a celem było, aby AI usunęła tarcie z procesu, zajmując się rutynowymi zadaniami i pomagając programistom utrzymać przepływ pracy. Ta wizja nadal nami kieruje, chociaż technologia znacząco ewoluowała od tamtych wczesnych dni.

Tabnine było pionierem w dziedzinie asystentów kodowania AI na lata, zanim generatywna sztuczna inteligencja stała się mainstreamowa dzięki narzędziom takim jak modele OpenAI. Patrząc wstecz, jak ewoluowała rola AI w rozwoju oprogramowania od tamtych wczesnych dni i jakich lekcji nauczyła się branża od pierwszej fali asystentów programistycznych?

Najwcześniejsze generacje asystentów kodowania AI koncentrowały się głównie na przewidywaniu. Były to w istocie zaawansowane systemy autouzupełniania, które pomagały programistom pisać kod szybciej, przewidując następną linię lub funkcję.

To, co zmieniło się wraz z pętlami agentów, to fakt, że AI może teraz obsługiwać zadania z większą autonomią, do tego stopnia, że możemy rozważać agentów (przy odpowiednim ukierunkowaniu) jako niezależnych młodszych programistów.

Ale nauczyło to również branżę ważnej lekcji. Sama zdolność modelu nie wystarczy do rozwoju oprogramowania dla przedsiębiorstw. Modele szkolone na danych publicznych mogą dawać imponujące wyniki, ale często brakuje im świadomości architektury, zależności i konwencji organizacji.

Dlatego kolejny etap ewolucji to nie tylko większe modele lub większe okna kontekstowe, ale połączenie tych modeli z rzeczywistym kontekstem, w którym budowane jest oprogramowanie.

Wiele przedsiębiorstw odkrywa, że skalowanie agentów AI wymaga czegoś więcej niż większych modeli – wymaga głębszego kontekstu organizacyjnego. Dlaczego uważa Pan, że kontekst staje się prawdziwą granicą dla niezawodnego rozwoju napędzanego przez AI?

Systemy oprogramowania to złożone sieci relacji. Pojedyncza zmiana może wpłynąć na wiele usług, interfejsów API lub komponentów podrzędnych.

Współczesne modele AI są bardzo dobre w generowaniu prawdopodobnego kodu, ale często działają bez ustrukturyzowanego zrozumienia tych relacji. Bez tego zrozumienia AI nie może wiarygodnie rozumować o konsekwencjach zmiany.

Przedsiębiorstwa odkrywają, że niezawodność systemów AI zależy od jakości kontekstu, w którym działają. Jeśli system AI rozumie architekturę systemu, zależności między usługami oraz standardy kodowania organizacji, może generować kod, który znacznie lepiej odpowiada temu, jak ten system faktycznie działa.

W tym sensie kontekst staje się kolejną granicą dla rozwoju AI w przedsiębiorstwach.

Wasz nowy Enterprise Context Engine ma na celu zapewnienie agentom AI ustrukturyzowanego zrozumienia architektury, zależności i praktyk inżynieryjnych organizacji. Czym to podejście różni się od powszechnych metod, takich jak generowanie wspomagane pobieraniem, na których obecnie polegają wiele firm?

Generowanie wspomagane pobieraniem to przydatna technika. Pozwala modelom na pobieranie odpowiednich dokumentów lub fragmentów kodu podczas generowania odpowiedzi.

Ale samo pobieranie nie tworzy zrozumienia. Zapewnia dostęp do informacji, a nie do struktury.

Enterprise Context Engine został zaprojektowany, aby pójść dalej, budując ustrukturyzowaną reprezentację środowiska programistycznego. Analizuje repozytoria, usługi, zależności, interfejsy API i relacje architektoniczne, organizując je w model tego, jak system faktycznie działa.

Pozwala to systemom AI rozumować o relacjach między komponentami, a nie tylko pobierać fragmenty tekstu. W przypadku złożonych środowisk przedsiębiorstw to rozróżnienie staje się bardzo ważne.

Narzędzia do kodowania AI ewoluują od sugestii autouzupełniania do autonomicznych agentów zdolnych do wykonywania wieloetapowych przepływów pracy. Jak Pan postrzega zmianę równowagi między ludzkimi programistami a systemami agentowymi w ciągu najbliższych pięciu lat?

Agenci AI będą coraz częściej przejmować rutynowe zadania programistyczne. Są już zdolni do wdrażania funkcji kompleksowo, w tym testowania i dokumentacji. Każdy programista stanie się liderem zespołu programistów AI. Głównym wyzwaniem będzie komunikacja wymagań temu zespołowi i weryfikacja, czy wygenerowane artefakty odpowiadają zarysowanym wymaganiom.

Jednak rozwój oprogramowania to w istocie rozwiązywanie problemów i projektowanie. Ludzcy programiści nadal będą definiować architekturę, dokonywać kompromisów i wyznaczać ogólny kierunek rozwoju systemów.

Zmieni się poziom abstrakcji, na którym pracują programiści. Zamiast skupiać się na kodzie, programiści będą coraz częściej orkiestrować przepływy pracy na wyższym poziomie i współpracować z systemami AI, które wykonują części tych przepływów.

Innymi słowy, rola programistów staje się bardziej strategiczna, podczas gdy AI zajmuje się większą częścią pracy mechanicznej.

Tabnine wskazało, że użytkownicy korporacyjni mogą obserwować wskaźniki akceptacji kodu generowanego przez AI sięgające około 80% w niektórych środowiskach. Jakich metryk powinny używać organizacje, aby określić, czy narzędzia do kodowania AI faktycznie poprawiają produktywność programistów, a nie tylko generują więcej kodu?

Kluczowe pytanie nie brzmi, ile kodu generuje AI, ale ile użytecznej pracy faktycznie produkuje.

Istnieje kilka metryk, które organizacje powinny śledzić. Jedną z nich jest wskaźnik akceptacji za pierwszym razem, który mierzy, jak często kod generowany przez AI może być użyty bez modyfikacji. Inną jest czas cyklu przeglądu – ile iteracji jest wymaganych, zanim pull request może zostać scalony.

Organizacje powinny również przyjrzeć się czasowi, jaki programiści poświęcają na poprawki, a także czasowi realizacji zmian od rozwoju do produkcji.

Jeśli narzędzia AI rzeczywiście poprawiają produktywność, powinno się zaobserwować poprawę we wszystkich tych metrykach. Programiści spędzają mniej czasu na poprawianiu wygenerowanego kodu, a więcej na pracy nad zadaniami o wyższej wartości.

Przedsiębiorstwa pozostają ostrożne w kwestii udostępniania zastrzeżonego kodu zewnętrznym modelom. W jaki sposób koncepcja “Zaufanego Kodowania AI” (Trusted AI Coding) odnosi się do obaw związanych z zarządzaniem, prywatnością i zgodnością, które spowolniły adopcję narzędzi do rozwoju AI w przedsiębiorstwach?

Zaufanie jest jednym z najważniejszych czynników w adopcji AI przez przedsiębiorstwa.

Zaufanie to ostateczne wyzwanie dla realizacji koncepcji inżyniera AI. Jak mamy zaufać inżynierowi AI, aby działał autonomicznie, wykonując krytyczne zadania inżynierii oprogramowania? Jak zapewnić, że jego działania są zgodne z naszymi oczekiwaniami dotyczącymi jakości, bezpieczeństwa i zgodności z naszymi politykami? Jeśli inżynier AI ma być akceptowanym członkiem naszych zespołów inżynieryjnych, musi być tak samo godny zaufania jak nasi dobrze sprawdzeni i odpowiednio wdrożeni współpracownicy.

Rozwiązanie tego wyzwania opiera się na dwóch kluczowych filarach:

  • Personalizacja: Wyposażenie inżyniera AI w dogłębne zrozumienie Twojej organizacji, bazy kodu i najlepszych praktyk.
  • Kontrola: Wdrożenie solidnych systemów zapewniających, że cały kod – zarówno generowany przez AI, jak i pisany przez człowieka – spełnia standardy jakości, bezpieczeństwa, wydajności i niezawodności Twojej organizacji.

Dodatkowo, Zaufane Kodowanie AI oznacza dawanie organizacjom kontroli nad tym, jak AI jest wdrażane, oraz zapewnianie scentralizowanego zarządzania i kontroli.

Sugerował Pan, że kontekst organizacyjny może stać się podstawową warstwą w stosie AI przedsiębiorstw – podobnie jak bazy danych czy infrastruktura chmurowa w poprzednich erach informatyki. Jak wygląda ta przyszła architektura?

Jeśli spojrzeć na to, jak ewoluuje technologia przedsiębiorstw, często obserwujemy pojawianie się nowych warstw infrastruktury.

Bazy danych stały się fundamentem zarządzania danymi. Platformy chmurowe stały się fundamentem uruchamiania aplikacji na dużą skalę.

W erze AI organizacje będą potrzebować infrastruktury, która pozwoli systemom AI zrozumieć wewnętrzną strukturę przedsiębiorstwa – jego systemy, relacje i ograniczenia operacyjne.

Ta warstwa infrastruktury będzie dostarczać ustrukturyzowany kontekst, z którego mogą korzystać różne systemy AI, czy to asystenci programistyczni, agenci wsparcia, czy narzędzia automatyzacji operacyjnej.

W tym sensie kontekst staje się wspólnym fundamentem dla AI w przedsiębiorstwach.

Wiele firm buduje asystentów programistycznych ściśle powiązanych z jednym modelem podstawowym. Tabnine zamiast tego pozwala przedsiębiorstwom łączyć różne modele w zależności od potrzeb. Dlaczego elastyczność modeli jest ważna dla długoterminowej ewolucji narzędzi do rozwoju AI w przedsiębiorstwach?

Ekosystem AI ewoluuje bardzo szybko. Nowe modele są wydawane często, a różne modele często mają mocne strony w różnych obszarach.

Przedsiębiorstwa nie powinny musieć przeprojektowywać swoich przepływów pracy programistycznej za każdym razem, gdy zmienia się krajobraz modeli. Pozwalając organizacjom na wybór i przełączanie się między modelami, zapewniamy elastyczność, która pomaga zabezpieczyć ich strategię AI na przyszłość.

Elastyczność modeli pozwala również organizacjom na zbalansowanie wydajności, kosztów, wymagań dotyczących prywatności i ograniczeń wdrożeniowych.

W dłuższej perspektywie przedsiębiorstwa prawdopodobnie będą działać w środowisku wielomodelowym, a platformy rozwojowe powinny być projektowane z myślą o tej rzeczywistości.

Dla CTO i liderów inżynieryjnych oceniających dziś platformy rozwoju AI, jakie są największe błędy popełniane przez organizacje przy wdrażaniu narzędzi do kodowania AI i jak można ich uniknąć?

Jednym z częstych błędów jest skupianie się wyłącznie na możliwościach modelu. Większe modele są z pewnością krytycznym składnikiem, ale niezawodność w rzeczywistych środowiskach zależy od tego, jak dobrze AI rozumie system, w którym działa.

Innym błędem jest wdrażanie narzędzi AI bez uwzględnienia wymagań dotyczących zarządzania i bezpieczeństwa. Przedsiębiorstwa potrzebują jasnych polityk dotyczących tego, jak dostępny jest kod, jak wdrażane są modele i jak walidowane są wyniki.

Wreszcie, organizacje czasami oczekują, że AI przyniesie natychmiastowe korzyści

//www.futurist.ai">futurysta, poświęca się badaniu, jak te innowacje ukształtują nasz świat. Ponadto jest założycielem Securities.io, platformy skoncentrowanej na inwestowaniu w zaawansowane technologie, które na nowo definiują przyszłość i przekształcają całe sektory.