ИИ-помощник программиста GitHub Copilot for Business стал общедоступным за $19 в месяц, "github"

Tuyetaporp
Сообщения: 160
Зарегистрирован: 11 июл 2021, 17:07

ИИ-помощник программиста GitHub Copilot for Business стал общедоступным за $19 в месяц, "github"

Непрочитанное сообщение Tuyetaporp »

Программистов можно начинать увольнять.
Принадлежащая Microsoft компания GitHub объявила, что Copilot for Business, корпоративная версии ИИ-помощника по написанию программного кода, стала общедоступной за $19 в месяц. По сравнению со стандартной Copilot, версия для корпоративного использования предложит ряд дополнительных функций.
«Это фактически завершает нашу историю о Copilot версии 1. Мы объявили о запуске программы предварительной оценки в июне 2021 года. Кажется, что это было много лет назад. Прошлым летом появилась общедоступная версия. Теперь мы готовы развернуть его для организаций, компаний, команд, предприятий — практически для всех. Фактически, у нас уже есть более 400 организаций, которые используют Copilot for Business на момент запуска, и мы видим огромный интерес», — прокомментировал данный вопрос генеральный директор GitHub Томас Домке (Thomas Dohmke).
В дополнение к этому разработчики объявили, что Copilot получил поддержку соединения через прокси, в том числе с самоподписанными сертификатами. Также было объявлено, что Copilot теперь работает на улучшенной ИИ-модели от Open AI. По мере развития ИИ-помощника он получает новые возможности. Одной из них стала функция «заполнение середины», когда алгоритм не просто завершает строку кода, но также может добавить код в её середину. Для этого Copilot потребуется изучить не только код, над которым идёт работа, но также связанные с ним другие файлы, с которыми осуществляется взаимодействие.
В последнем обновлении Copilot получил возможность обнаружения распространённых уязвимостей в программном коде, который ИИ-помощник предлагает пользователю. В случае обнаружения небезопасных вариантов Copilot предложит добавить более надёжный код. Разработчики продолжают работать над повышением скорости обработки запросов, поступающих в Copilot. В GitHub ожидают, что в скором времени Copilot сможет генерировать до 80 % кода разработчика. На данный момент возможности алгоритма ограничены примерно 46 % кода для всех языков программирования и 61 % — для Java.

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

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

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

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

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

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



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

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

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


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


Советы по использованию Copilot
Основные рекомендации на основе статьи про Codex, такие:
Задачу разделить до функции в 1-2 смысловых действия и генерировать их Copilot.
Писать читаемые названия функци, описания, примеры без багов.
Проверять и тестировать код, которые сгенерировали.

Используйте название функции для модификаторов. Если хочешь функцию побыстрее, пишешь под старой функцией fast_func. А в комментах, что это более быстрая версия старой функции и получаешь версию быстрее. Например, вместо того, чтобы получать строки из БД в виде объектов – сырой sql запрос. Либо пишешь в названии функции на питоне typed – получаешь аннотации типов аргументов и результата.
Если функция сложная, пишите в комментариях шаги выполнения. Можно даже не все этапы, а только первые. Это называется step-by-step reasoning. Важный момент, не писать сразу все шаги в один комментарий, а описать первый шаг → получить код → второй шаг → код.
Модель лучше работает в моно репозитории, потому что тогда ваш код будет доступен для контекста. На странице 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

Если вы не хотите, чтобы у сторонних ресурсов был доступ к вашему код, можно захостить Fauxpilot – аналог Codex у себя. Правда, там GPT-J, который ощутимо слабее.

Вместо генерации кода, можно по старинке использовать поиск. Например, есть phind, который ищет сниппетам кода.

Еще для некоторых кейсов есть в ChatGPT, обычно это что-то вроде написать большой запрос в Clickhouse. Есть разные кустарные аддоны, которые позволяют встроить ChatGPT в vscode, но я ими не пользовался, если есть подобный опыт – пишите в комментариях.

Выводы
Copilot – ускоряет разработку, особенно если знать про базовые принципы использования Codex.

Разбивайте задачу на атомарные действия и генерируйте код для их выполнения из комментариев.

Copilot помогает тратить меньше времени на повторяющиеся действия и поиск по документации.

Код Copilot все равно нужно перепроверять.

Вернуться в «песочница»