Интервью
Профессор Эран Яхав, соучредитель и со-генеральный директор Tabnine – серия интервью.

Профессор Эран ЯхавСоучредитель и со-генеральный директор Tabnine — профессор компьютерных наук в Технионе (Израильском технологическом институте), чьи исследования сосредоточены на языках программирования, машинном обучении и разработке программного обеспечения, в частности, на синтезе программ и крупномасштабном анализе кода. Наряду с академической работой, он стал соучредителем Tabnine (первоначально Codota), чтобы применить многолетние исследования к созданию практических инструментов для разработчиков, способствуя внедрению автозавершения кода и автоматизации на основе ИИ. Его работа объединяет академическую среду и промышленность, уделяя особое внимание повышению надежности, безопасности и контекстной осведомленности генерируемого ИИ кода для реальных корпоративных сред.
Табнин Tabnine — это платформа для разработки программного обеспечения на основе искусственного интеллекта, разработанная для оказания помощи разработчикам на протяжении всего жизненного цикла разработки программного обеспечения, от написания и отладки кода до генерации тестов и документации. Первоначально запущенная как инструмент автозавершения кода, она превратилась в более широкую платформу, ориентированную на корпоративный сектор, которая интегрирует генеративный ИИ и рабочие процессы на основе агентов, позволяя командам автоматизировать сложные задачи разработки, сохраняя при этом строгий контроль над конфиденциальностью, безопасностью и соответствием требованиям. Благодаря поддержке десятков языков программирования и интеграции с основными IDE, Tabnine стремится повысить производительность разработчиков, гарантируя при этом, что сгенерированный ИИ код остается надежным и соответствует организационным стандартам.
Вы много лет занимались исследованиями в области анализа и синтеза программ в Технионе, а ранее работали в IBM Research. Какая проблема в разработке программного обеспечения убедила вас стать соучредителем Tabnine, и как ваши академические исследования повлияли на первоначальное видение компании?
Моя научная работа была сосредоточена на анализе и синтезе программ, что, по сути, сводится к обучению машин понимать и генерировать код. Я защитил докторскую диссертацию по анализу программ, и именно этому я посвятил первые несколько лет прикладных исследований. Решение проблем качества программного обеспечения с помощью анализа программ показало, что некоторые проблемы очень трудно решить, если программа написана неправильно. Как говорится, лучше предотвратить, чем лечить. Это убедило меня в том, что правильный способ решения проблем качества программного обеспечения — это синтез программ, чему я и посвятил большую часть своего исследовательского времени и энергии.
Изначально я занимался синтезом программ для параллельных процессов, пытаясь автоматизировать создание параллельных программ из последовательных. Затем я переключился на более универсальный синтез программ с использованием машинного обучения.
В основе Tabnine лежала также фундаментальная идея синтеза программ с использованием машинного обучения. Идея, которая сейчас кажется очевидной, заключалась в том, что модели могли бы изучать шаблоны кодирования непосредственно из больших массивов кода и помогать разработчикам в режиме реального времени. Эта общая идея применима на всех этапах жизненного цикла разработки программного обеспечения — от создания кода до его проверки, развертывания и далее.
Наша цель всегда заключалась в том, чтобы дополнить работу разработчиков, предоставив им инструменты, которые ускорят процесс разработки и устранят препятствия. Разработка программного обеспечения — это творческая дисциплина, требующая решения проблем, и задача заключалась в том, чтобы ИИ устранил препятствия в этом процессе, выполняя рутинные задачи и помогая разработчикам оставаться в рабочем ритме. Эта концепция по-прежнему направляет нас сегодня, хотя с тех пор технологии значительно развились.
Компания Tabnine стала пионером в разработке помощников по программированию на основе ИИ задолго до того, как генеративный ИИ стал широко распространен, благодаря таким инструментам, как модели OpenAI. Оглядываясь назад, как изменилась роль ИИ в разработке программного обеспечения с тех самых первых дней, и какие уроки извлекла отрасль из первой волны помощников в программировании?
Первое поколение систем автоматического завершения кода на основе искусственного интеллекта было в первую очередь ориентировано на прогнозирование. По сути, это были продвинутые системы автозаполнения, которые помогали разработчикам писать код быстрее, предсказывая следующую строку или функцию.
Изменилось то, что в случае с агентными циклами ИИ теперь может выполнять задачи с большей автономностью, до такой степени, что мы можем рассматривать агентов (при надлежащем руководстве) как независимых начинающих разработчиков.
Но это также преподало отрасли важный урок. Одних лишь возможностей модели недостаточно для разработки корпоративного программного обеспечения. Модели, обученные на общедоступных данных, могут давать впечатляющие результаты, но им часто не хватает понимания архитектуры организации, зависимостей и общепринятых правил.
Поэтому следующий этап эволюции заключается не просто в создании более крупных моделей или расширении контекстных окон, а в подключении этих моделей к реальному контексту, в котором создается программное обеспечение.
Многие предприятия обнаруживают, что масштабирование агентов ИИ требует не только увеличения размеров моделей, но и более глубокого организационного контекста. Почему, по вашему мнению, контекст становится настоящим рубежем для надежной разработки на основе ИИ?
Программные системы представляют собой сложные сети взаимосвязей. Одно изменение может повлиять на множество сервисов, API или компонентов, работающих с ними.
Современные модели ИИ очень хорошо генерируют правдоподобный код, но часто работают без структурированного понимания этих взаимосвязей. Без этого понимания ИИ не может надежно рассуждать о последствиях изменений.
Предприятия обнаруживают, что надежность систем искусственного интеллекта зависит от качества контекста, в котором они работают. Если система ИИ понимает архитектуру системы, зависимости между сервисами и стандарты кодирования организации, она может генерировать код, который гораздо точнее соответствует тому, как эта система работает на самом деле.
В этом смысле контекст становится следующим рубежом для разработки корпоративного ИИ.
Ваша новая система контекстной информации для предприятия призвана предоставить агентам искусственного интеллекта структурированное понимание архитектуры организации, зависимостей и инженерных практик. Чем этот подход отличается от распространенных методов, таких как генерация с использованием дополненной информации, на которые в настоящее время полагаются многие компании?
Генерация с использованием дополненного поиска — полезная техника. Она позволяет моделям извлекать релевантные документы или фрагменты кода при генерации ответа.
Но одного лишь поиска информации недостаточно для понимания. Он обеспечивает доступ к информации, а не структуру.
Механизм контекстной информации предприятия (Enterprise Context Engine) разработан для более глубокого анализа, создавая структурированное представление программной среды. Он анализирует репозитории, сервисы, зависимости, API и архитектурные взаимосвязи, организуя их в модель того, как система фактически работает.
Это позволяет системам искусственного интеллекта рассуждать о взаимосвязях между компонентами, а не просто извлекать фрагменты текста. Для сложных корпоративных сред это различие становится очень важным.
Инструменты для программирования с использованием ИИ эволюционируют от подсказок автозаполнения до автономных агентов, способных выполнять многоэтапные рабочие процессы. Как, по вашему мнению, изменится баланс между разработчиками-людьми и агентными системами в ближайшие пять лет?
Искусственный интеллект будет все чаще брать на себя рутинные задачи разработки. Они уже способны реализовывать функции от начала до конца, включая тестирование и документирование. Каждый разработчик станет руководителем команды разработчиков ИИ. Главная задача будет заключаться в том, чтобы донести требования до этой команды и убедиться, что созданные артефакты соответствуют изложенным требованиям.
Однако разработка программного обеспечения по своей сути связана с решением проблем и проектированием. Разработчики-люди будут и дальше определять архитектуру, идти на компромиссы и направлять общее направление развития систем.
Изменится уровень абстракции, на котором работают разработчики. Вместо того чтобы сосредотачиваться на коде, разработчики будут все чаще организовывать рабочие процессы более высокого уровня и сотрудничать с системами искусственного интеллекта, которые выполняют части этих процессов.
Иными словами, роль разработчиков становится более стратегической, поскольку ИИ берет на себя большую часть механической работы.
Компания Tabnine сообщила, что в некоторых корпоративных средах уровень одобрения кода, сгенерированного ИИ, достигает около 80%. Какие показатели должны использовать организации, чтобы определить, действительно ли инструменты ИИ повышают производительность разработчиков, а не просто генерируют больше кода?
Ключевой вопрос не в том, сколько кода генерирует ИИ, а в том, сколько полезной работы он фактически производит.
Организациям следует отслеживать несколько показателей. Один из них — процент одобрения с первого раза, который показывает, как часто сгенерированный ИИ код можно использовать без изменений. Другой показатель — время цикла проверки: сколько итераций требуется, прежде чем запрос на слияние будет принят.
Организациям также следует учитывать время, затраченное разработчиками на доработку кода, а также время, необходимое для внесения изменений от этапа разработки до внедрения в производство.
Если инструменты искусственного интеллекта действительно повышают производительность, вы должны увидеть улучшения по всем этим показателям. Разработчики будут тратить меньше времени на исправление сгенерированного кода и больше времени на выполнение более важных задач.
Предприятия по-прежнему с осторожностью относятся к предоставлению доступа к собственному коду внешним моделям. Как концепция «доверенного ИИ-кода» решает проблемы управления, конфиденциальности и соответствия нормативным требованиям, которые замедлили внедрение инструментов разработки ИИ в предприятиях?
Доверие — один из важнейших факторов внедрения ИИ в предприятиях.
Доверие — это главная проблема на пути к созданию ИИ-инженера. Как мы можем доверять ИИ-инженеру в плане автономного выполнения критически важных задач разработки программного обеспечения? Как мы можем гарантировать, что его действия соответствуют нашим ожиданиям в отношении качества, безопасности и соблюдения наших политик? Если ИИ-инженер должен стать принятым членом наших инженерных команд, ему должно доверять так же, как и нашим тщательно проверенным и должным образом подготовленным коллегам.
Решение этой проблемы опирается на два важнейших столпа:
- ПерсонализацияПредоставление инженеру по искусственному интеллекту глубокого понимания вашей организации, кодовой базы и передовых методов работы.
- КонтролироватьВнедрение надежных систем для обеспечения соответствия всего кода — как сгенерированного ИИ, так и написанного людьми — стандартам качества, безопасности, производительности и надежности вашей организации.
Кроме того, доверенное кодирование ИИ означает предоставление организациям контроля над тем, как развертывается ИИ, и обеспечение централизованного управления и контроля.
Вы предположили, что организационный контекст может стать основополагающим слоем в корпоративной системе искусственного интеллекта — подобно базам данных или облачной инфраструктуре в предыдущие эпохи вычислительных систем. Как будет выглядеть эта будущая архитектура?
Если посмотреть на эволюцию корпоративных технологий, мы часто видим появление новых инфраструктурных уровней.
Базы данных стали основой для управления данными. Облачные платформы стали основой для запуска приложений в масштабе.
В эпоху искусственного интеллекта организациям потребуется инфраструктура, которая позволит системам ИИ понимать внутреннюю структуру предприятия — его системы, взаимоотношения и операционные ограничения.
Этот инфраструктурный слой обеспечит структурированный контекст, который смогут использовать различные системы искусственного интеллекта, будь то помощники по программированию, агенты поддержки или инструменты автоматизации операций.
В этом смысле контекст становится общей основой для корпоративного ИИ.
Многие компании создают помощников по программированию, тесно связанных с одной базовой моделью. Tabnine, напротив, позволяет предприятиям подключать различные модели в зависимости от своих потребностей. Почему гибкость модели важна для долгосрочного развития инструментов разработки корпоративного ИИ?
Экосистема искусственного интеллекта развивается очень быстро. Новые модели выпускаются часто, и разные модели зачастую обладают сильными сторонами в разных областях.
Предприятиям не следует перестраивать свои рабочие процессы разработки каждый раз, когда меняется ландшафт моделей. Предоставляя организациям возможность выбирать и переключаться между моделями, мы обеспечиваем гибкость, которая помогает обеспечить устойчивость их стратегии в области ИИ в будущем.
Гибкость модели также позволяет организациям сбалансировать производительность, стоимость, требования к конфиденциальности и ограничения развертывания.
В долгосрочной перспективе предприятия, вероятно, будут работать в многомодельной среде, и платформы разработки следует проектировать с учетом этой реальности.
Какие самые распространенные ошибки допускают организации при внедрении инструментов для программирования ИИ, и как их избежать, по мнению технических директоров и руководителей инженерных отделов, оценивающих сегодня платформы для разработки ИИ?
Одна из распространенных ошибок — это сосредоточение внимания только на возможностях модели. Более крупные модели, безусловно, являются критически важным компонентом, но надежность в реальных условиях зависит от того, насколько хорошо ИИ понимает систему, в которой он работает.
Ещё одна ошибка — внедрение инструментов ИИ без учёта требований к управлению и безопасности. Предприятиям необходимы чёткие правила доступа к коду, развертывания моделей и проверки результатов.
Наконец, организации иногда ожидают, что ИИ обеспечит немедленное повышение производительности без адаптации рабочих процессов или предоставления достаточного контекста. Успешное внедрение обычно предполагает интеграцию ИИ в существующие процессы разработки и его подключение к коду и архитектуре организации.
Когда эти элементы объединяются, ИИ может стать мощным ускорителем разработки программного обеспечения, а не просто еще одним инструментом.
Спасибо за отличное интервью, читатели, которые хотят узнать больше, должны посетить Табнин.












