GitHub ввёл в строй систему машинного обучения Copilot, генерирующую код
23 июня 2022 года
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/GitHub_Mark.png/220px-GitHub_Mark.png)
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 отличается возможностью формирования достаточно сложных блоков кода, вплоть до готовых функций, синтезированных с учётом текущего контекста. GitHub Copilot адаптируется к манере написания кода разработчиком и учитывает используемые в программе API и фреймворки. Например, при наличии в комментарии примера структуры JSON при начале написания функции для разбора этой структуры GitHub Copilot предложит уже готовый код, а при написании рутинных перечислений повторяющихся описаний сформирует оставшиеся позиции.
Способность GitHub Copilot генерировать готовые блоки кода привела к спорам, связанным с потенциальным нарушением копилефт лицензий. При формировании модели машинного обучения использованы реальные исходные тексты из репозиториев открытых проектов, размещённые на GitHub. Многие из этих проектов поставляются под копилефт лицензиями, такими как GPL, требующими поставки под совместимой лицензией кода производных работ. В случае вставки предложенного Copilot существующего кода разработчики могут невольно нарушить лицензию на проект, из которого был заимствован данный код.
Может ли считаться производной работа, сгенерированная системой машинного обучения, пока не ясно. Также возникают вопросы к тому является ли модель машинного обучения объектом авторских прав и если да, то кому принадлежат эти права и как они соотносятся с правами на код, на основе которого построена модель.
С одной стороны, сгенерированные блоки могут повторять отрывки текста из существующих проектов, но с другой стороны, система воссоздаёт структуру кода, а не копирует сам код. В соответствии с проведённым в GitHub исследованием, только в 1% случаев предлагаемая Copilot рекомендация может включать отрывки кода существующих проектов размером более 150 символов. В большинстве ситуаций повторы возникают, когда Copilot не может корректно определить контекст или предлагает типовые решения проблемы.
Для предотвращения подстановки существующего кода в Copilot добавлен специальный фильтр, не допускающий пересечения с существующими проектами. При настройке разработчик может на своё усмотрение активировать или отключить данный фильтр. Из других проблем отмечается вероятность, что синтезированный код может повторить ошибки и уязвимости, присутствующие в коде, использованном при обучении модели.
Источники
[править]![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/OpenNET_logo.png/150px-OpenNET_logo.png)
![Creative Commons](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/CC_BY_icon.svg/100px-CC_BY_icon.svg.png)
Комментарии[править]
![Мнения](http://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Wikinews_commentary.svg/18px-Wikinews_commentary.svg.png)
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.
- "«В 80% случаев предлагает правильный код, но боюсь отупеть с ним»: первые впечатления от ИИ-сервиса Copilot" --ssr (обсуждение) 05:11, 23 июня 2022 (UTC)