Создание сайтов в Углегорске, ДНР. Что такое GitHub Copilot? Программист AI Pair для всех

Программисты тратят много времени на написание кода. Такие инструменты, как редакторы кода, могут помочь нам вместе с предложениями по синтаксису, фрагментами, предложениями по отладке и т. д. Но что, если бы у нас был инструмент, использующий искусственный интеллект (ИИ), чтобы помочь нам писать гораздо более существенные части кода? Вот что такое GitHub Copilot.

Недавно я просматривал Твиттер, когда увидел этот твит с официального аккаунта GitHub:

Я был поражен идеей, что ИИ помогает мне писать код (или даже выполнять всю тяжелую работу), поэтому я пошел дальше и посетил страницу GitHub Copilot.

Пропустив весь контент, я перешел к нижней части страницы в поисках способа проверить это. Я наткнулся на баннер с призывом к действию, чтобы подписаться на техническую предварительную версию GitHub Copilot.

Объявление второго пилота GitHub

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

Узнайте больше, чтобы узнать, что такое GitHub copilot, мой опыт работы с ним и как он повлияет на вас... или почему, возможно, нет.

Что такое второй пилот?

Проще говоря, GitHub Copilot — это инструмент искусственного интеллекта, который предлагает варианты кода на основе комментариев и контекста редактируемого файла.

Copilot — результат сотрудничества между GitHub и OpenAI, активно поддерживаемого Microsoft. Он оснащен совершенно новой системой искусственного интеллекта Codex, основанной на модели GPT-3.

GPT-3 означает третье поколение генеративного предварительно обученного преобразователя — языковой модели, способной генерировать последовательности текста из простых подсказок. Codex является производным от этой модели, которая способна не только генерировать текст, но и генерировать код на некоторых из самых популярных языков.

Copilot был обучен миллиардам строк кода из общедоступных репозиториев на GitHub, поэтому ваш код, вероятно, каким-то образом улучшил этот инструмент искусственного интеллекта (подробности мы рассмотрим позже).

Хотя он поддерживает большинство языков программирования, в настоящее время он лучше всего работает с Python, JavaScript, TypeScript, Ruby и Go.

Давайте посмотрим, как работает GitHub Copilot и на что он сейчас способен.

GitHub Copilot в действии

Copilot невероятно прост в установке. Если у вас есть доступ к технической предварительной версии, просто загрузите расширение VS Code, выполнив поиск на вкладке «Расширение «и активировав его.

Расширение GitHub Copilot

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

На данный момент единственный способ использовать Copilot — это VS Code, и он может оставаться неизменным в течение некоторого времени, согласно странице Copilot.

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

Как работают предложения кода

GitHub Copilot генерирует для вас несколько предложений в зависимости от контекста файла, который вы редактируете. В основном, он дает вам предложения, основанные на комментариях, которые вы сделали в файле, и коде, который вы написали ранее.

Как только Copilot предложит код, он попросит вас использовать его. Давайте протестируем Copilot, создав функцию, которая вычисляет среднее значение набора данных. Единственное, что я предоставлю Copilot, это комментарий и название функции.

Вычислить среднее

Как видите, текст, выделенный серым цветом, предложен вторым пилотом, и я могу принять его, нажав Tab. Но если мне не нравится первое предложение, я могу просмотреть другие предложения с помощью Ctrl+ ]или просмотреть множество решений на боковой панели с помощью Ctrl+ Return.

Другие решения

Впечатляет, не так ли? Но давайте поставим другую задачу. Теперь Copilot должен создать mainфункцию, позволяющую пользователю вводить некоторые числа, разделенные пробелами. Он должен разделить эти числа и передать полученный список compute_averageфункции перед печатью результата.

Реализовать функцию вычисления среднего

Наконец, я попрошу Copilot вызвать основную функцию, используя точку входа выполнения __name__ == '__main__'.

Основная функция

И вот как GitHub Copilot написал функциональный скрипт Python, основанный только на тех командах, которые я ему дал. Конечно, код не идеален. Например, compute_averageфункцию можно сократить до sum (dataset) / len (dataset), но в целом результат будет довольно хорошим.

Тестирование второго пилота с помощью простых задач

Начнем с функции, которую должен знать каждый разработчик: FizzBuzz. Я напишу условие задачи, назову функцию и позволю второму пилоту сделать всю работу.

ФиззБазз

Как насчет функции високосного года? В этом случае я предоставлю только простую строку документации.

Високосный год

Теперь простая проверка палиндрома.

Проверка палиндрома

Еще одна приятная особенность Copilot заключается в том, что он также может давать предложения в комментариях и строках документации. В приведенном выше примере завершено определение палиндрома!

Наконец, простой генератор паролей. Я предоставил длинное описание и модули, которые хотел использовать. Удивительно, но я получил именно то, что хотел.

Генератор паролей

В заключение этого раздела, Copilot очень хорошо предлагает простые решения на основе наших комментариев.

Теперь давайте проверим, как этот программатор пары ИИ работает в более сложных условиях.

Комплексное использование второго пилота

Во-первых, давайте воспользуемся Copilot для решения общих задач алгоритмов. Например, реализация итеративного бинарного поиска.

Бинарный поиск

Не волнуйтесь, если вы не понимаете код; сначала я тоже не знал. Вот один из недостатков использования такого инструмента. Вы можете реализовать код, предоставленный Copilot, фактически не понимая его смысла.

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

Помимо этого, приведенное выше решение превосходно (вероятно, извлечено из репозитория DSA GitHub). Это читаемый код, который мне удалось понять за несколько минут анализа.

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

Мы протестировали Copilot на простых задачах и алгоритмах. Было бы неплохо использовать его в реальных решениях.

Проект Джанго

Django — один из наиболее часто используемых фреймворков Python. Давайте посмотрим, как Copilot взаимодействует с Django в приложении для блога.

Я создал Postкласс модели и указал поля, которые мне нужны. (Модель в Django — это представление таблицы базы данных в коде Python.) Это то, что мне предложил Copilot.

Модель поста в блоге

Неплохо, но сразу же после того, как я принял предложение, я получил еще одно. Второй пилот хотел создать Commentмодель! Это было то, что я получаю.

Модель комментария блога

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

Второй пилот снова предложил другую возможную модель — Tagмодель — и мне оставалось только напечатать class:

class Tag (models.Model):

«««Tag model

name: CharField

««»

name = models.CharField (max_length=100)

post = models.ManyToManyField (Post)

def __str__ (self):

return self.name

Я был ошеломлен, поэтому моей следующей задачей было позволить Copilot протестировать созданные им модели. Я запустил test.pyфайл в своем приложении для блога и дал Copilot несколько небольших советов (например, импортировать модели, создать имя класса Test).

Второй пилот тестирует свой код

Наконец-то я нашел слабое место! Copilot не смог написать полный набор тестов для созданного им кода. Но тем не менее, Django — сторонний пакет, и я был поражен, что Copilot удалось создать три модели самостоятельно.

Завершая это приключение Django с Copilot, я должен сказать, что код не был идеальным. Были вещи, которые нужно было улучшить, такие как help_textопределения и использование некоторых важных аргументов модели, таких как verbose_name, но в целом второй пилот превзошел мои ожидания.

Беседа с вторым пилотом

Copilot в некоторой степени основан на GPT-3, что означает, что он может понимать естественный язык в текстовом файле и на его основе устанавливать диалог.

Беседа со вторым пилотом 1: «Как дела?» «Отлично» «Какая погода?» «Хорошо снаружи»

Вау, кажется, Copilot довольно хорошо относится к Python, и я тоже. С нетерпением жду разговора.

Беседа со вторым пилотом 2: «Как насчет кодирования на C#?» «Да, я знаю C#» «Что вы думаете о бюджете проекта в 5000 долларов США?» «Не знаю»

Помимо возможности предлагать код, Copilot также обладает хорошими навыками ведения переговоров.

Серьезно относясь к возможному использованию этого, Copilot может помочь вам написать надлежащую документацию или копирайтинг, если вы работаете с форматами текстовых файлов, такими как Markdown, RST или LaTeX.

Например, это может помочь вам написать статьи (как эта) или даже книгу.

Copilot помогает писать технические статьи

Мои мысли о втором пилоте

Copilot — чрезвычайно интересный инструмент. На первый взгляд, программировать с его помощью очень приятно, и я провел несколько часов, тестируя его.

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

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

Медленное завершение кода

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

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

Это понятно, потому что он получает предложения из Интернета, что может вызвать некоторую задержку. Конечно, это зависит от скорости вашего интернета.

Кроме того, Copilot часто предлагает более обширное завершение, как показано в приведенных выше тестах, которое требует гораздо больше ресурсов (на сервере, на котором находится Copilot), чем предложение простого функционального метода.

Прерывание потока

На этих ранних стадиях это не тот инструмент, который вы бы использовали при создании серьезного проекта.

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

Я часто сталкивался с этим, так как может быть раздражающим просмотр каждого фрагмента кода, который он мне предлагает. К счастью, Нэт Фридман (генеральный директор GitHub) обратился к этой проблеме в Твиттере, и у Copilot может быть пользовательский интерфейс, показывающий, предлагает ли он код или нет.

Предлагается сломанный код

Иногда предложения второго пилота не работают. Как они подтверждают на странице GitHub Copilot, он делает все возможное, чтобы дать вам оптимальное завершение кода, но это не означает, что каждый фрагмент кода, предоставленный Copilot, будет работать идеально.

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

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

Со временем это может породить зависимость

Copilot — действительно мощный инструмент, но со временем вы можете стать зависимым от него.

Это похоже на клиент Stack Overflow прямо в вашем редакторе, который пытается понять ваш код и предлагает вам десять лучших возможных решений.

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

Второй пилот предлагает код, который вы можете не понять

Как было показано ранее с некоторыми примерами кода, Copilot предлагает большой набор кода, и не всегда легко понять, что он делает.

Может возникнуть соблазн просто позволить Copilot выполнять тяжелую работу, которая может повлиять на начинающих (и опытных разработчиков) в процессе обучения. В большинстве случаев самое важное в кодировании — устранение ошибок, и автозавершение кода, предоставляемое Copilot, может повлиять на развитие этого навыка.

Чтобы избежать этого, важно просмотреть код, предложенный Copilot, и понять, что он делает.

Copilot — совершенно новый инструмент, и в нем много ошибок. Я создал несколько сообщений на странице обсуждения GitHub Copilot (доступной для пользователей технической предварительной версии) и уже получил отзывы от сообщества.

Я уверен, что этот инструмент решит большинство этих проблем до того, как он будет выпущен.

Споры вокруг обучения второго пилота

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

Как вы, возможно, знаете, большинство лицензий с открытым исходным кодом (GNU, BSD, APACHE и т. д.) позволяют вам использовать, модифицировать и распространять программное обеспечение с единственным условием использования той же лицензии. Однако Copilot задуман как коммерческий продукт.

Согласно Creative Commons, использование общедоступных данных для обучения моделей ИИ по умолчанию не нарушает авторских прав — по крайней мере, для лицензий CC. Нат Фридман также затронул эту тему в ветке Твиттера:

Copilot (как они заявляют на своей странице) — это всего лишь синтезатор кода, поэтому очень странно получать буквальное предложение, извлеченное из тренировочного набора.

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

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

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

Мы обучаем GitHub Copilot?

GitHub Copilot постоянно учится на нашем стиле кода и готовится удовлетворить наши потребности. Однако он не будет делиться личным кодом в качестве предложений для других пользователей. Я считаю это чрезвычайно важным, потому что иногда я редактирую файлы окружения, в которых хранится конфиденциальная информация, прямо в VS Code, и было бы ужасно, если бы эти файлы были доступны другим.

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

Заменит ли Copilot разработчиков?

На данный момент Copilot — это именно то, за что себя выдает: помощник ИИ для разработчиков. Я не думаю, что он заменит разработчиков, по крайней мере, в краткосрочной или среднесрочной перспективе.

Он не может понять реальную проблему, спланировать решение, создать его и продемонстрировать миру — задачи, с которыми разработчики (и люди в целом) хорошо справляются.

Возможно, в будущем такой инструмент, как GitHub Copilot, изменит правила игры в индустрии программирования — не за счет кражи рабочих мест, а за счет повышения продуктивности разработчиков. Мы улучшаем опыт разработчиков (редакторы кода, инструменты отладки и т. д.) с прошлого века, и теперь, с развитием технологии ИИ, мы можем ожидать создания гораздо большего количества инструментов с ее использованием.

Помните, что до того, как люди высадились на Луну, «компьютерами» были, как мы их называли, люди, чрезвычайно искусные в выполнении математических операций вручную. Компьютеры, какими мы их знаем сегодня, уничтожили бесчисленное количество рабочих мест, но также создали новые и в конечном итоге создали одну из крупнейших отраслей промышленности в мире.

Альтернативы второму пилоту

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

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

С другой стороны, если вы новичок в кодировании, я настоятельно рекомендую вам использовать эти альтернативы, поскольку они помогают вам без реализации логики кода за вас. Когда вы станете более опытным, вы можете использовать Copilot в качестве программиста пар AI.

Интеллисенс

Если вы являетесь пользователем VS Code, вы, вероятно, используете Intellisense с самого первого дня. Это система завершения кода по умолчанию в VS Code, и вы можете установить поддержку для каждого используемого вами языка программирования. Единственная настройка, которую вам нужно сделать, это открыть вкладку «Расширение «и найти язык, для которого вы хотите установить поддержку.

воздушный змей

Kite — это сервис автодополнения кода на основе искусственного интеллекта, который можно установить практически в любой популярный редактор кода. Он предлагает бесплатный план, которого в большинстве случаев более чем достаточно, и вкладку полнофункционального второго пилота (в отличие от GitHub Copilot), которая позволяет вам просматривать документацию по Python, не запуская браузер.

К сожалению, основной целью Kite является Python, поэтому стоит взглянуть на TabNine, прежде чем принимать решение.

TabNine

TabNine, ранее называвшийся Codota, — это еще один инструмент завершения ИИ, используемый миллионами разработчиков. В настоящее время он работает более чем с 30 языками и может быть установлен в 15 IDE.

Интересно, что TabNine также был обучен общедоступному коду, доступному на GitHub, и использует GPT-2 (предыдущая версия GPT-3) для генерации завершения кода. Если у вас нет доступа к предварительной технической версии Copilot, хорошей альтернативой может стать TabNine.

Следует отметить, что эти системы автозаполнения должны работать на вашем компьютере (по крайней мере, их бесплатные версии), а это означает, что они потребляют гораздо больше ресурсов в вашей системе, чем GitHub Copilot. Помните, что Copilot предоставляет все предложения по коду с удаленного сервера.

Заключение

Впечатляет то, что инструмент с искусственным интеллектом генерирует код. Цель GitHub не в том, чтобы заменить программистов, а в том, чтобы помочь им повысить свою продуктивность при кодировании, особенно при выполнении повторяющихся задач кодирования, таких как написание хороших строк документации в функциях или классах.

После использования Copilot некоторое время я заметил некоторые проблемы, но в целом он предлагает хорошие (но не идеальные) предложения по коду. Я протестировал решения для некоторых популярных проблем с кодом и вполне доволен результатами. Принимая это во внимание, я думаю, что Copilot не должен использоваться полными новичками по причинам, которые я объяснил выше.

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

Возможно, заявление о «парном программировании ИИ» еще не стало реальностью, но я уверен, что оно станет реальностью в будущем.

Делитесь нашими материалами с друзьями!

 

 

Заказать разработку сайта