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

Как использовать GitHub Copilot вместе с Python

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
03 февраля 2023 г.
1210
7 минут чтения
Средний рейтинг статьи: 5

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

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

Что такое GitHub Copilot

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

GitHub Copilot может быть интегрирован в различные среды разработки, а именно:

  • Visual Studio;
  • Neovim;
  • VS Code;
  • среды разработки от JetBrains.

И в этих средах разработки GitHub Copilot работает с большим количеством языков программирования:

  • Python;
  • JavaScript;
  • Go;
  • Java;
  • C#;
  • TypeScript;
  • C++;
  • Ruby;
  • Rust;
  • Shell script;
  • Kotlin;
  • Swift.

В дополнение к этим языкам GitHub Copilot умеет работать с популярными фреймворками и библиотеками: React, AngularJS, VueJS, Spring, Django, Ruby on Rails и т. д.

GitHub Copilot предлагает перечень функций, которые могут помочь разработчикам в написании кода:

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

Сейчас GitHub Copilot распространяется как сервис-подписка со стоимостью 10$ в месяц.

Как работает GitHub Copilot

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

Интеграция GitHub Copilot в PyCharm

PyCharm — это среда разработки от JetBrains, в которой доступен GitHub Copilot. Для того чтобы интегрировать его в проект, необходимо совершить следующие шаги:

  1. Перейти на сайт github.com/features/copilot и нажать «Start my free trial».
  2. Залогиниться в сервисе GitHub или зарегистрироваться.
  3. После того, как вы зашли на GitHub, вам предложат оформить тестовый период на 60 дней. Для этого вам понадобится зарубежная карта или действующий аккаунт PayPal. Для студентов с подтвержденным статусом инструмент предоставляется бесплатно.

По завершению оформления подписки вы можете установить плагин GitHub Copilot в PyCharm. Для этого:

  1. Откройте среду разработки.
  2. Откройте меню «File» и перейдите в раздел «Settings».
  3. Перейдите в раздел «Plugins» и введите в поиске «GitHub Copilot».
  4. Установите плагин.
  5. После установки откройте меню «Tools», найдите в списке «GitHub Copilot» и нажмите «Login to GitHub». 
  6. В открывшемся окне будет указана ссылка для авторизации и специальный код. Перейдите по ссылке и введите код, после чего авторизуйте плагин.
  7. После этого GitHub Copilot будет интегрирован в ваш проект.

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

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

Код, который предлагает GitHub Copilot, имеет серый цвет и курсивный шрифт. Чтобы принять подсказку плагина нужно нажать Tab. Чтобы её отклонить — Esc. Вот ещё несколько полезных комбинаций клавиш при работе с GitHub Copilot:

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

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

def multiply_matrices(A, B):
# Multiply matrix A and B and return the result

GitHub Copilot может предложить такой вариант:

def multiply_matrices(A, B):
# Multiply matrix A and B and return the result

   rows1 = len(A)
   cols1 = len(A[0])

   rows2 = len(B)
   cols2 = len(B[0])

   if cols1 != rows2:
       raise ValueError("The number of columns in the first matrix must be equal to the number of rows in the second matrix")

   result = [[0 for j in range(cols2)] for i in range(rows1)]

   for i in range(rows1):
       for j in range(cols2):
           for k in range(cols1):
               result[i][j] += A[i][k] * B[k][j]

   return result

Проверим работоспособность этой функции. Для проверки результатов воспользуемся библиотекой NumPy:

import numpy as np

matrix1 = [[15,24],[12,44]]
matrix2 = [[112, 22],[55,90]]

m1 = np.array([[15,24],[12,44]])
m2 = np.array([[112, 22],[55,90]])

print(multiply_matrices(matrix1, matrix2),'\n')
print(np.dot(m1, m2))

Результаты:

[[3000, 2490], [3764, 4224]] 

[[3000 2490]
 [3764 4224]]

Как видим, функция от Copilot правильно выполняет умножение матриц.

Минусы GitHub Copilot

GitHub Copilot — это относительно молодой инструмент и имеет некоторые недостатки.

Copilot не тестирует свой код

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

Конфликты с IDE

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

Вероятность нарушения авторских прав

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

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

Copilot не учит писать код — он пишет его за пользователя. Для младших специалистов может быть важным «набить руку» на типичных функциях и алгоритмах.

Заключение

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

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону