Github Copilot. Мій досвід використання

Усі статті, обговорення, новини про AI — в одному місці. Підписуйтеся на DOU | AI!

Мене звати Олександр Панченко. Я TeamLead/Software Engineer у компанії SPD-Ukraine, маю 15-річний досвід в ІТ. Як тимлід, я перебуваю в постійному пошуку збільшення продуктивності моєї команди, та як Software Engineer — у зменшенні кількості витраченого часу на рутинні та повторювані задачі.

На початку цього року я спробував GitHub Copilot. Я отримав як позитивний, так і негативний досвід. Моє враження від цього інструменту з часом змінювалося від захоплення до розчарування, часом він мене сильно дратував та підводив, а часом — перевершував мої очікування. Я вимикав його на тривалий час, а потім повертався знову.

Я намагався розібратися, як GitHub Copilot працює під капотом, які дані збирає, куди і як їх надсилає, та що з ними відбувається надалі. Я перечитував більшість з того, що потрапляло в поле мого зору про GitHub Copilot та AI CodeGen рішення в цілому, мене цікавив рецепт ефективного використання AI в написанні коду.

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

Якщо у вас є досвід, яким Ви хочете поділитися — напишіть про ваш кейс в коментарі до статті.

Нещодавно GitHub опублікував статтю, де заявляє, що за рік, який минув від дати запуску GitHub Copilot, він став найпоширенішим у світі AI-інструментом для розробників. Його використовують понад мільйон девелоперів у понад 20 000 організаціях — від Coca-Cola до Airbnb, а також сам Microsoft та GitHub.

Дослідження, проведене GitHub в колаборації з Keystone.AI і Harvard Business School говорить про те, що вплив GitHub Copilot на продуктивність розробників суттєвий, і цей вплив посилюється з часом. GitHub стверджує, що 75% опитаних користувачів GitHub почувають себе комфортніше з ним та пишуть код на 55% швидше. GitHub CEO Thomas Dohmke стверджує, що «рано чи пізно 80% коду буде написано за допомогою GitHub Copilot».

Що ж, це звучить доволі вражаюче. Давайте розбиратися, наскільки це корисний інструмент, та чи може він зробити нас продуктивними.

Що ж таке GitHub Copilot

GitHub Copilot — це рішення для розробників, підсилене АI та покликане бути помічником у кодуванні через надання підказок, рекомендацій, виправлення помилок, написання коду на основі вказівок розробника та контексту. Дата релізу першої версії, що стала доступна для всіх охочих, — жовтень 2021-го.

GitHub позиціонує свій Copilot не просто як ще один «code completion tool», а саме як «AI pair programmer». Як на мене, це доволі вдалий хід, що звучить провокативно та підігріває до нього цікавість. Я намагався дивитися на це рішення саме як на свого асистента, партнера, який працює зі мною в парі та бере участь в процесі кодування.

Чи зможе GitHub Copilot справитися з даною роллю, та чи зможе наш «pair programmer» взагалі нас замінити — про це поговоримо в кінці статті, в розділі висновків.

Як це працює

Почати працювати з GitHub Copilot просто, всі необхідні інструкції є на офіційному сайті. GitHub Copilot безпосередньо інтегрується у редактор як плагін, можна обрати між Neovim, IDEs від JetBrains, Visual Studio та Visual Studio Code. Я ж працюю з GitHub Copilot в Visual Studio Code, IntelliJ IDEA та Intellij PyCharm.

Також я рекомендую встановити Visual Studio Code Insider, в якому, на відміну від IDEs від JetBrains, можна отримати доступ до експериментальних фіч GitHub Copilot, встановивши такі плагіни: GitHub Copilot Nightly, GitHub Copilot Chat, GitHub Copilot Labs. Особливо цікавим рішенням для мене було поєднання IDE з GitHub Copilot Chat.

Донедавна Copilot використовував OpenAI Codex LLM, ця AI-система була розроблена компанією OpenAI спільно з GitHub. Але буквально місяць тому, GitHub повідомив, що Copilot почав використовувати оновлену модель, яка на 13% має меншу latency та набір інших покращеннь, що також збільшують ефективність Copilot.

Для того, щоб краще зрозуміти, як GitHub Copilot працює під капотом, рекомендую почитати статтю на блозі Github.

Як правильно користуватися GitHub Copilot

Щоб LLM допомогла нам вирішити задачу, потрібно її про це правильно «попросити», надавши всю необхідну інформацію про поставлену задачу через prompt. Звучить дуже просто та очевидно, але це одна з найпопулярніших помилок новачків при роботі з Generative AI інструментами. Найпоширеніша помилка при використанні інструментів, підсилених AI (як і будь-якого іншого технологічно-складного рішення) — це отримати на перших кроках негативний досвід, потім перестати користуватися ним або ж продовжувати користуватися неефективно, втрачаючи переваги, які може надати цей інструмент.

Одна з ключових задач плагіну GitHub Copilot — автоматично зібрати дані, щоб зрозуміти контекст та побудувати ефективний prompt, який надасть LLM всі необхідні вхідні дані для генерації максимально влучного результату.

Якщо цікавитеся технічною стороною GitHub Copilot — рекомендую ознайомитися з цією статтею, де автор зробив «reverse engineering» GitHub Copilot плагіну та пояснив, яка логіка побудови prompt’у.

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

Нижче я наведу поради, які я збирав в процесі освоєння роботи з GitHub Copilot.

  1. Context — це ключ до успішної взаємодії з Copilot. Добре структурований та читабельний код, змістовні назви файлів, класів, методів, коментарі в коді — все це сприяє кращому результату. Капітан Очевидність ;) спішить на допомогу і каже, що дотримання best coding practice робить ваш код зрозумілішим не тільки для розробників, але і для Copilot’а.
  2. Чим більше ви використовуєте Copilot, тим краще він вас розуміє, і тим кращі пропозиції він може надати. Copilot навчається на основі ваших дій та вибору пропозицій, тому активне використання Copilot може поліпшити якість його пропозицій. Чим більше ви з ним працюєте, тим краще він адаптується до вашого стилю кодування.
  3. Якщо ви тільки починаєте писати логіку (в новому файлі чи навіть проєкті), і ще немає коду, з якого можна взяти контекст, то важливо на початку файлу в multi-line коментарі описати задачу або ж проблему, яку ви хочете вирішити. Далі варто написати, які очікуються вхідні дані, та що буде в результаті роботи вашого класу або ж методу. Коли почнете писати код, то Copilot використає коментар як вказівку та почне генерувати підказки поступово, крок за кроком. Якщо ж результат вас не задовольняє — поверніться до коментарів та додайте більше деталей, або ж замініть неточний опис чіткішими інструкціями.
  4. Copilot краще працює з маленькими, чітко описаними завданнями. Розбивайте великі задачі на дрібніші, описуйте їх — і Copilot буде надавати підказки для кожного степу.
  5. Дайте GitHub Copilot один або два приклади очікуваного результату. Це один з найефективніших способів, як пояснити LLM, що ми хочемо отримати. Наприклад, додавання прикладів вхідних та вихідних даних в коментарях допоможе Copilot краще зрозуміти, що повинна виконувати функція.
  6. LLM розуміє не тільки англійську, але часто рекомендують писати коментарі до коду, назви класів/ функції/ змінних саме англійською для отримання кращого результату. Використовуйте прості та зрозумілі формулювання, щоб Copilot міг краще розуміти ваші коментарі та наміри.
  7. Якщо Copilot пропонує не зовсім те, що ви очікуєте, і код далекий від реалізації поставленої задачі — спробуйте додати в контекст більше деталей: відкрийте у вкладках зв’язаний код з інших файлів. Copilot може збирати контекст з інших відкритих вкладок (до 20 останніх відкритих вкладок), що може поліпшити його пропозиції. Це особливо корисно, коли ви працюєте над проєктами з великою кількістю логічно зв’язаних між собою файлів або класів. Але відмічу, що інколи, відкривши додаткові вкладки, Copilot йшов зовсім в інший бік та погіршував результати, тому якщо ви зіткнулися зі схожою ситуацією — закрийте вкладки, які не стосуються вашої поточної задачі.
  8. Експериментуйте. Знайдіть модель взаємодії з Copilot, яка буде зручна саме вам. Спробуйте всі фічі, які пропонує GitHub через свої офіційні плагіни, — GitHub Copilot Nightly, GitHub Copilot Chat, GitHub Copilot Labs та інші.
  9. Вимкніть Copilot, коли ви не потребуєте підказок, або підказки починають вас дратувати та відволікати. Хоча Copilot може бути корисним, іноді він може переривати вашу думку або навіть конфузити, особливо, коли ви працюєте над складними проблемами, де Copilot не дуже добре допомагає. У таких ситуаціях краще тимчасово вимкнути Copilot.

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

