GitHub Copilot — инструмент с использованием искусственного интеллекта, совместно разработанный GitHub и OpenAI для помощи пользователям таких интегрированных сред разработки, как Visual Studio Code, Visual Studio, Neovim и JetBrains в автодополнении кода[1]. Инструмент был впервые анонсирован 29 июня 2021 года и до 21 июня 2022 был доступен только в виде предварительной версии. Лучше всего он подходит для пользователей, создающих код на Python, JavaScript, TypeScript, Ruby и Go[2][3].

GitHub Copilot
Логотип программы GitHub Copilot
Тип SaaS
Разработчики GitHub, OpenAI
Операционные системы Microsoft Windows, Linux, macOS, веб
Первый выпуск 27 октября 2021
Последняя версия 1.28.6134
Тестовая версия 1.28.6136
Сайт copilot.github.com

История

править

29 июня 2021 года GitHub анонсировал GitHub Copilot в качестве расширения в предварительной версии для Visual Studio Code[4][5].

26 октября 2021 года данный инструмент был выпущен в виде плагина в JetBrains Marketplace[6].

27 октября 2021 года GitHub выпустил плагин GitHub Copilot для Neovim в качестве общедоступного репозитория[7].

29 марта 2022 года было официально объявлено о доступности Copilot для Visual Studio 2022[8].

21 июня появилось официальное объявление о выходе Copilot из предварительного тестирования и доступности его для всех желающих по подписочной системе[9].

Функции

править

GitHub Copilot работает на основе OpenAI Codex[англ.], модели искусственного интеллекта, созданной OpenAI — исследовательской лабораторией искусственного интеллекта[10]. OpenAI Codex — это модифицированная производственная версия языковой модели Generative Pre-trained Transformer 3 (GPT-3), использующей глубокое обучение для создания текста, похожего на человеческий[11]. Например, при наличии задачи программирования на естественном языке Codex может сгенерировать код для её решения[12]. Она также может описывать входной код на английском языке и переводить код между языками программирования[12]. Лицензия Codex GPT-3 предоставляется исключительно Microsoft, материнской компании GitHub[13].

OpenAI Codex в Copilot обучается на выбранных общедоступных репозиториях GitHub на английском языке и другом общедоступном исходном коде[14]. Сюда входит отфильтрованный набор данных из 159 гигабайт кода Python, полученный из 54 миллионов общедоступных репозиториев GitHub[15].

Согласно собственному сайту, GitHub Copilot включает в себя вспомогательные функции для программистов, такие как преобразование комментариев в исполняемый код и автозаполнение для фрагментов кода, повторяющихся разделов кода и целых методов или функций[14][16]. В GitHub сообщают, что функция автозаполнения Copilot точна примерно в половине случаев; например, с некоторым кодом, установленным по заголовку функции языка Python, Copilot правильно автозаполнил остальную часть кода тела функции в 43 % случаев с первой попытки и в 57 % случаев после десяти попыток[3].

В GitHub заявляют, что функции Copilot позволяют программистам ориентироваться в незнакомых фреймворках и языках, сокращая количество времени, затрачиваемое на чтение документации[14].

Принятие

править

С момента выпуска Copilot начали возникать опасения по поводу его безопасности и образовательного воздействия, а также разногласия по поводу лицензирования создаваемого им кода[17][18].

Споры о лицензировании

править

Хотя большая часть кода, выводимого Copilot, может быть классифицирована как преобразующая работа[англ.], в GitHub признают, что небольшая его часть скопирована дословно, что привело к опасениям относительно того факта, что полученный код недостаточно преобразован, чтобы его можно было классифицировать как добросовестное использование, и мог нарушать авторские права первоначального владельца[2]. Данный факт оставляет Copilot на непроверенном правовом основании, хотя GitHub заявляет, что «обучение моделей машинного обучения на общедоступных данных считается добросовестным использованием в сообществе машинного обучения»[17].

Официальные документы FSF

править

28 июля 2021 года Фонд свободного программного обеспечения (FSF) опубликовал финансируемый призыв к созданию официальных документов по философским и юридическим вопросам, связанным с Copilot[19]. Дональд Робертсон, менеджер по лицензированию и соблюдению требований FSF, заявил, что «Copilot поднимает много […] вопросов, которые требуют более глубокого изучения»[19]. 24 февраля 2022 года в FSF объявили, что ими было получено 22 статьи по данному вопросу, и с помощью процесса анонимного обзора были выбраны для выделения 5 из них[20].

Вопросы безопасности

править

В документе, принятом к публикации на симпозиуме Института инженеров электротехники и электроники по безопасности и конфиденциальности в 2022 году, оценивалась безопасность кода, сгенерированного Copilot, для 25 основных уязвимостей кода MITRE (например, межсайтовый скриптинг, обход пути) в 89 различных сценариях и 1 689 программах[21]. Это было сделано по осям разнообразия слабых мест (способности реагировать на сценарии, которые могут привести к различным уязвимостям кода), разнообразия подсказок (способности реагировать на одну и ту же уязвимость кода с небольшими вариациями) и разнообразия доменов (возможности генерировать аппаратные спецификации уровня передачи регистров в Verilog)[21]. Исследование показало, что на разных языках по данным осям 39,33 % наилучших из предложений и 40,73 % от общего числа предложений приводят к созданию уязвимостей в коде. Кроме того, было обнаружено, что небольшие несемантические (вроде комментариев) изменения, внесённые в код, могут повлиять на его безопасность[21].

