Введение

Зачем нужен второй пилот? Я думал, вы разработчик программного обеспечения??

Да, ты прав. Я. Но каждый может использовать второго пилота в какой-то момент жизни. Справедливости ради, это должно было произойти с тех пор, как OpenAI объявили, что они сотрудничают с GitHub в создании «продукта».

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

Автозаполнение кода — очень популярная задача, которую в прошлом пытались решить несколько команд, будь то исследовательские, коммерческие и промежуточные. CoPilot — это всего лишь попытка GitHub и OpenAI создать продукт, который в какой-то мере жизнеспособный в качестве инструмента в реальном сценарии использования, т. е. использовать его для помощи в написании кода, а не заставлять его писать код сам по себе.

Получение доступа

Неудивительно, что все, кто интересуется глубоким обучением, НЛП, машинным обучением, разработкой программного обеспечения или даже просто интересуется ИИ, хотели попробовать CoPilot. Что, к сожалению, невозможно… но возможно было ждать в очереди. Я отправил запрос на доступ к бета-тестированию второму пилоту и попал в очень переполненный список ожидания.

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

GitHub был очень любезен, предоставив мне доступ к нему чуть меньше месяца ожидания (и нет, это не /s, некоторые люди все еще ждут даже после 2-3 месяцев). Я был в восторге, сразу взялся за дело (и так из-за отсутствия контента в прошлом месяце — я не так много писал, в основном потому, что в свободное время тестирую CoPilot).

Немного шаблонной информации, прежде чем мы пойдем дальше

Таким образом, CoPilot в настоящее время работает как плагин для Visual Studio Code. Вам необходимо войти в систему, используя свои учетные данные GitHub, и после того, как вы согласитесь с некоторыми условиями использования CoPilot, в правом нижнем углу строки состояния появится небольшой значок второго пилота. Вы можете использовать этот значок для включения или выключения CoPilot, и вы уже настроены на его использование.

В тот момент, когда вы запускаете скрипт на любом из поддерживаемых языков, упомянутых на https://copilot.github.com/, вы увидите предложения по коду. Вы можете принять предложение, нажав Tab, или прокрутить несколько предложений (если их несколько), используя Alt+] (далее) и Alt+[ (предыдущее).

Теперь, как упоминают сами GitHub и OpenAI, CoPilot лучше всего использовать в качестве дополнительного инструмента для вашего собственного программирования. Да, это полностью функционирующее многострочное многоязычное автозаполнение кода, но оно далеко от совершенства — серьезно, за много миль.

Я тестировал его с помощью Python в первую очередь потому, что я больше всего использую Python, Java и C и имею опыт работы с ними, но он поддерживает JavaScript, Go, TypeScript, Ruby, C++ и C# среди других. Недавно была добавлена ​​поддержка IntelliJ от JetBrains.

Тестирование

Таким образом, лучший метод использования Co-Pilot — это разбить ваши большие программы на маленькие функции, а затем написать заглушки функций, ожидая предложений CoPilot.

Вот как это было сделано с классификацией изображений, когда я импортировал numpy и tensorflow в тестовый скрипт и объявил единственную функцию классификации изображений:

Конечно, код не идеален, но он способен обработать функцию такого размера практически за один раз. Имея только текущий скрипт и имя функции «image_classification», он сгенерировал код для импорта набора данных mnist и выполнения классификации и оценки.

Я попробовал снова:

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

Я попробовал еще раз:

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

Любое из этих предложений на самом деле совсем не плохо. На самом деле, с небольшим редактированием вы можете использовать этот код для создания реального сценария классификации изображений.

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

Теперь, если я разобью эту функцию на более мелкие функции:

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

Некоторые заключительные мысли

Как рекламируется, примерно за 10 попыток CoPilot, кажется, выполняет свою работу. Он никогда не даст вам решения, но то, что он генерирует, кажется достаточно близким.

Мой собственный опыт убедил меня, что он станет лучше, поскольку Codex (модель в бэкэнде) увидит больше версий и улучшений. На данный момент он дает правильные результаты в 43% случаев.

Эта цифра увеличивается до 57%, если разрешено 10 попыток или около того. Это безумие, если учитывать время, которое вы можете сэкономить при создании прототипа решения для данной проблемы. Предложения, объединенные в цепочку, могут дать вам желаемый результат, однако у меня возникают 3 важных вопроса, которыми я считаю достойным поделиться:

  1. Вы действительно решаете проблему, если все, что вы делали, это использовали предложения CoPilot и редактировали их?
  2. Кому на самом деле принадлежит сгенерированный код?
  3. Разве это не обман? Я имею в виду, каковы более моральные/философские последствия использования CoPilot или аналогичных продуктов в будущем?

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

В свете экономии времени и уменьшения избыточности я включил ссылку на демонстрацию OpenAI Codex. Если вам интересно увидеть его в действии.

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

Ссылки:

Демонстрация Кодекса OpenAI, доктор Карой Жолнай-Фехер: (https://www.youtube.com/watch?v=81rBzfbFLiE&ab_channel=TwoMinutePapers)