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

  • cocucka
    link
    fedilink
    arrow-up
    0
    ·
    4 years ago

    Это прям какой-то кибер-столлман-панк. Особенно доставляет:

    Способность GitHub Copilot генерировать готовые блоки кода привело к спорам, связанным с потенциальным нарушением копилефт лицензий. При формировании модели машинного обучения использованы реальные исходные тексты из репозиториев открытых проектов, размещённые на GitHub. Многие из этих проектов поставляются под копилефт лицензиями, такими как GPL, требующими поставки под совместимой лицензией кода производных работ.

    Хотя по сути человеки точно так же обучаются на кусках кода, в т.ч. и открытых проектов, да ещё и копипастят нещадно.

    • cryptOP
      link
      fedilink
      arrow-up
      0
      ·
      4 years ago

      меня больше зацепило это:

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

      )))

    • cryptOP
      link
      fedilink
      arrow-up
      0
      ·
      4 years ago

      мой ауторепостер новостей вполне исправно работает, но приходится каждый раз заполнять поля на сайте вручную. я думаю, нельзя ли напрямую постить на сайт из скрипта. но останавливают капчи и там еще csrf какой-то.

      • cocucka
        link
        fedilink
        arrow-up
        0
        ·
        4 years ago

        нельзя ли напрямую постить на сайт из скрипта. но останавливают капчи и там еще csrf какой-то.

        Натрави на скрипт Copilot, может он напишет? :)