Перейти к содержимому

Copilot как пользоваться

  • автор:

Copilot: умный инструмент для программистов

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

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

В статье рассказывается:

  1. Что такое Copilot
  2. Как использовать Copilot в России
  3. Возможности Copilot AI
  4. Как начать работать с нейросетью Copilot
  5. Недостатки Copilot
  6. Часто задаваемые вопросы о Copilot

Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.
Бесплатно от Geekbrains

Что такое Copilot

GitHub Copilot представляет собой искусственный интеллект, созданный GitHub и OpenAI. Его отличительная особенность – возможность интегрирования инструмента в среду разработки. Copilot поддерживает целый ряд языков программирования. Данный сервис может использоваться при работе с кодом.

Copilot можно сравнить с ChatGPT. В первом случае пользователь может автоматизировать процесс написания кода, а во втором – создания текста. Сервис использует огромную информационную базу, чтобы генерировать код для конкретного пользователя, которому нужно лишь ввести обычный запрос. Copilot функционирует на базе языковой модели Codex («потомок» ChatGPT-3).

Поддерживаемые программы Visual Studio
Neovim
VS Code
JetBrains IDEs
Поддерживаемые языки программирования Java
JavaScript
TypeScript
Python
Ruby
Go
C
C++
C#

Фрилансеры платят 10 долларов в месяц за использование Copilot. С компаний взимается $ 19. При этом пользователь может выбрать бесплатный тестовый период, который длится два месяца.

Узнай, какие ИТ — профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов
Исполнительный директор Geekbrains

Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.

Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains

Павел Симонов
Исполнительный директор Geekbrains

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

Получить подборку бесплатно
Уже скачали 23659

Как использовать Copilot в России

Сейчас нельзя оплачивать сервис картами российских пользователей. Однако воспользоваться данным ИИ в России все же можно. Для этого необходимо выполнить следующие действия:

    Перейти на страницу сервиса и кликнуть по «Start my free trial». После этого откроется личная страница в GitHub (либо форма ее создания).

Читайте также

Возможности Copilot AI

Написание повторяющегося кода для уже известных задач

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

Однако если программисту необходимо решить узкоспециализированную задачу (к примеру, создать код для новой площадки на непопулярном языке), то Copilot будет малоэффективен. Согласно исследованиям, более 27 % файлов скрипта были созданы разработчиками с помощью данного ИИ. Для некоторых языков (к примеру, для Python) значение еще выше – около 40 %. Стоит отметить, что по данным GitHub пользователи принимают в среднем 26 % всех предложений Copilot. Таким образом, созданный код приходится проверять. Зачастую сервис предлагает не самые лучшие варианты, так как не умеет тестировать сам себя.

Поддержка многих мировых языков

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

Для вас подарок! В свободном доступе до 29.10 —>
Скачайте ТОП-10
бесплатных нейросетей
для программирования
Помогут писать код быстрее на 25%
Чтобы получить подарок, заполните информацию в открывшемся окне

На данный момент ИИ не может:

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

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

Как начать работать с нейросетью Copilot

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

ИИ формирует код серого цвета и курсивного шрифта. Пользователь может принять подсказку плагина или отклонить ее. В первом случае следует нажать Tab, а во втором – Esc. Рассмотрим еще несколько полезных сочетаний на клавиатуре, которые помогут в работе с Copilot:

  • задействовать встроенные подсказки: Alt+\ (для Windows) и options+\ (для Mac);
  • просмотреть следующую подсказку: Alt+] (для Windows) и options+] (для Mac);
  • вернуться к предыдущей подсказке: Alt+[ (для Windows) и options+[ (для Mac);
  • принять подсказку: Tab (для Windows и Mac);
  • отклонить подсказку: Esc (для Windows и Mac);
  • просмотреть всех подсказки в новом окне: Ctrl+Enter (для Windows и Mac).

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

Недостатки Copilot

У GitHub Copilot есть целый ряд недостатков:

  • Отсутствие функции самотестирования.

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

  • Противоречия между IDE и Copilot.

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

Дарим скидку от 60%
на обучение «Разработчик» до 29 октября
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

  • Нарушение авторских прав.

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

  • Негативное влияние на квалификацию разработчика.

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

Часто задаваемые вопросы о Copilot

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

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

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

Существуют ли аналоги Copilot?

Copilot — единственная в своем роде технология. Однако есть неплохие системы завершения ИИ, которые предоставляют меньше возможностей.

Сегодня Copilot нельзя назвать общедоступным. Из-за этого многие пользователи предпочитают более устоявшиеся продукты для программирования.

Альтернативы Copilot отлично подойдут начинающим разработчикам. Дело в том, что такие инструменты не формируют логику кода, а лишь помогают программисту завершить его:

  • Данная система автоматического завершения кода встроена в VS Code. Пользователь может установить поддержку для любого языка программирования. Необходимо лишь открыть вкладку «Расширение» и найти нужный язык.
  • Этот инструмент для автозавершения кода на базе ИИ можно установить в большинство популярных редакторов. Есть бесплатный план, которого обычно хватает для решения основных задач. Кроме того, имеется полнофункциональная вкладка второго пилота, с помощью которой можно просматривать документацию Python без браузера. Copilot не дает такой возможности. Однако стоит учитывать, что главной целью Kite является Python.
  • Раньше этот инструмент назывался Codota. Сервис применяется многими разработчиками по всему миру. Поддерживает более 30 языков. TabNine можно установить в 15 IDE. Инструмент был обучен работе с открытым кодом, доступным на GitHub. Более того, он применяет GPT-2 для автоматического завершения кода. Все это делает TabNine неплохой альтернативой Copilot.

Только до 2.11
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:

ТОП-100 площадок для поиска работы от GeekBrains

20 профессий 2023 года, с доходом от 150 000 рублей

Чек-лист «Как успешно пройти собеседование»

Чтобы зарегистрироваться на бесплатный интенсив и получить в подарок подборку файлов от GeekBrains, заполните информацию в открывшемся окне

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

Можно ли настраивать поведение Copilot?

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

Copilot представляет собой эффективный инструмент, который упрощает работу программиста. По данным Github, сервис оказывает положительное влияние на своих пользователей: около 74 % сосредоточились на более интересных задачах, 88 % специалистов увеличили продуктивность, а 96 % смогли быстрее выполнять повторяющиеся задачи.

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

Краткое руководство по GitHub Copilot

GitHub Copilot помогает в работе, предлагая встроенные предложения по мере написания кода.

GitHub Copilot can be managed through personal accounts with GitHub Copilot for Individuals or through organization accounts with GitHub Copilot for Business.

GitHub Copilot is free to use for verified students, teachers, and maintainers of popular open source projects. If you are not a student, teacher, or maintainer of a popular open source project, you can try GitHub Copilot for free with a one-time 30-day trial. After the free trial, you will need a paid subscription for continued use. For more information, see «About billing for GitHub Copilot.»

Introduction

GitHub Copilot is an AI pair programmer. You can use GitHub Copilot to get suggestions for whole lines or entire functions right inside your editor.

This guide will show you how to set up a GitHub Copilot subscription for your personal or organization account, install the GitHub Copilot extension in Visual Studio Code, and get your first suggestion. For more information on GitHub Copilot, see «About GitHub Copilot for Individuals.» For more in-depth information on how to use GitHub Copilot in a variety of environments, see «Getting started with GitHub Copilot.»

Signing up for GitHub Copilot for your personal account

Before you can start using GitHub Copilot, you will need to set up a free trial or subscription for your personal account.

Note: If you were part of the free GitHub Copilot technical preview that was run between July 2021 and June 2022, you are not eligible for a 30-day trial.

Screenshot of a user's account menu on GitHub. The menu item

  1. In the upper-right corner of any page, click your profile photo, then click Settings.
  • If your personal account meets the criteria for a free GitHub Copilot subscription instead of a trial or paid subscription, you will automatically be taken to step 6.

Note: As a member of an organization owned by a GitHub Enterprise Cloud account with a GitHub Copilot subscription, you must be assigned a GitHub Copilot seat by your organization before you can use GitHub Copilot.

Signing up for GitHub Copilot for your organization account

Before you can start using GitHub Copilot in your organization account, you will need to set up a subscription.

  1. Go to the GitHub Copilot for Business sign up page.
  2. Select an organization for which you want to purchase GitHub Copilot and click Continue.
  3. Follow the steps to confirm your payment details, then click Save. If you don’t have a payment method on file, you’ll be prompted to add one.
  4. In the «Public code suggestions» dropdown, select Allow or Block to allow or block suggestions that match public code, and click Save and continue. You can change these preferences later by returning to your GitHub Copilot settings.
  5. Either grant access to GitHub Copilot for all current and future users in your organization, or for specific users in your organization.
    • If you selected Allow for all members, click Confirm in the «Confirm seat assignment» dialog to confirm that you want to enable GitHub Copilot for all current and future users in your organization.
    • If you selected Selected teams/users, you can choose Add people or Add team.
      • If you selected Add people, in the «Enable GitHub Copilot access for selected members of ORGANIZATION» dialog, you can either search for individual members, or you can add members in bulk by uploading a CSV file.
      • If you selected Add team, in the «Enable GitHub Copilot access for selected teams of ORGANIZATION» dialog, start typing the team name in the search bar, select the team you want to add and click Add team(s) to access list.
  6. To finish setting up your GitHub Copilot for Business subscription, click Save and finish. Organization members will receive an email with instructions on how to start using GitHub Copilot.

Installing the GitHub Copilot extension for Visual Studio Code

To use GitHub Copilot, you must first install the Visual Studio Code extension.

  1. In the Visual Studio Code Marketplace, go to the GitHub Copilot extension page and click Install.
  2. A popup will appear, asking to open Visual Studio Code. Click Open Visual Studio Code.
  3. In the «Extension: GitHub Copilot» tab in Visual Studio Code, click Install.
  4. If you have not previously authorized Visual Studio Code in your GitHub account, you will be prompted to sign in to GitHub in Visual Studio Code.
    • If you have previously authorized Visual Studio Code in your GitHub account, GitHub Copilot will be automatically authorized.
  5. In your browser, GitHub will request the necessary permissions for GitHub Copilot. To approve these permissions, click Authorize Visual Studio Code.
  6. In Visual Studio Code, in the «Visual Studio Code» dialogue box, to confirm the authentication, click Open.

Getting your first suggestion

Note: If you have duplication detection enabled for GitHub Copilot, you may receive limited suggestions, or no suggestions, when using the code examples provided. As an alternative, you can start by typing your own code to see suggestions from GitHub Copilot. For more information on duplication detection, see «Configuring GitHub Copilot settings on GitHub.com.»

GitHub Copilot provides suggestions for numerous languages and a wide variety of frameworks, but works especially well for Python, JavaScript, TypeScript, Ruby, Go, C# and C++. GitHub Copilot can also assist in query generation for databases. The following samples are in JavaScript, but other languages will work similarly.

  1. Open Visual Studio Code.
  2. In Visual Studio Code, create a new JavaScript (*.js) file.
  3. In the JavaScript file, type the following function header.

JavaScript

function calculateDaysBetweenDates(begin, end) 
function calculateDaysBetweenDates(begin, end)  

Next steps

You successfully installed GitHub Copilot and received your first suggestion, but that's just the beginning! Here are some helpful resources for taking your next steps with GitHub Copilot.

  • Getting started with GitHub Copilot: You've learned how to get your first suggestion in Visual Studio Code. These guides show you how to set up and navigate the various functions of GitHub Copilot across all of the supported environments.
  • GitHub Copilot: See practical examples of how GitHub Copilot can help you work.
  • Configuring GitHub Copilot: These guides provide details on how to configure GitHub Copilot to your personal preferences.

Further reading

  • About GitHub Copilot for Individuals
  • About GitHub Copilot for Business

Как установить Copilot в России и использовать его эффективно

Copilot – система автодополнения кода от GitHub на основе модели Codex. Модель завернули в API и дали доступ через расширение для IDE (среды разработки). Я регулярно пользуюсь Copilot – экономит время и заменяет поиск кода в интернете. Делюсь советами разной степени очевидности, которые собрал за это время.

Tldr: Copilot подходит для повторяющихся задач и как замена поиску по документации популярных библиотек. Не подходит для решения узких сложных задач и проектов с нуля.

Структура статьи:

  1. Установка и оплата Copilot
  2. Как работает Codex
  3. Для чего удобно использовать Copilot
  4. Лайфхаки по использованию
  5. Ограничения Copilot и как их решить?

Установка и оплата Copilot

Войти на страницу через гитхаб аккаунт и привязать карту. Скорее всего страница оплаты у вас будет заблокирована, поэтому лучше всего зайти с нового аккаунта и их под ВПН (можно использовать, например, 1.1.1.1). С Российских карт оплата не пройдет. Если нет не-РФ карты, попробуйте Pyypl. Это виртуальная карта, которая пополняется usdt. Я ребятам особо не доверяю, но для случаев, где нужно привязать карту – работает нормально. Поэтому держу там 5$ и регаю на эту карту пробные версии продуктов.

Copilot дает пробные 2 месяца, потом оплата по 10$ в месяц.

Код на питоне я пишу в VSCode, а на Go в GoLand, в обеих IDE расширение ставится без проблем.

Как работает Codex

Под капотом Copilot модель под названием Codex (Статья: Evaluating Large Language Models Trained on Code). Codex – это GPT-3, которую зафайнтюнили генерировать код программы по её докстрингу (комментарий описание функции). По сути Codex учился предсказывать продолжение текста в виде кода, на основе её начала в виде названия функции, аргументов и описания. Обучались на датасете открытого кода с Гитхаба, больше всего в выборке было питона.

Метрик для таких моделей нет, поэтому придумали свою. Взяли задачу на питоне, сгенерировали K решений моделью, пропустили решения через юнит-тесты для функции. Если одно из решений прошло все тесты, то решение засчитывается. Задач в тестовой выборке было 160.

Про горячие клавиши
  • Принять/Отклонить автодополнение — Tab/Esc
  • Показать следующий/предыдущий вариант саджеста — Alt или Option + ] и Alt или Option + [
  • Показать саджест (если отключили автоматические подсказки) — Alt или Option (⌥) + \
  • Открыть 10 саджестов, в окне — Ctrl + Enter

Долгое время сам не знал про фичу с Ctrl+Enter, оказалось удобнее для ряда случаев. Так можно быстрее выбрать верное решение.

Способы применения Copilot

Конвертация комментария в код. Обычный порядок действий: я пишу комментарий с описанием работы функции -> получаю её реализацию. Можно начать с небольших функций/утилит, а потом написать основную логику с их использованием.

Разберем пример на задаче с литкода Two sum.

Для массива целых чисел nums и целого числа target, найдите индексы двух чисел так, чтобы их сумма равнялась target.

Выделение – сгенерированный Copilot код

Первый вариант саджеста предлагает рабочее решение перебором. Сложность такого решения O(n^2)

Давайте попробуем получить более быструю реализацию. В комментарии и названии функции можно задать разные свойства, которые хотим получить. Для некоторых функций, так можно получить более быстрый вариант со сложностью O(n).

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

Генерация повторяющегося кода. Когда надо написать N одинаковых по смыслу строк, например, пишешь датакласс или название колонок кодируешь в константы.

Написание тестов. Сгенерируем юнит-тесты для функций, которые написали выше.

Перевод кода из одного языка в другой. Я сейчас пишу код на python и go. Иногда препроцессинг данных или инференс простых моделей с питона переписываю на Go. Copilot выручает с быстрым переносом кода. Пишу в комментариях код на питоне, начинаю код на Go. Быстро получаю неплохой драфт, который дорабатываю. Учитывая, что на Go нет некоторых встроенных в питон фич, вроде посчитать union или intersection между сетами, помогает быстрее переписать код на новом языке.

Советы по использованию Copilot

Основные рекомендации на основе статьи про Codex, такие:

  1. Задачу разделить до функции в 1-2 смысловых действия и генерировать их Copilot.
  2. Писать читаемые названия функци, описания, примеры без багов.
  3. Проверять и тестировать код, которые сгенерировали.
  4. Используйте название функции для модификаторов. Если хочешь функцию побыстрее, пишешь под старой функцией fast_func. А в комментах, что это более быстрая версия старой функции и получаешь версию быстрее. Например, вместо того, чтобы получать строки из БД в виде объектов – сырой sql запрос. Либо пишешь в названии функции на питоне typed – получаешь аннотации типов аргументов и результата.
  5. Если функция сложная, пишите в комментариях шаги выполнения. Можно даже не все этапы, а только первые. Это называется step-by-step reasoning. Важный момент, не писать сразу все шаги в один комментарий, а описать первый шаг → получить код → второй шаг → код.
  6. Модель лучше работает в моно репозитории, потому что тогда ваш код будет доступен для контекста. На странице https://openai.com/blog/openai-codex/ написано, что для питона они используют контекст в 14KB, это значит, учитывают 14 000 токенов. В самой статье пруфов не нашел, но даже в худшем случае, контекст будет 4 096 токенов, как у Longformer. Неплохо, учитывая что для отступов пробелами, там отдельный токен.

Ограничения модели Codex и Copilot и что с ними делать

Авторы сами пишут, что Codex не умеет в цепочку действий, поэтому если нужно совершить больше одного действия – на каждое дополнительное действие работоспособность кода падает раза в 2-3. Под действием понимается фраза вида: “remove all instances of the letter e from the string” или “convert the string s to lowercase”.

Также ошибки возникают при использовании разных переменных и операций над ними.

"Add 3 to y, then subtract 4 from both x and w. Return the product of the four numbers."

Какого вида ошибки чаще всего возникают?

  • Пропуск переменных.
  • Использование методов и переменных, которые не определены или находятся за областью видимости.
  • Использование синтаксически неверного кода.

Как с этим бороться? Использовать описанные выше рекомендации.

Еще есть такая штука, называется alignment failure. Задача Codex – предсказывать следущий токен на основе предыдущих, учитывая статистику распределения в обучающей выборке. Поэтому, если в контексте есть небольшой баг (некорректный пример, например). Codex сгенерирует код, который будет неправильным, но будет максимально подходить под контекст, даже несмотря на то, что может сгенерировать верное решение. Грубо говоря, Codex не будет исправлять ошибки, а наоборот их использует. Такая же проблема есть и в ChatGPT.

Альтернативы Copilot

  • Раньше пробовал бесплатную версию TabNine, но он больше мешал, чем помогал.
  • Если вы не хотите, чтобы у сторонних ресурсов был доступ к вашему код, можно захостить Fauxpilot – аналог Codex у себя. Правда, там GPT-J, который ощутимо слабее.
  • Вместо генерации кода, можно по старинке использовать поиск. Например, есть phind, который ищет сниппетам кода.
  • Еще для некоторых кейсов я использую ChatGPT, обычно это что-то вроде написать большой запрос в Clickhouse. Есть разные кустарные аддоны, которые позволяют встроить ChatGPT в vscode, но я ими не пользовался, если есть подобный опыт – пишите в комментариях.

Выводы

  1. Copilot – ускоряет разработку, особенно если знать про базовые принципы использования Codex.
  2. Разбивайте задачу на атомарные действия и генерируйте код для их выполнения из комментариев.
  3. Copilot помогает тратить меньше времени на повторяющиеся действия и поиск по документации.
  4. Код Copilot все равно нужно перепроверять.
P.S.

Если статья была полезной, буду благодарен за подписку на канал commit history

Гайд по работе с GitHub Copilot

ИИ от Microsoft и GitHub под названием GitHub Copilot пишет код за программистов. Разбираемся, как это работает и где можно применить.

21 июня вышел GitHub Copilot — инструмент, который помогает разработчикам писать код. Сервис доступен по подписке от $10 в месяц.

Дмитрий Дзюба, руководитель Центра практик «Архитектура» МТС, тестирует его уже полгода, и за это время собрал много интересных кейсов. Как писать, чтобы не запутать GitHub Copilot. Где его можно использовать? И заменит ли он разработчиков? Расскажем в этой статье.

Дмитрий Дзюба
Руководитель Центра практик «Архитектура» МТС

Что такое GitHub Copilot

GitHub Copilot — искусственный интеллект, который интегрируется в среду разработки — IntelliJ, PyCharm, Microsoft Visual Studio Code и другие. Инструмент поддерживает множество языков программирования, в том числе Java, C, C++ и C#, Python, JavaScript, TypeScript, Ruby и Go.

Запустить его просто: открываешь IDE, устанавливаешь нужный плагин, который авторизуется на GitHub. Так, среда разработки подключается к GitHub и общается с этим искусственным интеллектом.

Основные функции GitHub Copilot:

  • проанализировать комментарии и написать код;
  • дописать комментарии к готовому коду;
  • определить типовые алгоритмы и дописать их за разработчика.

Как это выглядит

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

Задание — сделать функцию, которая будет складывать два числа, которые могут быть условно бесконечными. С GitHub Copilot оно решается так:

  • пишем комментарии — то есть ТЗ, на которое интеллект будет смотреть;
  • начинаем писать функцию;
  • система выдаёт её продолжение (выделено серым) — на основе описания задачи и первых строк кода;
  • жмём tab — и задача решена.

Другой пример написать тесты для функции, которая переводит из римской системы счисления в арабскую, и обратно — пока само́й функции нет.

Эту задачу Copilot решил только на основе моих комментариев. Сам взял римские цифры и перевёл их в арабские, правильно подставив входные и результирующие данные.

Инструмент знает несколько языков, так что можно спокойно писать комментарии по-русски. Он поймёт, что ей делать.

Здесь у нас домашка по Python. Нужно создать словарь с континентами, добавить списки стран, расположенных на них, и написать программу, которая будет выдавать ответ в стиле «На этом материке находятся такие государства».

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

Как работать с GitHub Copilot

По моему опыту система выдаёт весьма неплохой код. Но при определённых условиях.

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

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

Во-вторых, называть функции по тому, что они делают. И добавлять адекватные переменные — названия a1, a2, a3, a4, a5 точно не помогут.

В-третьих, писать просто. Я долго старался подобрать код, который запутает систему.

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

Отдельная тема — проверка кода. Иногда инструмент косячит или ведёт себя странно. Например, может выдать несколько ответов на одну и ту же задачу (почему так — загадка) или неверный — но очень похожий на правильный — код. Будто изначально Copilot написал правильную программу, но потом вставил 2–3 ошибки.

Такое случается нечасто, но перестраховаться стоит.

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

Другой случай — GitHub Copilot сгенерировал достаточно большой код для разбора выражения. Но он половину if’ов сделал правильно, а половину — нет, например, вложил в условие одну операцию вместо двух.

Где инструмент можно использовать

Инструмент берёт на себя рутинную работу. Если есть типовой фрагмент кода, который писать лень или очень скучно — это к нему. При этом времени на комментарии и проверку уходит не так много (и делать их надо в любом случае).

Ещё он хорош для работы с незнакомыми библиотеками и фреймворками. Copilot анализирует огромную базу, которая есть на GitHub, и предлагает типовые решения — в том числе не известные разработчику. Так что можно смело подключать библиотеку, которую вы не знаете, и не копаться в документации и на StackOverflow.

Таким же образом можно учить новые языки (в задаче с континентом мы именно этим и занимались).

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

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

Наконец, код, который пишет Copilot, всё равно нужно тестировать. Инструмент может предложить огромный фрагмент, который вытащил из никому неизвестных недр GitHub. И Приходится его исследовать: «Что же мне предложили? Правильный это алгоритм или нет? Эффективный или нет? Заработает или нет?».

5 шпаргалок по Git: от основ до работы с GitHub

Так что пока инструмент — даже настолько крутой и интересный — не сможет заменить человека. И можно смело учиться на айтишника.

На этом всё! Делитесь впечатлениями о GitHub Copilot. Что вам нравится в инструменте и чего не хватает? Смогли ли его протестировать? Успели ли заметить какие-то странности и собрать необычные кейсы?

Следите за новыми постами по любимым темам

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *