А вдруг Андрей сможет меня удивить…

Об авторе: Анатолий Шалыто, профессор, д.т.н., Университет ИТМО

Двадцать четвёртого января 2025 года в Сети появился пост: «The game is on. Наступил момент, когда можно переизобрести то, как мы пишем код. Нами создан Сoding Аgent от JetBrains под названием Junie, который за несколько минут и десятки центов решает задачи, на которые разработчикам требуется не менее часа. Технология есть, теперь переносим её в мир наших реальных проектов и команд. Интересный челлендж получился. Сейчас можно как минимум создать новое поколение продуктов и инструментов, но вообще-то нужна новая методология, новые парадигмы: как думать про код, как декомпозировать задачи, что делать самим, что делегировать агенту [Сoding Аgent] , при том, что всё меняется очень быстро. В этом году будут первые разработчики, которые перестроятся и станут писать программы значительно быстрее. Мне самому нравится не только продуктивность и бизнес-полезность, но и то, что эта технология позволяет получать намного больше удовольствия от программирования. Теперь можно заниматься только самыми приятными его составляющими: концепциями, продуктовыми решениями, сложной архитектурой, а связывающий всё это код автоматизируется и никакой скучной рутины. Do only what you can do, delegate all the rest».

На сайте компании JetBrains, в частности, сказано: «Junie – агент по кодированию от JetBrains. Проект консистентный: агент изучает контекст вашего кода, понимая ваши предпочтения и стиль. Усовершенствуя свой подход с каждой итерацией, Junie помогает вам писать более чистый и согласованный код. Наслаждайтесь непрерывным потоком».

А вот что по этому поводу 23 января 2025 года было написано на сайте Tech Crunch в статье «JetBrains launches Junie, a new AI coding agent for its IDEs»: «JetBrains – компания, создающая такие инструменты кодирования, как IntelliJ IDE для Java и Kotlin (включая сам язык Kotlin), Сегодня она запустила Junie – нового агента кодирования на основе искусственного интеллекта. По утверждению компании, этот агент сможет выполнять рутинные задачи разработки, когда вы хотите создавать новые приложения, а также понимать контекст существующих проектов, которые вы, возможно, захотите расширить новыми функциями».

В хорошо зарекомендовавшем себя тесте SWE-Bench Verified, включающем 500 распространённых задач разработчиков, Junie может решить 53,6% этих задач за один запуск. Не так давно это был бы высший балл, но в данный момент наиболее эффективные модели набирают более 60%, а лидер имеет оценку 64,6%. JetBrains называет результат Junie «многообещающим». Но даже при более низком балле по тесту сервис JetBrains может иметь преимущество из-за его тесной интеграции с остальной частью IDE JetBrains. Компания отмечает, что, когда Junie помогает разработчику выполнять делегируемую им работу, человек всегда контролирует ситуацию. «Код, сгенерированный ИИ, может быть столь же ошибочным, как и код, написанный разработчиком», – пишет компания. В конечном счёте Junie не только ускорит разработку, но поднимет планку качества кода. Объединив возможности IDE JetBrains с большими языковыми моделями (Large Language Models – LLM), новый агент может генерировать код, проводить проверки, писать тесты и проверять их прохождение. Однако, возможно, пройдет немного времени, прежде чем вы сможете попробовать его сами. Услуга доступна только через программу раннего доступа в списке ожидания. В настоящее время агент работает только в Linux и Mac, а также в IDE IntelliJ IDEA Ultimate и PyCharm Professional, но вскоре появится и в WebStorm».

Обо всем этом я пишу так подробно в связи с тем, что пост, с которого начался этот текст, написан Андреем Законовым. Он выпускник 2010 года кафедры «Компьютерные технологии» Университета ИТМО. На фотографии Андрей справа.

Андрей способен вести, а, возможно, и возглавлять эту сложную разработку не только потому, что получил у нас классное IT-образование, но и имеет большой опыт работы в области ИИ в компаниях «ВКонтакте» и «Яндекс».

В первой из них он через семь лет после окончания вуза стал директором по росту и исследованиям. Ещё в 2018 году в интервью для ITMO.NEWS он рассказал, как алгоритмы машинного обучения уже тогда изменяли самую популярную социальную сеть России. В этом же году Андрей выступал в ИТМО с докладом на тему «Специфика проектов, связанных с ML/AI. Как построить эффективную работу команды и быстро запускать такие проекты». А вот его выступления в этой должности на тему «Prodact-driven подход к машинному обучению» в 2019
и 2020 годах.

Двадцать первого октября 2020 года стало известно, что Андрей назначен руководителем разработки голосового помощника «Алиса» в управлении машинного интеллекта и исследований «Яндекса», а 25 ноября того же года были взяты интервью об успехах «Яндекса» у управляющего директора и члена совета директоров группы компаний «Яндекс» Тиграна Худавердяна и ведущих специалистов разных направлений. Андрей в конце этого видео (тайминг 1:00:26 по 1:05:50) рассказывает о «Алисе».

Тринадцатого сентября 2021 года в блогах ИТМО был опубликован текст «Как я узнал об Этом, или Ещё об одном нашем выдающемся выпускнике», в котором я рассказал об Андрее, инициировавшем в компании «Яндекс» создание такой фичи, о которой Худавердян сказал: «Перевод видео с английского на русский – на всех видео на YouTube! Это просто фантастика! Попробуйте. Просто отвал башки».

При этом Тигран обратил внимание на текст Романа Иванова – менеджера по продуктам в «Яндекс»:

«В сентябре 2020 года ко мне пришел Андрей Законов, который тогда руководил продуктовым развитием «Алисы» и рассказал об идее соединить технологии «Яндекса», над которыми мы работаем больше 10 лет, в нечто новое, чего нет у наших конкурентов – перевод видео в Интернете.

Какие технологии? 1. Распознавание иностранной речи. 2. Биометрию для определения пола говорящего. 3. Машинный перевод, созданный «Яндексом» ещё в 2011 году, – он превращает английский текст в русский. 4. Голосовой синтез (он есть у «Яндекса» с 2012 года), который позволяет переведённый текст произнести, причём так, чтобы озвучка синхронизировалась с роликом-оригиналом.

И вот сегодня мы рады рассказать, что эта технология в достаточной степени готова, чтобы ей могли воспользоваться все желающие: теперь приложение «Яндекс» для iOS и Android, а также «Яндекс.Браузер» могут переводить видео с английского на русский – для видео, размещённых на ряде хостингов, в том числе Youtube и Vimeo (число сервисов будем увеличивать).

Выглядит это все просто как магия: нажимаешь на кнопку перевода в десктопном браузере или мобильном приложении «Яндекса», и практически мгновенно получаешь видео с русской озвучкой.

В июле, сразу после публичного рассказа о работе над данной фичей и демонстрации первого видео, мы столкнулись с обвинениями в краже идеи: сначала их предъявил программист, разработавший расширение для озвучки субтитров на YouTube, а затем – коммерческая платформа для републикации видео в других странах. Мы не крали эту идею: её придумали фантасты много лет назад, а применить её к нашим технологиям мы придумали сами в прошлом сентябре (Сообщение в Telegram: 28 сентября Andrew Zakonov создал группу «Перевод видео»).

Первая внутренняя версия, которую мы показали на всю компанию (пост видели тысячи коллег), была готова 18 марта («Журнал про «Яндекс» со следующим комментарием: «Видео без границ в «Яндекс.Браузере». Потребление видео растёт в Интернете с каждым годом, и каждый день появляется огромное количество контента: от видео-шоу на YouTube до курсов про магию во времена Средневековья на Coursera. Несмотря на обилие контента, большая его часть оставалась недоступна нашим пользователям из-за языкового барьера. Но языковый барьер – это то, с чем «Яндекс.Переводчик» уже помог справиться миллионам пользователей, и теперь мы готовимся сделать большой следующий шаг: дать пользователям возможность потреблять любой контент.

Мы подробно описали на «Хабре» («Как Яндекс помогает преодолеть языковый барьер: нейросетевой перевод видео, картинок и текста»), как работа над реализацией этой идеи шла последние 11 лет. Надеюсь, спекуляции на тему воровства идеи перевода видео на этом прекратятся. Попробуйте перевод сами, составьте собственное мнение :-)».

Сразу после этого я прочёл пост Андрея по поводу создания фичи:

«В целом, при создании этого продукта было три приятных момента. 1. Момент, когда идея зарождалась. Он всегда бинарный, вначале ничего непонятно, а потом сразу понятно всё: надо разобраться с бэклогом, синтезом, распознаванием… Если из всего этого сложить пазл, и это всё через браузер дать пользователям, то мы любое видео в Интернете сможем перевести! 2. Момент первого прототипа. Особенно, когда не первую ночь экспериментируешь и тут, наконец-то, получилось так, как и было задумано. Нашёл в переписке первый ролик, на котором я собирал демо. 3. Момент, когда придуманный продукт становится доступен миллионам пользователей. Ощущение, что в итоге получилось сделать что-то в этом мире немного лучше и удобнее для большого числа людей. Это в случае перевода видео сегодня. В приложении «Яндекса» и браузере на всех платформах можно включить русский перевод для любого английского видео с Youtube и Vimeo – это магия. До третьего момента мало какие идеи доживают, поэтому он самый кайфовый. Спасибо команде, которая смогла меньше, чем за год пройти от идеи в сентябре 2020 года до запуска такого масштаба сегодня».

На следующий день – 14 сентября 2021 года – с моей подачи на портале ИТМО вышло интервью с Андреем. Он поблагодарил меня за тексты о нём.

После «Алисы» знания Андрея оказались востребованными компанией JetBrains, о чём рассказано в начале этого текста.

Когда я прочёл приведённый в начале этого текста пост Андрея, то написал ему: «Поздравляю! Классно. Теперь надо внедрить в эту разработку автоматное программирование и будет совсем хорошо!» На это Андрей ответил: «Для части агентских систем автоматный подход очень даже удобен: есть понятие «состояние», доступные действия и LLM выбирает следующий шаг. И такой подход как раз добавляет некую контролируемость этому процессу, обеспечивая возможность направлять его в нужную сторону». После этого я написал: «Так что? Внедряешь?», — но ответа не получил…

Мои вопросы были заданы не просто так, а, можно условно сказать, во «взрыхлённую» мною в своё время «почву». Расскажу об этом.

В 2008 году Андрей под моим руководством защитил бакалаврскую работу на тему «Применение автоматного подхода при создании JavaCard-приложений», а в 2010 году уже под руководством моего бывшего аспиранта, тоже нашего выпускника Олега Степанова – магистерскую диссертацию также по автоматной тематике: «Применение генетических алгоритмов к генерации тестов для автоматных программ».

А вот «автоматный» курсовой проект, выполненный Андреем в 2007 году в соавторстве со своим другом – другим Андреем, Клебановым, на третьем курсе.

