GitHub Copilot и Amazon CodeWhisperer
Битва за лучшего помощника по кодированию на базе искусственного интеллекта официально началась!
GitHub Copilot и Amazon CodeWhisperer — это помощники по программированию на основе искусственного интеллекта, которые выводят автозаполнение на совершенно новый уровень. В лучшем случае они могут писать целые куски функционирующего кода, основываясь лишь на небольшом описательном тексте, предоставленном разработчиком. Это может сделать вас более эффективным как разработчика
и, на мой взгляд, сделает разработку намного веселее!✨
Итак, без лишних слов, приступим!
Что такое помощник по кодированию на базе ИИ?
GitHub Copilot и Amazon CodeWhisperer — это сервисы, которые интегрируются с вашим редактором кода и помогают вам писать код быстрее. Но в отличие от обычных инструментов автозаполнения, таких как, например, «IntelliSense», Copilot и CodeWhisperer используют модели машинного обучения, которые были обучены как исходному коду, так и естественному языку, что позволяет им понимать как программирование, так и человеческий язык. Это позволяет им понимать комментарии, написанные простым английским языком, генерировать код в соответствии с замыслом разработчика и соответствовать шаблонам и стилю разработчика. По мере ввода они даже дают рекомендации по завершению самого первоначального комментария. Вы можете принять лучшую рекомендацию, просмотреть другие рекомендации или просто продолжить писать собственный код.
Тратьте меньше времени на создание шаблонов и повторяющихся шаблонов кода и больше времени на то, что действительно важно: создание отличного программного обеспечения (GitHub Copilot)
Что такое GitHub Copilot?
GitHub Copilot был разработан GitHub и OpenAI. Он основан на модели OpenAI Codex, которая была обучена общедоступному исходному коду, включая общедоступные репозитории на GitHub. В июне 2022 года было официально объявлено, что Copilot «вышел из технической предварительной версии».
Copilot очень прост в использовании и предлагает оптимизированную интеграцию со всеми основными редакторами кода. GitHub Copilot оптимизирован для семи основных языков программирования (подробности см. в таблице ниже), но также может генерировать предложения на других языках и в самых разных средах.
Copilot был бесплатным на этапе предварительного просмотра, но GitHub недавно объявил, что они перейдут на модель на основе подписки. Вы по-прежнему можете получить 60-дневную бесплатную пробную версию, и она останется бесплатной для проверенных студентов и разработчиков популярных проектов с открытым исходным кодом.
Что такое Amazon CodeWhisperer?
Amazon CodeWhisper был разработан Amazon. Его модели машинного обучения обучаются на различных источниках данных, включая собственный код Amazon и код с открытым исходным кодом.
CodeWhisperer все еще находится в предварительной версии и поддерживает меньше языков и основных редакторов кода, чем GitHub Copilot. Однако широкая языковая поддержка и поддержка IDE не являются его главными достоинствами. Вместо этого CodeWhisperer фокусируется на предоставлении первоклассной поддержки API-интерфейсов AWS, которая предоставляет рекомендации по коду для API-интерфейсов AWS в самых популярных сервисах, включая Amazon Elastic Compute Cloud (EC2), AWS Lambda и Amazon Simple Storage Service (S3). Качество важнее количества?
Согласно этому сообщению в блоге Amazon, пользователь должен иметь возможность написать «загрузить файл на S3», и CodeWhisperer автоматически определит, какие облачные сервисы и общедоступные библиотеки лучше всего подходят для указанной задачи, создаст конкретный код на лету, и рекомендовать сгенерированные фрагменты кода прямо в IDE.
В течение периода предварительного просмотра разработчики могут бесплатно использовать CodeWhisperer, зарегистрировавшись здесь .
Сравнение
Что более популярно?
Учитывая короткое время существования CodeWhisperer (выпущенного в прошлом месяце), мне не удалось найти никаких данных о количестве пользователей. Тем не менее, вероятно, можно с уверенностью сказать, что GitHub Copilot с его годовой форой в настоящее время является доминирующим игроком. По данным самого GitHub , более 1,2 миллиона разработчиков использовали техническую превью Copilot за последние 12 месяцев. Их собственное исследование показывает, что пользователи приняли в среднем 26% всех завершений, показанных GitHub Copilot, и до 40% файлов кода разработчиков были сгенерированы GitHub Copilot.
Как насчет конфиденциальности?
Чтобы повысить свою производительность, Copilot и CodeWhisperer собирают данные от своих пользователей. Вы подвергаете кодовую базу или данные вашей организации риску, используя эти инструменты на работе? Это важный вопрос и потенциальный нарушитель условий сделки для большинства компаний.
Чтобы предоставить предложения по коду, GitHub Copilot отправляет ваш код и комментарии в службу GitHub Copilot. Эта служба опирается на контекстно-подобное содержимое файла, как в файле, который вы редактируете, так и в соседних или связанных файлах в проекте. Он также может собирать URL-адреса репозиториев или пути к файлам для определения соответствующего контекста. Части сбора данных можно отключить в настройках телеметрии. Другие части, такие как информация об использовании, необходимы для использования второго пилота и не могут быть отключены. Это может включать личные данные, как указано в Заявлении о конфиденциальности GitHub .
GitHub также заявляет, что в результате внутреннего тестирования они обнаружили, что предложения GitHub Copilot редко включают дословно личные данные из обучающего набора («редко»...? ). Однако некоторые из этих предложений могут показаться личными данными — адреса электронной почты, номера телефонов и т. д. — но на самом деле являются фиктивной информацией, синтезированной из шаблонов в обучающих данных.
Amazon CodeWhisperer также собирает определенную информацию, например контекстную информацию (включая содержимое файлов), отзывы, показатели телеметрии и информацию о пользовательской среде. В своих Условиях обслуживания Amazon заявляет, что на этапе предварительного просмотра они могут предложить вам включить или выключить совместное использование контента.
Как насчет рисков и уязвимостей?
Оба помощника обучены общедоступному коду, который может содержать небезопасные шаблоны кодирования, ошибки или ссылки на устаревшие API или идиомы. Этюд «Заснул за клавиатурой? Оценка безопасности вклада кода GitHub Copilot » обнаружила, что целых 40% их тестовых сценариев с использованием Copilot содержали уязвимый код.
GitHub признает, что иногда Copilot может предлагать старые или устаревшие варианты использования библиотек и языков и что он может синтезировать код, содержащий нежелательные шаблоны. Чтобы смягчить это, они предлагают использовать свой продукт в сочетании с такими инструментами, как GitHub Actions, Dependabot и CodeQL, чтобы улучшить качество кода.
То же самое относится и к Amazon, хотя, к их чести, Amazon предприняла большие меры, чтобы противодействовать этому, предоставив сканирование безопасности для обнаружения уязвимостей в проектах Java и Python.
При этом вы всегда должны использовать своих помощников по кодированию на основе ИИ вместе с надлежащим тестированием, передовыми методами проверки кода и надежными инструментами безопасности, а также своим собственным суждением!
Как насчет (неправильного) использования общедоступного кода?
Повышена осведомленность о существенном использовании общедоступного кода в обучающей выборке. В идеале помощник должен постоянно генерировать код, которого раньше никто не видел. Если вместо этого помощник произносит код непосредственно из обучающего набора, это потенциально может лишить его права на добросовестное использование и нарушить авторские права первоначального владельца.
Чтобы смягчить это, Copilot имеет встроенный фильтр, который пытается обнаружить и подавить случаи, когда предложение GitHub Copilot содержит код, соответствующий общедоступному коду на GitHub. Этот фильтр является необязательным и может быть отключен. По словам самих GitHub, Copilot будет выводить дословные фрагменты кода длиннее ~ 150 символов примерно в 1% случаев. Они винят в этом случаи, когда GitHub Copilot не может получить достаточный контекст из кода, который вы пишете, или когда существует общее, возможно, даже универсальное решение проблемы.
Подобно Copilot, CodeWhisperer также поставляется с трекером ссылок, который может определять, когда сгенерированные выходные данные могут быть похожи на определенные обучающие данные. Что касается сбора кода, написанного пользователями, Amazon заявляет, что они не будут использовать какой-либо код, написанный разработчиком, для дальнейшего обучения своих моделей на этапе предварительного просмотра. Однако CodeWhisperer хранит данные о действиях пользователей, связанных с ответами разработчиков на рекомендации по коду, например принятие или отклонение рекомендации. Служба использует эту обратную связь, чтобы сделать свои модели машинного обучения более точными, чтобы CodeWhisperer мог улучшить будущие рекомендации.
Победителем является..?
GitHub Copilot является победителем, когда речь идет о поддержке языка и IDE. Он также существует дольше и официально вышел из предварительного просмотра, что дает его разработчикам больше времени для исправления ошибок и сглаживания неровностей на дороге. Его использование требует небольших финансовых вложений, но вы получаете полностью функциональный продукт, готовый к работе.
Однако если вы работаете в среде AWS, возможно, вам подойдет Amazon CodeWhisperer. Я действительно восхищаюсь стремлением Amazon стать первым поставщиком облачных услуг, предложившим интеллектуального помощника по кодированию, который в значительной степени нацелен на их собственный продукт, и я надеюсь, что другие поставщики последуют этому примеру (я смотрю на вас, Azure!). Кроме того, их встроенное обнаружение уязвимостей также может быть хорошей причиной для его рассмотрения. Наконец, тот факт, что в настоящее время он бесплатный, является сильным стимулом хотя бы попробовать его, пока он находится в предварительной версии. Однако это потребует от вас регистрации и терпеливого ожидания своей очереди. ⏳
Наконец, давайте на минутку оценим, как далеко продвинулась технология и какие замечательные инструменты мы теперь можем использовать как разработчики! И GitHub Copilot, и Amazon CodeWhisperer — потрясающие технологии, которые, как я предсказываю, станут обязательными инструментами для всех серьезных разработчиков в недалеком будущем. И поскольку другие участники, такие как Google и Salesforce , начинают нырять в воду, кажется, что мы скоро вступим в новую эру, когда дело доходит до разработки кода.
Я надеюсь, что вы нашли эту статью полезной. Спасибо за прочтение!
Примечание редактора:
GitHub Copilot оказался чрезвычайно ценным в моей работе специалиста по данным. Анализ данных часто требует от меня быстрой проверки гипотез. Поскольку я обычно не знаю заранее, каков будет результат, я часто заканчиваю тем, что пишу много почти идентичного кода, который я запускаю только один раз, чтобы либо подтвердить, либо опровергнуть мою гипотезу. GitHub Copilot стал отличным инструментом для ускорения этого процесса, а также хорошо интегрируется со всеми любимыми IDE для специалистов по данным, а именно с Jupyter Notebook (в VS Code) !
ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА
- GitHub, ваш программист пар AI (2022 г.), github.com
- Amazon, компаньон для кодирования на базе машинного обучения — Amazon CodeWhisperer — Amazon Web Services (2022 г.), aws.amazon.com
- Amazon, AWS анонсирует Amazon CodeWhisperer (предварительная версия) (2022 г.), aws.amazon.com
- А. Десаи и А. Део, Знакомство с Amazon CodeWhisperer, компаньоном по написанию кода на базе машинного обучения (2022 г.), блог AWS Machine Learning
- С. Бхаттачарья, Битва помощников по кодированию ИИ: GitHub Copilot против Amazon CodeWhisperer (2022 г.), analyticsindiamag.com
- Б. Диксон, GitHub Copilot теперь общедоступен — вот что вам нужно знать (2022 г.), Venturebeat.com
- Ф. Лардинуа, Amazon запускает CodeWhisperer, инструмент парного программирования ИИ, похожий на GitHub Copilot (2022 г.), techcrunch.com
- Д. Гершгорн, инструмент автоматического кодирования GitHub опирается на непроверенное юридическое основание (2021 г.), theverge.com

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































