Site icon BIZMAG

Перший погляд на GitHub Copilot

Перший погляд на GitHub Copilot

GitHub Copilot — це служба, яка використовує мовну модель OpenAI Codex для надання пропозицій на основі вмісту редактора з Visual Studio Code та кількох інших редакторів.

GitHub Copilot, який отримав назву «Ваш програміст пари для штучного інтелекту» і наразі знаходиться в обмеженій техніці, прагне автоматизувати програмування способами, які виходять за рамки можливостей IntelliSense тощо. це є ні повністю автономний. Як ми побачимо, вам потрібно оголосити (ввести) свої наміри, перш ніж Copilot зможе створити будь-який значущий код, і вам також потрібно наглядати за Copilot, щоб повернути його на правильний шлях, якщо він неминуче зіскочить з рейок.

Copilot — це хмарна служба, яка взаємодіє з Visual Studio Code (який працює на вашому власному комп’ютері або працює в хмарі в кодових просторах GitHub); до IDE JetBrains, як-от IntelliJ IDEA; і до Неовим. Хмарний сервіс — це механізм передбачення коду на основі OpenAI Codex, мовної моделі, яка навчається на мільярдах рядків загальнодоступного коду.

Так, були суперечки щодо Codex і Copilot. Однак, перш ніж ви почнете хвилюватися про потенційні порушення авторських прав і конфіденційності з боку Copilot (я дивлюся на вас, Free Software Foundation), вам потрібно зрозуміти, що Codex навчався загальнодоступному коду таким чином, який часто розглядається як справедливий. використання в спільноті машинного навчання.

Ви також повинні розуміти, що Codex – це код синтезатор, немає пошукової системи. Розробники другого пілота визнають, що це може бути не останнє слово з цього приводу:

… це новий простір, і ми зацікавлені в обговоренні цих питань з розробниками і бути лідером галузі у встановленні відповідних стандартів для навчання моделей ШІ.

Як працює GitHub Copilot

Згідно з GitHub, «OpenAI Codex пройшов навчання з загальнодоступним вихідним кодом і природною мовою, щоб розуміти як мови програмування, так і людські мови. Розширення GitHub Copilot Editor надсилає ваші коментарі та код службі GitHub Copilot, яка потім використовує OpenAI Codex для синтезу та пропозицій окремих рядків і цілих функцій. ”Сервіс також використовує вибір користувача для покращення майбутніх пропозицій.

Тестування GitHub Copilot у Visual Studio Code

Зараз Copilot перебуває на обмеженій фазі технічного попереднього перегляду. Перш ніж ви зможете встановити його суттєво, ви повинні подати заявку на список очікування програми попереднього перегляду.

Отримавши вітальний лист, ви можете перейти на сторінку розширення GitHub Copilot на Visual Studio Code Marketplace і встановити розширення. Потім вам потрібно авторизувати розширення в Visual Studio Code. На сторінці «Перші кроки» ви знайдете підручник, який можна почати з пункту 2. У цьому підручнику ми створимо файл .JS, введіть його

   function calculateDaysBetweenDates(begin, end) {

і закінчується повністю реалізованою функцією, похідною від імені функції. У наступному підручнику на цій сторінці ви вводите коментар, який підсумовує те, що функція повинна робити, і ви отримуєте повністю реалізовану функцію, отриману з коментаря, хоча назва функції занадто загальна, щоб бути корисною.

Сторінка розширення GitHub Copilot на ринку Visual Studio Code. Як ви бачите вище, у мене вже встановлено розширення.Знімок екрана Visual Studio Code з активним GitHub Copilot.

Функції GitHub Copilot

На додаток до отримання тіл функцій з назви функції та підсумкового коментаря, Copilot може отримати свої підказки з іншого коду у файлі, який ви редагуєте, і з імен змінних. Наприклад, у TypeScript, коли я ставлю двокрапку після імені змінної, Copilot намагається заповнити тип. Якщо я введу «var test1 =», Copilot вкаже на слово «test» і згенерує виконуваний тест для попередньої функції. Коли я вводжу кілька рядків, які утворюють шаблон, що повторюється, Copilot намагається створити більше прикладів того самого шаблону.

Copilot працює з широким спектром фреймворків і мов. Він найкраще працює з Python, JavaScript, TypeScript, Ruby, Go, а останнім часом і Java, з сімейством мов C (C, C ++ і C #), запланованим на майбутнє. Я чув від інших, що він дуже добре працює з популярними фреймворками JavaScript, такими як React.

GitHub планує, що Copilot розглядатиме більше поточного проекту коду, ніж лише поточний файл для свого контексту в майбутньому.

Я створив рядки 8 і 9, ввівши початок рядків і серію вкладок. Я ввів рядок 10 і початок рядка 11, а Copilot закінчив рядок 11. Я використовував TypeScript; Це після компіляції в JavaScript, який я запустив під Node.js, як ви можете бачити в нижній частині екрана. Зверніть увагу на неправильно згенеровані коментарі щодо очікуваних значень результату в рядках 8 і 9.

Обмеження GitHub Copilot

По-перше, Copilot не завжди генерує хороший код. Він не завжди генерує правильний код. Гірше того, він не завжди генерує виконуваний код. (У своїх тестах я зустрів усі три випадки.)

Важливо перевірити код, згенерований Copilot. Ставтеся до нього так, ніби його написав зелений програміст-стажувальник, який добре розбирається в пошуках Google, але потребує ретельного контролю.

Одним із способів уникнути першого фрагмента, запропонованого Copilot, є використання параметра Open Copilot у контекстному меню або комбінації клавіш Ctrl-Enter, щоб відобразити вікно пропозицій Copilot на окремій вкладці. Подивіться на всі 10 можливих рішень і прийміть рішення, яке найбільше підходить до того, що ви хочете. Потім ви можете трохи відредагувати згенерований код, щоб зробити його більш надійним.

GitHub запустив тест генерації коду другого пілота:

Нещодавно ми провели тестовий тест на ряд функцій Python, які мають гарне тестове покриття у сховищах з відкритим кодом. Ми приховали функціональні тіла й попросили GitHub Copilot заповнити їх. Модель отримувала це право в 43% випадків з першої спроби і в 57% випадків з 10 спроб. І він стає розумнішим.

Очевидно, що 43% правильності не є дуже хорошим (або навіть прийнятним) показником коректності для виробничого використання, хоча це вражаюче досягнення для нової технології генерації коду. Однак, якщо ви хороший рецензент коду, ви можете редагувати код, згенерований Copilot, щоб він був правильним і надійним набагато швидше, ніж ви могли б написати його самостійно з нуля, особливо якщо ви працюєте з бібліотекою або фреймворком, які є для вас новими.

На вкладці праворуч показано 10 запропонованих фрагментів коду для тіла функції. Ви можете прийняти все, що найближче до того, що ви хочете.

Зразки GitHub Copilot

Коли я перевірив 5 листопада 2021 року, на домашній сторінці було близько 25 невеликих прикладів генерації коду Copilot, а в галереї Copilot — чотири більших приклади з супровідними відео на екрані. Ймовірно, що команда другого пілота з часом опублікує більше прикладів на більш широкому діапазоні мов програмування. До речі, варто подивитися на анімацію в прикладах на домашній сторінці, а також завантажити та переглянути відео MP4 з галереї.

Приклад GitHub Copilot для аналізу настроїв у Python після галереї. Я ввів частини приблизно з шести рядків плюс багато вкладок, щоб прийняти код. Я також відхилив кілька пропозицій, включаючи тестові набори, які я вважав негативними для списку positive_sentences. Код не запускався, доки я не інсталював пакет Python Requests на свій комп’ютер за допомогою pip3.

Загалом, GitHub Copilot досить корисний на поточному етапі технічного попереднього перегляду. Його нинішні виступи дають мені надію, що в майбутньому це дозволить заощадити ще більше часу. Варто чи ні купувати запропонований комерційний продукт Copilot, коли він буде випущений, є відкритим питанням, яке залежить не тільки від виростання продуктивності, але й від ваших власних навичок та ролі.

Є кілька продуктів, які претендують на конкуренцію GitHub Copilot. Найперспективнішим видається Tabnine з однойменної компанії в Тель-Авіві. Tabnine виглядає як IntelliSense на стероїдах і може за бажанням тренуватися з вашим власним корпусом коду, а також із відкритим вихідним кодом. Деякі інші альтернативи, по суті, шукають у StackOverflow відповідний код, що змушує мене трохи підозрювати їхню методологію.

Безумовно, варто спробувати GitHub Copilot у вашому власному середовищі та відстежувати його прогрес з часом.

Exit mobile version