GitHub
объявил
о завершении тестирования интеллектуального помощника GitHub
Copilot, способного генерировать типовые
конструкции при написании кода. Система разработана совместно с проектом
OpenAI и использует платформу машинного обучения OpenAI Codex,
натренированную на большом массиве исходных текстов, размещённых в
публичных репозиториях GitHub. Сервис бесплатен для сопровождающих
популярных открытых проектов и студентов. Для остальных категорий
пользователей доступ к GitHub Copilot платный ($10 в месяц или $100 в
год), но предоставляется бесплатный ознакомительный доступ к течение 60
дней.
Поддерживается генерация кода на языках программирования Python,
JavaScript, TypeScript, Ruby, Go, C# и C++ с использованием различных
фреймворков. Доступны модули для интеграции GitHub Copilot со средами
разработки Neovim, JetBrains IDEs, Visual Studio и Visual Studio
Code.Судя по собранной в процессе тестирования телеметрии сервис
позволяет генерировать код достаточно высокого качества - например, 26%
предложенных в GitHub Copilot рекомендаций были приняты разработчиками
как есть.
От традиционных систем автодополнения кода GitHub Copilot отличается
возможностью формирования достаточно сложных блоков кода, вплоть до
готовых функций, синтезированных c учётом текущего контекста. GitHub
Copilot адаптируется к манере написания кода разработчиком и учитывает
используемые в программе API и фреймворки. Например, при наличии в
комментарии примера структуры JSON при начале написания функции для
разбора этой структуры GitHub Copilot предложит уже готовый код, а при
написании рутинных перечислений повторяющихся описаний сформирует
оставшиеся позиции.
Способность GitHub Copilot генерировать готовые блоки кода привело к
спорам, связанным с потенциальным нарушением копилефт лицензий. При
формировании модели машинного обучения использованы реальные исходные
тексты из репозиториев открытых проектов, размещённые на GitHub. Многие
из этих проектов поставляются под копилефт лицензиями, такими как GPL,
требующими поставки под совместимой лицензией кода производных работ. В
случае вставки предложенного Copilot существующего кода разработчики
могут невольно нарушить лицензию на проект, из которого был заимствован
данный код.
Может ли считаться производной работа, сгенерированная системой
машинного обучения, пока не
ясно.
Также возникают вопросы к тому является ли модель машинного обучения
объектом авторских прав и если да, то кому принадлежат эти права и как
они соотносятся с правами на код, на основе которого построена модель.
С одной стороны сгенерированные блоки могут повторять отрывки текста из
существующих проектов, но с другой стороны система воссоздаёт структуру
кода, а не копирует сам код. В соответствии с проведённым в GitHub
исследованием только в 1% случаев предлагаемая Copilot рекомендация
может включать отрывки кода существующих проектов, размером более 150
символов. В большинстве ситуаций повторы возникают когда Copilot не
может корректно определить контекст или предлагает типовые решения
проблемы.
Для предотвращения подстановки существующего кода в Copilot добавлен
специальный фильтр, не допускающий пересечения с существующими
проектами. При настройке разработчик может на своё усмотрение
активировать или отключить данный фильтр. Из других проблем отмечается
вероятность, что синтезированный код может повторить ошибки и
уязвимости, присутствующие в коде, использованном при обучении модели.
// cc-by opennet.ru
// converted with crypt’s opennet autoreposter
>>> Подробности