Остання діяльність, ймовірно, є найменш захоплюючою частиною програмування, і саме з цим AI може допомогти та взяти нудну роботу на себе.

Для яких задач найкраще підходить Copilot

Написання boilerplate коду.

Реалізація однотипних повторюваних задач. Один з найуспішніших кейсів використання GitHub Copilot у мене та в моєї команди був якраз при вирішенні повторюваних однотипних задач. Кілька місяців тому я аналізував дані з кількох систем з метою виявлення колізій, неконсистентних даних та побудови звітів для подальшого аналізу.

Для отримання даних та звітів я використовував SQL, самі запити були відносно прості, але потрібно було зробити доволі багато звітів та вибірок з баз, експериментувати із запитами та отриманими результатами. Часто я будував звіти прямо під час мітингу з командами, які надавали інсайти з приводу різних кейсів.

GitHub Copilot справлявся з написанням SQL-запитів дуже добре. Він розумів контекст, який брав з уже написаних SQL-запитів та доволі влучно надав рекомендації. Звісно, часом він робив помилки, але швидше було відредагувати надану рекомендацію, аніж писати з нуля скрипт на 10-20 рядків в процесі брейншторму чи розмови на мітингу.

Створення коментарів до вже написаного коду. Зручно, коли починаєш писати коментар між рядками коду, а GitHub Copilot підхоплює та додає решту, а потім пише ще і ще, головне — вчасно зупинитися :)

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

Коли ви пишете код малознайомою мовою програмування, Copilot може допомогти з особливостями синтаксису. Наприклад, я не експерт в bash, до цього писав прості скрипти, використовуючи документацію та поради з stackoverflow.

GitHub Copilot допоміг мені швидко написати скрипти для автоматизації рутинних задач — маніпуляції з файлами кількох проектів одночасно, додавання git тегів до списку проєктів з воркспейсу, трансформації файлів до бажаного формату і т.д. Якби я писав їх сам, без допомоги Copilot, то на реалізацію та допилювання пішло б значно більше часу.

У процесі навчання нової мови програмування Copilot може бути асистентом.

З якими задачами Copilot справиться гірше або ж не справиться зовсім

  • З кодом, що написаний тією мовою програмування, що не дуже популярна в GitHub (див. тут). Оскільки модель навчалася здебільшого на паблік репозиторіях GitHub, то це логічно.
  • Робота з найновішими фреймворками та бібліотеками, про які ще мало знає АІ-модель.
  • Нетривіальними задачами зі складною логікою, де треба нестандартні рішення або ж певний креатив.

Що ми повинні усвідомити перед тим, як почати використовувати Copilot:

  1. Copilot не тестує код, який пропонує розробнику, не робить його sanity check — це повністю відповідальність розробника.
  2. Також в LLM можуть бути галюцинації, можуть пропонуватися неіснуючі функції, оператори.
  3. Copilot надсилає частини вашого коду на сервери GitHub, тому переконайтеся, що ви не порушуєте ваш NDA. Також якщо є заборона на використання Generative AI на вашому проєкті — краще дослухатися та не порушувати правила.

Чи може CodeGen AI негативно впливати на роботу програміста

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

Ось, наприклад, дослідження, яке проводили експерти з Computer Sciencе та AI в жовтні минулого року. Дуже рекомендую ознайомитися з цим матеріалом тим, хто цікавиться, як можна профілювати та досліджувати ефективність роботи програміста.

Тут я наведу лише кілька рядків з висновку дослідження, які описують одну з виявлених проблем:

«Our studies revealed that when solving a coding task with Copilot, programmers may spend a large fraction of total session time (34.3%) on just double-checking and editing suggestions, and spend more than hal of the task time on Copilot related activities, together indicating that introducing Copilot into an IDE can significantly change user behavior.»

В процесі роботи з GitHub Copilot та вивчення відгуків від користувачів CodeGen AІ-інструментів я прийшов до такого списку потенційних негативних впливів на роботу програміста, який використовує CodeGen AІ:

  1. Залежність від підказок, які надає AІ. Використання CodeGen AІ може призвести до залежності від автоматичного заповнення коду. Це може зробити розробника менш активним у процесі самостійного мислення та пошуку рішень. Він може позначити зменшення власної креативності та здатності до проблемного розв’язання.
  2. Використання неправильного або небезпечного згенерованого коду. LLM навчена на коді з публічних репозиторіїв GitHub, цей код може мати high-risk cybersecurity weaknesses. Згідно з одним з досліджень 40% запропонованого Copilot’ом коду мали high-risk cybersecurity weaknesses, неоптимальну реалізацію або взагалі бути неробочим.
  3. Обмеженість у використанні специфічних підходів. GitHub Copilot може пропонувати рішення, засновані на загальних шаблонах та патернах, але він може не завжди враховувати специфічні потреби або вимоги проєкту. Розробник повинен мати достатній рівень експертизи, щоб відфільтрувати та належним чином адаптувати запропонований код до конкретного контексту.
  4. Втрата навичок та вдосконалення. Використання автозаповнення коду може призвести до занепаду або забуття деяких технічних навичок розробника. Треба пам’ятати, що набуття та розвиток навичок у програмуванні є процесом, який потребує значних інвестицій часу, систематичної практики та активної участі у різних аспектах програмування.

Чи є альтернативи GitHub Copilot? Так, звісно, є альтернативи. Якщо дуже коротко, то ось хороша стаття на цю тему, яка порівнює найперспективніші альтернативи до GitHub Copilot та ChatGPT.

Чи потрібно Вам використовувати GitHub Copilot

Тут немає однозначної «Так/Ні» відповіді, все дуже залежить від рівня вашої експертизи, які задачі ви вирішуєте, якою мовою програмування пишете код, і чи подобається вам, коли в процесі роботи IDE робить підказки.

Якщо ви джуніор — я б не рекомендував би захоплюватися AI CodeGen інструментами та використовував би їх дуже зважено, без фанатизму, краще тренуйте власні скіли, аніж AI.

Якщо ви часто пишете бойлерплейт код популярною мовою програмування, код, який ви добре розумієте — тоді однозначно «Так», спробуйте GitHub Copilot та оцініть через місяць чи два, наскільки ви задоволені результатами його роботи, дайте йому час, щоб проявити себе.

Потрібно розуміти, що на цей момент всі — і розробники CodeGen АІ-рішень, і їх користувачі — знаходяться на фазі проб і помилок. Це технологія, яка ще не досягла повної зрілості, і вона продовжує еволюціонувати та вдосконалюватися. Згідно з дослідженням Gartner Generative AI перебуває на піку циклу хайпу, тому нас ще чекають розчарування на фоні завищених очікувань від Generative AI. Але я переконаний, що в найближчі роки вона відкриє широкі перспективи для індустрії та покращить спосіб, яким ми створюємо програмне забезпечення у майбутньому.

Висновки

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

Але, як і будь-який інструмент, його можна використовувати неправильно, неефективно, або ж покладатися на нього дуже сильно, і тоді отримані результати, скоріш за все, вас не задовольнять, або ж навіть розчарують. Я рекомендую тим розробникам, хто ще не пробував GitHub Copilot, обов’язково його спробувати, а тим, хто спробував та не отримав бажаного результату, використати поради з цієї статті та спробувати ще. Ігнорувати такі рішення як GitHub Copilot — це хибна стратегія. Як мінімум, ми повинні розуміти, на що вони здатні, а ще краще — вміти їх використовувати для вирішення своїх задач.

Чи став я продуктивнішим, використовуючи GitHub Copilot? Так, але тільки при вирішенні певного класу нескладних і повторюваних задач. Це цінно для мене, я маю більше часу для вирішення цікавіших та складніших задач.

Я очікую, що з релізом GitHub Copilot X я матиму у своєму арсеналі більше різноманітних інструментів для автоматизації рутинних та повторюваних задач.

А яким був ваш досвід використання GitHub Copilot?

👍ПодобаєтьсяСподобалось17
До обраногоВ обраному7
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Він взагалі сканує весь проект чи ні? Бо деколи видає якусь дичину.
Маю наприклад спрінгбут контролер з пост методом. Відповідно є mockmvc тест на цей пост.
Дописую ще гет у контролер.

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

Схоже що проект цілком не сканує, тільки відкриті файли

Так я ж редагував один файл. Потім перейшов у інший.
Потрібно ще трохи побавитись.
Бо поки він тільки погіршує перформенс своїми кривими підказками😂

І ще проблема. Він не в курсі пекейджів, відповідно якщо навіть вставить правильний клас придумавши назву. То все одно імпорт не зробить. Такий от помічник🤷‍♂️

Користуюся копілотом ще з часів коли він тільки підказував варіанти. Повністю згоден із статтею, от прямо з кожним пунктом, дуже добре розписано. Підійде він чи ні — питання суб’єктивне, для мене він повністю виправдовує ціну.
Із досвіду:
1. Він досить добре працює навіть із кодом без аналогів. Ми використовуємо власну бібліотеку, сумісну із STL, але яка дуже багато в чому перевершує її. При її використанні код більше схожий на Python, ніж на C++. Проте у 20-30% Copilot видає правильний код, або ж код, який легко підправити.
2. Писати юніт-тести з ним справді дуже зручно, навіть із урахуванням п.1.
3. Двічі мусив відловлювати досить неочевидні баги в згенерованому коді. Я не вважаю це проблемою тому що те саме трапляється і з людським кодом.

З кодом, що написаний тією мовою програмування, що не дуже популярна в GitHub

До речі, якщо брати ChatGPT, то вона досить добре адаптується навіть для псевдокоду, або навіть для чогось власного.

Тоже потыкал пол года назад где-то.. Я правда не тим, а тех лид, но тоже искал что-то подобное для себя/команды. Но пока это все сырое — и реально они пытаются втюхать то, чего еще нет, как и 90% бизнеса на просторах, и возможно никогда не будет.. Постоянно описывать комментариями че ты от него хочешь — да быстрее написать самому код — плюс не засираешь код коментами — делая его чище: ведь код должен описывать себя сам, не давая волю для интерпретаций(clean code). Коменты нужны исключительно для сложно написанных алгоритмов. Разве что если ты первый день пишешь на каком-то новом для себя языке и чтобы не гуглить как реализовать ту или иную рутину можно так.. Но на 2-й 3-й день оно уже собственно не нужно. Сделали бы бесплатно еще куда ни шло — для новичков и студентов в первые месяцы обучения может местами подсобить. А так то сырье сырьем ) Еще нужны десятилетия чтобы довести подобные продукты до ума.

Не бачу, як може допомогти на готовому великому проекті. Код не згенерує — бо багато ньансів. Тест кейси також. Ні, звісно перевірити регістр чи ще щось так. Але якщо тест на складну логіку — то ні. Та й навіть повторювані тести — часто швидше копіпастою.

Сам користуюсь Tabnine. В принципі від нього не дуже великий імпакт. Здебільшого використовую для написання коментарів, повідомлень для іксепшенів, доповнює простеньку логіку, якщо код повторюється. Загалом, прискорення мабудь 5-10%. Але коли це найнудніші відсотки, то мабудь вартує.

Здебільшого згоден. З власного досвіду — на великих проектах з складною логікою використовував Copilot для таких кейсів — написання коментарів, еррор-меседжів, допомога з підбором назв методів та змінних, генерував подібні тест-кейси до тих, які вже існували в тест класі, при написанні якихось простих утільних методів. Це не дуже багато, але все таки допомога, яка була мені цінною в умовах обмеженого часу.
Також Copilot був корисним при написанні великої кількості SQL в процесі аналізу даних, особливо на мітингах в процесі обговорення рішення.

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

