GitHub Copilot — это инструмент завершения кода , разработанный GitHub (принадлежит Microsoft ) и OpenAI (49% принадлежит Microsoft), который помогает пользователям интегрированных сред разработки (IDE) Visual Studio Code , Visual Studio , Neovim и JetBrains путем автозаполнения кода. [1] В настоящее время это программное обеспечение для генеративного искусственного интеллекта , доступное по подписке для индивидуальных разработчиков и предприятий, было впервые анонсировано GitHub 29 июня 2021 года и лучше всего работает для пользователей, пишущих код на Python , JavaScript , TypeScript , Ruby и Go . [2] В марте 2023 года GitHub объявил о планах по созданию «Copilot X», который будет включать в Copilot чат-бота на основе GPT-4 , а также поддержку голосовых команд. [3]
29 июня 2021 года GitHub анонсировал GitHub Copilot для технической предварительной версии в среде разработки Visual Studio Code. [1] [4] GitHub Copilot был выпущен в виде плагина на торговой площадке JetBrains 29 октября 2021 года. [5] 27 октября 2021 года GitHub выпустил плагин GitHub Copilot Neovim в качестве общедоступного репозитория. [6] GitHub объявил о доступности Copilot для Visual Studio 2022 IDE 29 марта 2022 года. [7] 21 июня 2022 года GitHub объявил, что Copilot вышел из «технической предварительной версии» и доступен как сервис на основе подписки для отдельные разработчики. [8]
GitHub Copilot — это развитие плагина «Поиск кода Bing» для Visual Studio 2013, который был проектом Microsoft Research, выпущенным в феврале 2014 года. [9] Этот плагин интегрирован с различными источниками, включая MSDN и StackOverflow, для обеспечения высокого качества контекстного поиска. соответствующие фрагменты кода в ответ на запросы на естественном языке. [10]
При наличии задачи программирования на естественном языке Copilot способен генерировать код решения. [11] Он также способен описывать входной код на английском языке и переводить код между языками программирования. [11]
Согласно веб-сайту GitHub Copilot, он включает в себя вспомогательные функции для программистов, такие как преобразование комментариев кода в работоспособный код, а также автозаполнение фрагментов кода, повторяющихся разделов кода и целых методов и/или функций . [2] [12] GitHub сообщает, что функция автозаполнения Copilot работает точно примерно в половине случаев; Например, с некоторым кодом заголовка функции Python Copilot правильно автозаполнил остальную часть кода тела функции в 43% случаев с первой попытки и в 57% случаев после десяти попыток. [2]
GitHub заявляет, что функции Copilot позволяют программистам ориентироваться в незнакомых средах и языках кодирования, сокращая количество времени, которое пользователи тратят на чтение документации . [2]
GitHub Copilot работает на базе OpenAI Codex [13] , который представляет собой модифицированную производственную версию Generative Pre-trained Transformer 3 (GPT-3), языковой модели, использующей глубокое обучение для создания текста, похожего на человеческий. [14] Модель Кодекса дополнительно обучена на гигабайтах исходного кода на десятке языков программирования.
Кодекс OpenAI Copilot подготовлен на английском языке, общедоступных репозиториях GitHub и другом общедоступном исходном коде. [2] Сюда входит отфильтрованный набор данных объемом 159 гигабайт кода Python, полученный из 54 миллионов общедоступных репозиториев GitHub. [15]
GPT-3 OpenAI лицензируется исключительно Microsoft , материнской компанией GitHub . [16]
С момента выпуска Copilot возникли опасения по поводу его безопасности и образовательного воздействия, а также разногласия по поводу лицензирования кода, который он производит. [17] [11] [18]
В то время как генеральный директор GitHub Нат Фридман заявил в июне 2021 года, что «обучение систем машинного обучения на общедоступных данных является добросовестным использованием », [19] коллективный иск , поданный в ноябре 2022 года, назвал это «чистой спекуляцией», утверждая, что «ни один суд не рассматривал этот вопрос». [20] Иск от юридической фирмы Joseph Saveri, LLP оспаривает законность Copilot по нескольким искам, начиная от нарушения контракта с пользователями GitHub и заканчивая нарушением конфиденциальности согласно CCPA для обмена PII . [21] [20]
GitHub признает, что небольшая часть результатов работы инструмента может быть скопирована дословно, что привело к опасениям, что выходной код недостаточно преобразуем, чтобы его можно было классифицировать как добросовестное использование, и может нарушать авторские права первоначального владельца. [17] В июне 2022 года организация Software Freedom Conservancy объявила о прекращении любого использования GitHub в своих проектах, [22] обвинив Copilot в игнорировании лицензий на код , используемых в обучающих данных. [23] В сообщении службы поддержки клиентов GitHub заявил, что «обучение моделей машинного обучения на общедоступных данных считается добросовестным использованием в сообществе машинного обучения», [20] но в групповом иске это было названо «ложным» и дополнительно отмечено, что «независимо от уровня принятия этой концепции в «сообществе машинного обучения», согласно федеральному закону, она является незаконной». [20]
28 июля 2021 года Фонд свободного программного обеспечения (FSF) опубликовал финансируемый конкурс на подготовку официальных документов по философским и юридическим вопросам, связанным с Copilot. [24] Дональд Робертсон, менеджер по лицензированию и соблюдению требований FSF, заявил, что «второй пилот поднимает множество [...] вопросов, которые требуют более глубокого изучения». [24] 24 февраля 2022 г. FSF объявил, что получил 22 статьи по этой теме и с помощью анонимного рецензирования выбрал 5 статей, которые следует выделить. [25]
Служба Copilot основана на облаке и требует постоянной связи с серверами GitHub Copilot. [26] Эта непрозрачная архитектура вызвала обеспокоенность по поводу телеметрии и анализа данных отдельных нажатий клавиш. [27] [28]
В документе, принятом к публикации на симпозиуме IEEE по безопасности и конфиденциальности в 2022 году, оценивалась безопасность кода, сгенерированного Copilot, для 25 основных перечислений уязвимостей кода MITRE (например, межсайтовый скриптинг, обход путей) в 89 различных сценариях и 1689 программы. [18] Это было сделано по осям разнообразия слабых мест (его способности реагировать на сценарии, которые могут привести к различным слабостям кода), разнообразия подсказок (его способности реагировать на одну и ту же слабость кода с небольшими вариациями) и разнообразия домены (его способность генерировать спецификации оборудования уровня передачи регистров в Verilog ). [18] Исследование показало, что по этим осям на нескольких языках 39,33% самых популярных предложений и 40,73% от общего числа предложений привели к уязвимостям кода. Кроме того, они обнаружили, что небольшие, несемантические (например, комментарии) изменения, внесенные в код, могут повлиять на безопасность кода. [18]
В документе, опубликованном Ассоциацией вычислительной техники в феврале 2022 года , оценивается влияние Codex, технологии, используемой Github Copilot, на обучение начинающих программистов. [11] В исследовании используются оценочные вопросы из вводного курса программирования в Университете Окленда и сравниваются ответы Кодекса с успеваемостью учащихся. [11] Исследователи обнаружили, что Кодекс в среднем показал лучшие результаты, чем большинство студентов; однако его производительность снижалась из-за вопросов, которые ограничивали возможности использования в решении (например, условные выражения , коллекции и циклы ). [11] Учитывая этот тип проблемы, «только два из 10 решений [Кодекса] дали правильный результат, но оба [...] нарушили [] ограничение». В документе делается вывод, что Кодекс может быть полезен, предоставляя учащимся различные решения, но также может привести к чрезмерному использованию знаний и плагиату. [11]