Вопросы образования

править

В документе, опубликованном в феврале 2022 года Ассоциацией вычислительной техники, оценивается влияние Codex, технологии, используемой Github Copilot, на обучение начинающих программистов[18]. В исследовании используются оценочные вопросы из вводного класса по программированию в Оклендском университете, и сравниваются ответы Codex с успеваемостью студентов[12]. Исследователи обнаружили, что Codex в среднем показал результаты лучше, в сравнении с большинством учащихся; однако его производительность снизилась на вопросах с ограничением возможностей, которые можно использовать в решении (например, условные операторы, коллекции и циклы)[12]. Учитывая данную проблему, «только 2 из 10 решений [Codex] были верны, но оба […] нарушили установленные ограничения». В документе делается вывод о том, что Codex может быть полезен для предоставления учащимся разнообразных решений, но также может привести к чрезмерной уверенности и плагиату[12].

См. также

править

Примечания

править
  1. Гершгорн, Дэйв. GitHub and OpenAI launch a new AI tool that generates its own code (англ.). The Verge (29 июня 2021). Дата обращения: 13 июня 2022. Архивировано 7 июля 2021 года.
  2. 1 2 GitHub Copilot · Your AI pair programmer (англ.). GitHub Copilot. Дата обращения: 13 июня 2022. Архивировано 19 июня 2022 года.
  3. Gershgorn. GitHub and OpenAI launch a new AI tool that generates its own code. The Verge (29 июня 2021). Дата обращения: 6 июля 2021. Архивировано 7 июля 2021 года.
  4. Introducing GitHub Copilot: your AI pair programmer (англ.). The GitHub Blog (29 июня 2021). Дата обращения: 13 июня 2022. Архивировано 21 июня 2022 года.
  5. GitHub Copilot - IntelliJ IDEs Plugin | Marketplace (англ.). JetBrains Marketplace. Дата обращения: 7 апреля 2022. Архивировано 27 июня 2022 года.
  6. Neovim plugin for GitHub Copilot (англ.). GitHub (27 октября 2021). Дата обращения: 13 июня 2022. Архивировано 13 июня 2022 года.
  7. GitHub Copilot now available for Visual Studio 2022 (амер. англ.). The GitHub Blog (29 марта 2022). Дата обращения: 7 апреля 2022. Архивировано 14 июня 2022 года.
  8. GitHub Copilot is generally available to all developers (англ.). The GitHub Blog (21 июня 2022). Дата обращения: 23 июня 2022. Архивировано 23 июня 2022 года.
  9. Krill. OpenAI offers API for GitHub Copilot AI model (англ.). InfoWorld (12 августа 2021). Дата обращения: 7 апреля 2022. Архивировано 17 апреля 2022 года.
  10. OpenAI Releases GPT-3, The Largest Model So Far (англ.). Analytics India Magazine (3 июня 2020). Дата обращения: 13 июня 2022. Архивировано 4 августа 2020 года.
  11. 1 2 3 4 5 Финни-Энсли, Джеймс (2022-02-14). "The Robots Are Coming: Exploring the Implications of OpenAI Codex on Introductory Programming". Australasian Computing Education Conference. Association for Computing Machinery: 10—19. doi:10.1145/3511861.3511863. ISBN 978-1-4503-9643-1.
  12. OpenAI is giving Microsoft exclusive access to its GPT-3 language model (англ.). MIT Technology Review. Дата обращения: 7 апреля 2022. Архивировано 5 февраля 2021 года.
  13. 1 2 3 GitHub Copilot · Your AI pair programmer. GitHub Copilot. Дата обращения: 7 апреля 2022. Архивировано 19 июня 2022 года.
  14. Элфорд, Энтони. OpenAI Announces 12 Billion Parameter Code-Generation AI Codex (англ.). InfoQ. Дата обращения: 13 июня 2022. Архивировано 9 июля 2022 года.
  15. Собания, Доминик (2022). "A Comprehensive Survey on Program Synthesis with Evolutionary Algorithms". IEEE Transactions on Evolutionary Computation: 1. doi:10.1109/TEVC.2022.3162324. ISSN 1941-0026. Архивировано 1 апреля 2022. Дата обращения: 13 июня 2022.
  16. 1 2 "GitHub's automatic coding tool rests on untested legal ground". The Verge. 2021-07-07. Архивировано 11 июля 2021. Дата обращения: 11 июля 2021.
  17. 1 2 Finnie-Ansley, James (2022-02-14). "The Robots Are Coming: Exploring the Implications of OpenAI Codex on Introductory Programming". Australasian Computing Education Conference. Association for Computing Machinery: 10—19. doi:10.1145/3511861.3511863. ISBN 978-1-4503-9643-1.
  18. 1 2 FSF-funded call for white papers on philosophical and legal questions around Copilot. Free Software Foundation (28 июля 2021). Дата обращения: 11 августа 2021. Архивировано 11 августа 2021 года.
  19. Publication of the FSF-funded white papers on questions around Copilot (англ.). Free Software Foundation (24 февраля 2022). Дата обращения: 13 июня 2022. Архивировано 16 июня 2022 года.
  20. 1 2 3 Хаммонд Пирс, Бали Ахмад, Бенджамин Тан, Брендан Долан-Гавитт, Рамеш Карри. Asleep at the Keyboard? Assessing the Security of GitHub Copilot's Code Contributions (англ.) // arXiv:2108.09293 [cs]. — 2021. Архивировано 21 июня 2022 года.