Теперь «следы» научной деятельности Андрея. При этом хочу отметить, что наше сотрудничество продолжилось и после окончания им вуза.

  1. Zakonov A. A GA-Based Approach for Test Generation for Automata-Based Programs / Spring/Summer Young Researchers’ Colloquium on Software Engineering 2010, Nizhny Novgorod.
  2. Zakonov A., Stepanov O., Shalyto A. GA-Based and Design by Contract Approach to Test Generation for EFSMs / Proceedings of IEEE East-West Design and Test Symposium (EWDTS`10). St. Petersburg. 2010, pp. 152-155.
  3. Zakonov A., Shalyto A. Automatic Extraction and Verification of State-Models of Web Applications // Lecture Notes in Electrical Engineering. V. 133. Informatics in Control, Automation and Robotics. 2011. V.2, pp. 157-160.
  4. Законов А.Ю., Шалыто А.А. Применение генетических алгоритмов для генерации тестов для автоматных программ // Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики. 2011. № 2, с. 66-72..
  5. Zakonov A., Shalyto A. Extracting EFSMs of Web Application for Formal Requirements // Computer Safety, Reliability and Security. SAFECOMP 2012. Lecture Notes in Computer Science. Vol. 7612, pp. 161-172.
  6. Zakonov A., Shalyto А. Towards Automated High Coverage Test Generation for Web Applications Using Abstract Syntax Trees Analysis / Proceedings 7th International Computer Science Symposium in Russia (CSR 2012). The Third Workshop on Program Semantics, Specification and Verification: Theory and Applications (PSSV 2012). Nizhny Novgorod. 2012.

Из изложенного следует, что я ещё не выжил из ума, так как далеко не к каждому программисту и даже нашему выпускнику «пристаю» с автоматным программированием.

Меня не очень устроил ответ Андрея о применении автоматов при построении агента, так как у меня, как и у Черчилля, «вкусы просты, и я легко удовлетворяюсь лучшим». Лучшее в данном случае состояло бы в том, чтобы автоматы описали поведение генерируемых агентом программ. Однако это вряд ли достижимо, и вот почему.

Двадцать девятого июня 2021 года Microsoft и Open AI представили ИИ-систему, названную GitHub Copilot, которая может давать советы по написанию кода программистам, что должно позволить сделать процесс программирования более доступным для освоения.

Инструмент использует исходный код, загруженный на сервис совместного использования кода GitHub, который Microsoft приобрела в 2018 году. GitHub Copilot является потомком мощной модели GPT-3, которую специалисты компании обучали на множестве терабайт общедоступного кода. Он способен практически полностью заменить программисту напарника, так как просматривает существующий код и комментарии к нему, а также местоположение курсора, и предлагает добавить одну или несколько строк в зависимости от контекста. По мере того, как программист принимает или отклоняет предложения, модель обучается и со временем становится всё более сложной и умной. Уже сегодня сотни разработчиков на GitHub не отключают это средство в течение всего рабочего дня. В настоящее время инструмент лучше всего работает с JavaScript, Python, TypeScript, Ruby и Go.

Так вот, неожиданно для меня в тот же день в сети наш выпускник 2013 года Денис Чащин написал: «Github Copilot – ещё на один шаг к великому сокращению программистов. Кажется, добавь туда автоматное программирование, и готово».

Так как Денис знаком как с автоматным программированием, так и с ИИ со студенческих лет, я попросил его пояснить написанное. Вот что он ответил: «Github Copilot помогает дописывать код, когда понимает, что примерно нужно. Код иногда, судя по скриншотам и анимациям на сайте, подставляется довольно большой, и выглядит примерно так же, как обычно сейчас пишут люди. При этом нет никакой гарантии ни по качеству кода, ни по тому, что он работает правильно, и даже неизвестно, имеет ли он смысл (в документации прямо так и сказано).

Спрашивается, кто запрещает этому ИИ писать код не такой, как сейчас принято, а в разы лучше, скажем, с использованием парадигмы автоматного программирования, чтобы бонусом получать верифицируемые программы и автоматически составлять для них тесты?

Приведу пример. Допустим, я описываю, как визуально должна вести себя кнопка. ИИ понимает, что это кнопка, определяет, какие у неё состояния (нажата, отпущена, длительное нажатие или что-нибудь ещё), и добавляет в код автомат с этими состояниями. После этого автоматически запускаются все автоматически построенные тесты, генерируются и отображаются скриншоты кнопки и её поведения. Если где-то ИИ сомневается, то может запустить игру «Тиндер» (нравится/не нравится), что очень быстро развеет сомнения. Подобного рода «написание» кода может быть распространено и на более сложные функциональности. По аналогии с автодополнением кода можно заодно и переписать и уже существующий».

Я ответил Денису: «Твоё предложение мне, естественно, нравится, но, правда, есть одна незадача: для того, чтобы GitHub Copilot использовал автоматы, он должен быть обучен на автоматных программах. А где много таких программ можно найти? Если использовать только программы на моём сайте, то этого вряд ли будет достаточно. Правда, на основе твоего примера можно попытаться использовать при проектировании программ автоматную методологию, но такую «ломку» даже трудно представить».

По этой же причине вряд ли сможет меня удивить и Андрей. А вдруг всё-таки сможет, ведь, как отмечено выше, он сам пишет: «Нужна новая методология, новые парадигмы: как думать про код, как декомпозировать задачи, что делать самим, что делегировать»! А вдруг автоматное программирование окажется новой методологией и одной из новых парадигм. Где наша не пропадала! А она при таких выпускниках не пропадала нигде!

Чтобы не пропустить самое интересное, читайте нас в Телеграм

Поделиться:

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

3 × 2 =