Я би з радістю користувався Copilot, але для мене це тупо питання грошей — $19/month. Вроді фігня, за такий «буст продуктивності». Але ChatGPT вміє робити те ж саме за $20/month, тільки при цьому не тільки код. Додатково він ще може:
1) покращити копірайтинг. У мене на проекті немає дизайнера й копірайтера, всі фічі як фронтендер я дизайню сам, ще й текст сам пишу. Якщо з дизайном у мене ± ок, то з текстами англйською у мене так собі (маю на увазі саме лаконічний текст). ChatGPT я можу сказали «ось текст який я маю, зроби його ненапруженим. дипломатичним. енергійним. продаючим. яким завгодно.» Copilot так не вміє
2) вчора робив дизайн систему для проекту і намагався зробити colors palette для сайту. Плагіни у фігмі це круто, але коли ти вже дизайнер і маєш досвід. Закинув у ChatGPT колір, сказав «хочу зробити палітру темних кольорів для бекграундів для темної теми на сайті, почни з самого темного кольору #121212, зроби мені палітру з описами який колір до чого використовувати». Як думаєте що отримав? Вуаля

100: #121212 (Very Dark Gray)
Use case: Ideal as a primary background color to create a deep and immersive dark theme experience.
200: #1E1E1E
Use case: Suitable for backgrounds of secondary UI elements, like sidebars or secondary headers.
....

Звичайно на 100% вірити не можна, дещо доперевіряю, але в результаті мій час скорочено годин на 8. Copilot так не вміє
3) нещодавно працював з highcharts. Хто не знає, це ліба для графіків. Її особливість це ї*ейше здоровий конфіг, над котрим можна сидіти годин 10, якщо пишеш його раз в рік. Закинув промпт в ChatGPT — отримав конфіг. Дещо не так, сказав про це ChatPGT — він підправив. Потім скачав картинку чарту з інету, вставив її через плагін, сказав «зроби конфіг як на картинці» — він зробив. Так, не ідеально, але зробив. Copilot так не вміє
4) також нещодавно треба було зробити досить велику (100+ строк коду) aggregation function для даних з бекенду. Вкинув input + output — ChatGPT видав результат. Сказав йому «а можеш ще цей кейс захендлити?» — він видав результат. Copilot так не вміє
5) також нещодавно (так, останні пару тижнів я активний) проектував архітектуру середнього бекенду (аплікація для трекінгу фінансів, з інтеграціями і тд). Я фронтендер, я хз як це робити краще. Сказав ChatGPT що я не впевнений як зробити краще, накидай мені варіантів — проектувати я не дуже вмію, бо не маю досвіду, але проаналізувати готові варіанти то вже багато клепки не треба (або треба, але все ж простіше ніж с нуля) — він накидав. Накидав не просто «можна отак», а ще й накидав pros/cons кожного підходу. Далі по кожному підходу ми предметно поспілкувалися накшталт «якщо буде такий кейс, як кожен з варіантів його опрацює». Copilot так не вміє
6) на моєму старому проекті (соцмережа) аля-СЕО задля створення активності створим з ChatGPT ботів, які буквально ходили в інтернет, шукали цікаві актуальні новини по топікам, й створювали пости для них. А потім ще й на коменти юзерів відповідали. І зрозуміти бот це чи не бот не зміг ніхто з нашої команди. І це все було автоматизовани, ми мали штук 20 ботів, кожен з яких писав на свою тему — політику, крипта, меми, і тд. А аля-СЕО навіть програмувати не вміє, він просто людина яка має ідеї. Ah shit, here we go again. Copilot так не вміє

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

Тож що виходить — платити $19 за підказки до коду, які вміє робити і ChatGPT. Або $20 за ChatPGT, який вміє ВСЕ. Платити $39 тупо не бачу сенсу, бо ChatGPT достатньо. Хтось може сказати що «Copilot вміє аналізувати кодбейс і давати промпти на його основі». Моя відповідь: 1. Мені це не потрібно
2. Це погано працює (я працював з Copilot пару місяців)
3. Питання з security на які я не хочу витрачати час

Тож чисто мій досвід саме такий :)

Ну і бонус: днями налаштовував React Native + Expo проект щоб він працював для Android білду. Ви б знали скільки помилок, або просто ситуацій коли «нічого не працює» я зустрів. А скільки з них гуглилося з першого промпту? Та майже жодна. При цьому я їх закидував у ChatGPT, і він майже завжди точно вказував що саме треба доконфіжити, чи фіксанути. Чи вміє так Copilot? — відповідь ви вже знаєте :)) Тож фіксанув білд за день-півтора. Для справки, досвіду з React Native та Expo у мене десь тиждень (до цього тільки чув що є React Native), а з білдом для Android тим паче (я думав React Native магічно все під капотом ховає...)

Але ChatGPT вміє робити те ж саме за $20/month, тільки при цьому не тільки код.

У мене більше $10 не виходило...

Я про підписку яка дає доступ до GPT 4 та плагінів. Безкоштовна 3 версія гірша з мого досвіду, та й немає плагінів

Я більше користуюся API, а от інтерфейс до нього мені непринциповий.

Це вже інше питання :) Хочете сказати що через API без підписки маєте доступ до плагінів та 4 моделі?

В API можна задавати моделі, там їх набагато більше, ніж 4. А платиш за кількість запитів, за знегерований контент, плюс кожна модель має свою вартість.
openai.com/pricing

Бачу. Ну топ, що сказати. Хоча все одно не бачу плагінів, тож мені б не вистачило :)

Плагіни це що? Я сам написав для себе, щоб використовувати саме так, як я хочу.

Наприклад для того щоб чат вмів ходити по юрл та читати його. Це так, легко можно й самому зробити, бо плагін буквально парсить сторінку й годує нею чат.
Але я іноді ще користуюсь плагіном для «зчитування» зображення. Тобто як я писав у прикладі — завантажив дизайн графіку, попросив зробити Highcharts конфіг щоб мій графік виглядав так само, й він ± робить. Так то звичайно думаю і це можна самому закодити перед викликом API, ліб під це купа, але мені було б тупо впадлу))

Тільки зараз побачив що $19 то саме для бізнесу, а персональний — $10. Сильно краще, але все одно хз :)

В п’ятому прикладі розмір коменту більший за розмір коду, не бачу сенсу в такій практиці, окрім як тренування аішки. Для себе корстуюся копайлотом для тривіальних але марудних частин роботи, типу генерації тестів. Але при тому, слід дуже уважно перевіряти результат, часто код виглядає правдоподібно, але є або неефективним, або взагалі безсенсовним. Ніколи не користуюся аішкою в разі, якщо саму сходу не можу написати рішення — щоб не втратити/розвивати власні скіли програмування, а не тільки промт інжінірінгу.

Перформанс програміста рядками коду не виміряти.

Я нічого не писала про вимірювання перфоменсу, до чого тут це? Якщо я можу написати 5 рядків замість 10, я буду писати 5, бо мені так зручніше. Якщо
я не знаю як написати код, читайте мій перший комент.

Це відсилка у стародавні часи, коли перформанс розробника вимірювався рядками коду, що він написав. Та про жарт Рітчі, який назвав одним зі своїх самих продуктивних днів той, де він видалив 200 рядків.

Просто інколи 10 рядків написати швидше, ніж п’ять. В даному прикладі швидше зробити копіпасту існуючих прикладів, які потім можна перетворити на тести за допомогою того ж самого AI, ніж писати регулярний вираз, слідкувати за дужками, номером групи, ... Особливо якщо ти вже забув, як саме в цій мові програмування це робиться.

В принципі я погоджуюся з автором, але я більше користуюся ChatGPT. Особливо мені більш комфортний варіант, коли я сам прошу дописати код, а не коли це робиться автоматично, тому у мене просто стоїть шорткат: доповни, будь ласка :-) Ну і коли у мене виникає думка, що AI має гарно впоратися, я його натискаю.

Наразі у копайлота теж вже є інтерфейс чату, який доступний не виходячи з IDE (принаймні для VSCode).

Не користуюся VSCode, головне щоб у відкритому API було.

Якщо ви тільки починаєте писати логіку (в новому файлі чи навіть проєкті), і ще немає коду, з якого можна взяти контекст

так я і думав, що він не може у контекст проекту. Я і думаю чому віт так багато працює з модельками, які тягнуться по імпортам. Він просто взагалі не розуміє які філди там є.
невже так важко читати плагінам копайлоту те, що ІДЕшка і так вже читає і індексує постійно?

IntelijSense самої IDE куди краще працює..

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

PS Ще бісить, коли він не догенеровує функції (тести) бо там дуже багато коду і він такий «ох, щось дуже багато рядків, не буду закінчувати функцію»

З апдейтами GitHub Copilot розробники збільшують розмір контексту (фрагменти коду з поточного файлу, код з файлів, які відкриті або нещодавно відкривалися і тд), який збирає Copilot на клієнті для того щоб потім формувати prompt і відсилати на LLM. І мені здається що вони рухаються в сторону коли весь проект буде використовуватися для формування контексту.

Ще бісить, коли він не догенеровує функції

згоден, інколи я помічав що ще треба додавати Enter’ом пустий рядок після того як він згенерив кілька рядків шматка логіки, щоб почав генерити інший шматок. Так буває в мене коли я в коменті описав всі кроки (step’и), а далі покроково він генерить його. Між кроками він інколи чекає поки не додам пустий рядок або не почну писати наступний крок сам.

Також я рекомендую встановити Visual Studio Code Insider

Типовий Microsoft з тестуванням на хом’ячках. Дякую, не треба. Добре що воно й релізному білді працює нормально.

Я намагався розібратися, як GitHub Copilot працює під капотом, які дані збирає, куди і як їх надсилає, та що з ними відбувається надалі.

То до чого докопались? В ліцензійній угоді ніби все добре, але щоб не вийшло «ой, то не ми, то ШІ сам випадково ваш пропрієтарний код конкуренту злив».

Якщо коротко — мене поки що влаштовує які дані він збирає (docs.github.com/...​t-for-individuals-collect) та як він їх використовує. Читав їх ліцензійну угоду — також все ніби добре.

Для себе я відмітив таку умовно «безпечну» модель взаємодії з GitHub Copilot
а) користуватися планом Copilot for Business
b) або ж планом Copilot for Individuals, але з виключеним Allow GitHub to use my code snippets for product improvements в налаштуваннях

Знову ж таки, моя довіра базується на тому що стверджує і заявляє GitHub. Так само я довіряю Apple коли на своєму Macbook пишу свій пропрієтарний код та вірю в те що Apple його не передасть нашим конкурентам.

Я не експерт по LLM, тому якщо тут є експерти по AI, які можуть пояснити (або ж надати лінку на статтю чи дослідження) в яких умовах LLM можуть на виході згенерити точно такий код (або дуже схожий код) до того, який я відправив в LLM через prompt — я буду вдячний.

Мене tabnine поки влаштовує. Дивлюсь по вашим прикладам в принципі прикольно. А вміє він вчитись на локальних данних і чи можна відключити відправку данних у хмару?

Не пробував tabnine, спробую за нагоди.

чи можна відключити відправку данних у хмару

Так щоб prompt (який містить деталі про контекст того що ви пишете і частини вашого коду) не виходив за межі локальної машини — то ні, це не можливо. LLM знаходиться на стороні GitHub.
Можна впливати на те чи використає ваш prompt GitHub для покращення моделі чи якогось аналізу — так, можна. Треба відключити «Allow GitHub to use my code snippets for product improvements» чекбокс на сеттінгах вашого акаунту. github.com/settings/copilot. А ще краще користуватися Business планом (docs.github.com/...​thub-copilot-for-business)

А вміє він вчитись на локальних данних

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

Юзал в бете. Только приятные впечатления остались

Спасибо, хорошая статья. Как раз недавно обсуждали возможность интеграции данного инструмента у нас в компании и я как ПМ проводил ресерч на эту тему. Пришел ± к тому же выводу, что тема интересная и инновационная и как минимум плюсы от ее внедрения будут, главное уметь правильно ее контролировать.

Было интересно услышать мнение с технической стороны. Так что, вам, Александр, спасибо за опыт и ресерч!

Підписатись на коментарі