Мы продолжаем следить за новыми инструментами для разработчиков на основе генеративного ИИ. Сегодня в поле нашего зрения попал один из самых интересных и перспективных экземпляров – Copilot X.
Это полноценный цифровой ассистент для кодеров на базе GPT-4, который может помочь с написанием нового кода, рефакторингом, автотестированием – и вообще, юз-кейсов ему придумывают немало. Пора взглянуть на Copilot X, чтобы оценить его современные возможности и потенциал.
Что такое Copilot X
Искусственный интеллект автодополнения кода Copilot был запущен командой Github еще в 2021 году, задолго до волны хайпа вокруг ChatGPT. Но совсем недавно, в марте, он получил большое обновление с умным чатом. Второй пилот понимает естественный человеческий язык и встраивается непосредственно в IDE, чтобы на 100% понимать код разработчика и контекст его проекта.
В GitHub говорят, что с помощью ИИ кодеры даже смогут кодировать без клавиатуры, с помощью голосовых команд. До этого, наверное, еще далеко, но Copilot действительно дает новый опыт разработки – он помогает быстрее разобраться в документации, провести рефактор или автотесты, мгновенно создать новый шаблон с нуля.
Как это работает?
Оценить этот опыт могут не все, доступ к Copilot X предоставляется только по листу ожидания, ведь сейчас он на этапе закрытой беты. Однако мы можем ориентироваться на первые обзоры и отзывы счастливчиков, уже пользующихся новым сервисом.
На практике второй пилот интегрируется в IDE – точно известно о поддержке Visual Studo и VS Code. Вероятно, в дальнейшем появится поддержка JetBrains и Neovim.
Ютубер glich.stream вживую провел с новой технологией несколько экспериментов. Его цель заключалась в том, чтобы испытать возможности чата в реальных задачах разработчика.
В первом кейсе кодер попытался использовать Copilot X, чтобы с нуля создать расширение GitHub CLI, используя Go. Поэтому он просто написал свой запрос чату на естественном языке, как он обращался бы за помощью к живому человеку: “Как мне создать расширение GitHub CLI с помощью Go?”. И в ответ чат-бот предлагает ему пошаговую инструкцию с примером кода.
Советы Copilot выглядят релевантными, особенно если представить, что эти советы адресованы новичку в Go. Да, помощник рекомендует использовать библиотеку Cobra для определения команд и соответствующую библиотеку для взаимодействия с API Github. Ассистент также сгенерировал шаблон кода – по крайней мере, с него можно начать, хотя первое решение не является оптимальным и требует определенной ручной доработки. Примечательно, что если код не работает, бот извиняется и предлагает разработчику альтернативные решения или пакеты.
Кодер призывает быть осторожным с использованием ИИ для создания проектов с нуля. Фактически мы не знаем источники инструментов, которые может предлагать бот, и это может стать вектором кибератаки для различных злоумышленников.
Во втором эксперименте glich.stream попытался применить чат-бот Copilot, чтобы разобраться в уже существующем коде. В качестве образца была взята часть исходного кода Twitter, который не так давно обнародовал Илон Маск.
Кодер задает боту крайне короткий вопрос: что делает этот код? И Copilot в ответ начинает его описание в стиле “Капитана Очевидность”. Вряд ли это будет полезно разработчику, который стремится к полученному понятному контексту.
Очевидно, боту требуются более предметные запросы. Разработчик в конце концов задает ему вопрос о первой попавшейся сущности в коде: “What is Stitch?”. И получает действительный полезный ответ. Copilot предполагает, что речь идет о псевдониме типа или пользовательском классе, определенном еще где-то в кодовой базе. Кроме того, бот прекрасно проявил себя, создав краткую информацию из Readme. Следовательно, если проект хорошо структурирован и наделен качественным Readme, то Copilot может сэкономить уйму времени и предоставить удобную навигацию.
Наконец, третий эксперимент касался использования Copilot X для рефакторинга существующего кода. Как образец glich.stream использовал утилиту поиска стартовых репозиториев на Github, созданную несколько лет назад – ей как раз не помешает рефактор определенных функций и методов.
Для начала Copilot смог на естественном языке описать параметры проекта, точно объяснить сущность кода. Это уже хороший результат. Кодер решил поручить Copilot то, с чего начал бы рефактор: заменить библиотеку Axios на интерфейс Fetch, применить async/await вместо promises. Искусственный интеллект в целом справился, к тому же помог разработчику выявить несовместимость Fetch с устаревшей версией Node.js.
Автотестирование с помощью Copilot X
Разработчик Райан Вуд в своем блоге описывает свой опыт использования бота для генерации тестов. Он попросил Copilot X попытаться сгенерировать юнит-тесты для написанной им функции, и ИИ смог сгенерировать под его запрос большую часть шаблонного кода и тестовые данные. При этом они соответствовали тем данным, которые разработчик употреблял в тестах в том же файле. “Столкнулся” бот на генерации точного SQL-запроса, который функция отправила бы на сервер, но это было легко устранить.
В общем, Copilot показал хорошие результаты в генерации тестов, однако, как и в других задачах, ИИ нуждается в контроле и направлении. Разработчики должны быть готовы тратить время на ручную проверку и поправку сгенерированного кода для полного покрытия тестами.
Отзывы о Copilot X
Наши разработчики, которым удалось прикоснуться к Copilot X, говорят, что он прекрасно демонстрирует себя в генерации шаблонного кода, особенно когда учится на уже готовых образцах. Он “на лету” подстраивается под ваш стиль кодинга, следует синтаксису и быстро начинает выдавать результаты, которые вы легко можете воспринять за свои. ИИ также готов без подсказки применять те же пакеты, которые вы уже применяли выше, в этом же файле. А иногда может предложить и что-то от себя, за пределами очерченных вами инструментов.
В то же время, в работе с нешаблонным кодом Copilot X скорее мешает. По крайней мере, на формулировку релевантного запроса под такую задачу может уйти непропорционально много времени. Впрочем, его задача лежит в другой плоскости: Copilot вполне способен взять на себя шаблонную работу с учетом контекста проекта. Он незаменим с заполнением различных JSON-данных, построением простых элементов в React и т.д. Единственная проблема – со временем ты начинаешь слишком сильно ему доверять.
Вероятно, с Copilot X можно извлечь гораздо больше пользы, если глубоко изучить его возможности и научиться формулировать релевантные запросы. Это, безусловно, мощный ассистент – интегрированная в IDE “консультация по гуглу”, инструмент автоматизации и генератор идей. Впрочем, на “убийцу профессии” он не похож. По крайней мере, пока он в состоянии беты, в самом начале своего жизненного цикла.
Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: