Ми продовжуємо слідкувати за новими інструментами для розробників на основі генеративного ШІ. Сьогодні у поле нашого зору потрапив один з найцікавіших та найперспективніших екземплярів – Copilot X.
Це повноцінний цифровий асистент для кодерів на базі GPT-4, який може допомогти з написанням нового коду, рефакторингом, автотестуванням – та й взагалі, юз-кейсів йому вигадують чимало. Настав час поглянути на 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 спробувати згенерувати юніт-тести для написаної ним функції, і ШІ зміг згенерувати під його запит більшу частину шаблонного коду та тестові дані. При тому вони відповідали тим даним, які розробник використовував у тестах в тому ж файлі. “Спіткнувся” бот на генерації точного SQL-запиту, який функція надіслала б на сервер, але це було легко усунути.
Загалом Copilot показав хороші результати у генерації тестів, проте, як і в інших завданнях, ШІ потребує контролю і скерування у правильному напрямку. Розробники мають бути готові витрачати час на ручну перевірку та виправлення згенерованого коду для повного покриття тестами.
Наші розробники, яким пощастило доторкнутися до Copilot X, кажуть, що він чудово демонструє себе у генерації шаблонного коду, особливо коли навчається на вже готових зразках. Він “на льоту” підлаштовується під ваш стиль кодингу, дотримується синтаксису і швидко починає видавати результати, які ви легко можете сприйняти за свої. ШІ також ладен без підказки застосовувати ті самі пакети, які ви вже застосовували вище, у цьому ж файлі. А іноді може запропонувати й щось “від себе”, за межами окреслених вами інструментів.
Водночас у роботі із нешаблонним кодом Copilot X скоріше заважає. Принаймні, на формулювання релевантного запиту під таке завдання може піти непропорційно багато часу.
Втім, його завдання лежить в іншій площині: Copilot цілком здатний взяти на себе шаблонну роботу, з урахуванням контексту проєкту. Він незамінний із заповненням різноманітних JSON-даних, побудовою простих елементів в React тощо. Єдина проблема – з часом ти починаєш занадто сильно йому довіряти.
Імовірно з Copilot X можна здобути набагато більше користі, якщо глибоко вивчити його можливості та навчитись формулювати релевантні запити. Це безперечно потужний асистент – інтегрована в IDE “консультація з гуглу”, інструмент автоматизації та генератор ідей. Втім, на “вбивцю професії” він не схожий. Принаймні поки що, у стані бети, на самому початку свого життєвого циклу.
Блогер та розробник Джозеф Круз розповів, чому не варто писати ідеальний код та чому це…
Днями я завзято нила про щось ChatGPT (експериментую між сеансами з живим терапевтом). І от…
«Крутіть колесо, щоб отримати знижку до 50%!» «Натисніть тут, щоб відкрити таємничу пропозицію!» «Зареєструйтесь зараз,…
Дуже хочеться робити якісь десктопні апки. Сумую за часами коли всі програми були offline-first, і…
Надсилаючи криптовалюту, багато новачків ставлять запитання: як працюють комісії та чому вони відрізняються в різних…
Нова афера набирає обертів — ось детальний розбір того, як фальшиві потенційні роботодавці намагаються вкрасти…