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