Вбудований офлайн ШІ в продуктах JetBrains: огляд

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

Привіт, з вами Артур! І я приніс новини вам.

JetBrains викатили Full Line Code Completion. Ви можете спитати «І що з цього?». А справа в тому, що тепер навіть у глухомі лісі ви можете використовувати ШІ-допомогу і бути мегапродуктивним. Copilot, що з лицем? :D

А також, як стверджує JetBrains, ця штука нікуди не надсилає дані, що повністю закриває всі потреби з безпекою даних. Ну це топовий топ, IMO!

Перший ШІ code completion, який працює локально та не надсилає дані через інтернет!

Але спочатку невеличке демо:

А тепер погнали в деталі.

Як і у всіх інших код-комплішен тулзах, код-комплішн від JetBrains також базується на спеціалізованих мовних моделях, які навчали спеціально для різних мов і фреймворків. Моделі працюють локально без надсилання коду через інтернет.

Зараз це оновлення доступно для Java, Kotlin, Python, JavaScript, TypeScript, CSS, PHP, Go та Ruby у відповідних IDE IntelliJ IDEA Ultimate, PyCharm Professional, WebStorm, PhpStorm, GoLand та RubyMin. Але обіцяють, що скоро дадуть і для C#, Rust, and C++.

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

Як працює code completion

Допоможе ця штука трошки зекономити часу, а також дасть вам захист вашого кодяшнику порівняно з іншими clod-based рішеннями. Як це працює 👇

Він працює локально та доступний офлайн. Це означає, що ви можете скористатися цією функцією, навіть якщо ви не підключені до інтернету. Він не надсилає дані з вашого комп’ютера через інтернет. Мовні моделі, які забезпечують code completion, працюють локально, що чудово з двох причин. По-перше, ваш код залишається в безпеці, оскільки він ніколи не покидає вашу машину. По-друге, немає додаткових витрат, пов’язаних із cloud. Його глибоко інтегровано в IDE JetBrains. Усі підказки будуть відповідним чином відформатовані, а IDE перевірить наявність збалансованих дужок і лапок. Крім того, вони використовують можливості статичного аналізу та розуміння коду, щоб відфільтрувати неправильні пропозиції. Також підтримується функція автоматичного імпорту.

Full line code completion проти AI Assistant

У JetBrains уже був презентований їхній AI Assistant, але між ними є різниця. JetBrains AI Assistant є окремим продуктом. Його набір функцій не обмежується доповненням коду: він також пропонує вам багато інших речей, зокрема контекстно-залежний розумний чат і можливість генерувати тести або писати документацію.

Що тут казати, ось є картинка, яке краще розповість про все:

А що під капотом

Генерація підказки мовної моделі виконується на вашій локальній машині. Щоб забезпечити найефективнішу генерацію, відповідь моделі виконується в окремому процесі, який оптимізований для архітектури вашої машини. Наприклад, якщо ви використовуєте архітектуру x86-64, модель працюватиме на ЦП, а якщо ви використовуєте архітектуру ARM64, модель використовуватиме потужність GPU.

Після створення відповіді виконується ряд кроків постобробки. Спочатку перевіряється, чи ця підказка є синтаксично та семантично правильною, а потім виконується інтелектуальна фільтрація, форматування, збалансування дужок та різні інші маніпуляції.

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

Також це рішення дозволило зменшити розмір моделі без істотного зниження якості пропозицій. У версії IDE JetBrains 2024.1 використовується мовна модель із 100 мільйонами параметрів з максимальним розміром контексту 1536 токенів, що становить приблизно 170 рядків коду.

Як ввімкнути фічу

Зайти у Settings | Editor | General | Code Completion</em, там буде Machine Learning-Assisted Completion.

Для вимкнення клікніть Enable Full Line suggestions. Або Settings | Plugins далі Installed і там вимкніть full line code completion.

Як на мене, це кайф!

Звісно, використовувати її чи ні, як завжди, залежить від вас. Вона поки не суперідеальна, але вже зараз може вам зекономити деякі хвилини робочого часу на рутинних задачах.

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

P.S. Ну і як завжди, якщо сподобалось та хочете отримувати свіжак, підписуйтесь на мій телеграм-бложик From A to QA, де я пишу про менеджмент, розробку та тестування, а також ютубчик From A to QA.

👍ПодобаєтьсяСподобалось13
До обраногоВ обраному0
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

Тепер середня температура ноута з відкритою IDE від JetBrains підніметься ще градусів на 5. Грети Турнберг на них нема!
Що по пам’яті? На x86-64 GPU ніяк не задіяти?

Фіча прикольна, але ж все рівно досить часто приходиться і перевіряти що воно згенерувало. Як результат — витрачаємо час не на написання, а на читання.

Саме так.
Копайлот та інші асістанти добре для джунів.
Коли вони не дуже знають що треба написати, але можуть умовно сформулювати імʼя функції.
Код компліт вже за них там щось накине.
Залишиться перехреститись та перевірити що працює.

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

Користувався Tabnine 1 рік, поки дали мені знижку на підписку. Скасував, коли треба було продовжити. Залишив бесплатну версію, яка вміла доповнювати по 1 рядку — дуже зручно. Тепер відключив взагалі. Взагалі враження тільки позитивні — пришвидшує набір, допомагає не виходити з потоку.

вбудований бекдор від фсб входить?

Добфускуй декомпілюй і подивись. Щоправда компанія офіційно і фізично чеська, тобто це буде порушення проти компанії з ЄС. Щоправда Україну всеодно за 10 років так і не прийняли а ні в ЄС, а ні в НАТО тобто щоб перевірити наявність бекдорів напевно не дуже велике порушення буде. Це же дуже важливо скачати увесь похідний гомнокод, який розсилає емейли клієнтам що на їх картці не було грошей, може тепер є нехай закінчать покупку.

Повертаємося в давні часи, коли молоді довго намагались довести, що копі-пейст — це погано.
Зараз отримали автоматичний копі-пейст.

Вміння користуватись стековерфлоу скоро буде кор софт скілом для резюме

тепер треба себе відучити тицяти tab, бо хочеш доповнити ключ масиву, а доповнюється весь рядок разом з операцією.
Але вцілому прикольно, для дрібних очевидних речей а-ля

$mas = [
  'path' => $file->getPath(),
  'name' => $file->getName(),
дописує достатньо влучно. Якщо воно ще й самодонавчається, тоді ще краще.

Доречі що мене вразило ще — так що розмір версії з код-комплішеном збільшився менше ніж на 200 мб! Тобто вони в 172 МБ вмістили все що треба для цієї ШІ! 951МБ поточна та 779МБ попередня

200 мб це насправді дуже багато, швидше за усе ці 200 мeтрів це додаткові ML бібліотеки типу Tensorflow. Скажімо IDE Code::Blocks на загал 200 МБ. А С lion при цьому займає цілий гектар.

А що Code::Blocks вміє? Там, здається, навіть індексера нема. Принаймні, я його не відчув.

А що потрібно ?
Вміє насправді доволі не мало. wiki.codeblocks.org/index.php/Feature_List
Щоправда чого не вистачає суттєво — нема з коробки систем контролю версій (є сторонні плугіни на форумі) і нема перевірки орфографії самого кода (на коментарях працює). Підтримка Cmake — так як Visual Studio чи QT Сreator їх підртимує.
Треба брати версію з forums.codeblocks.org/...​index.php/board,20.0.html там суттєво більше фітчь як то підтримка санітайзерів як то : cpp check, valgrind, разом із профайлерами як то cache grind. Підтримка doxy gen і т.д.

індексера

Що мається на увазі, віртуальна файлова система ? Там замісць цього темпові файли (хоча я відключаю) і перелік файлів в проекті.
Так деякі речі в прівнянні скажімо з Tomato чи скажімо Eclipse не то пальто, якщо переходив з продуктів Borland делфі, дебілдер і т.д. як і Eclipse більш зручно. Якщо звик до Microsoft — то трошки менше.
На смак і IDE як відомо. Скажімо для JavaScipt як на мене краще за WebShtorm нічого нема. Коли мікс з napi або JNI воно на жаль не вміє ні в WebShtorm ні в IDEA.

Я звик до Eclipse CDT. Даєш йому Хроміум, чекаєш годину, він індексує. Після того клікаєш будь-який метод або змінну, обираєш find references, і він миттєво показує усі місця в мільйонах рядків коду з котрих йде доступ до цього метода чи змінної. Навіть коли доступ з середини макроса — він покаже усі виклики цього макроса. І показує, де доступ на читання, а де — на запис. І працює воно в оперативці — миттєво.
Більше ніде такого не бачив, крім колись visual assist. А Екліпс вже не торт — вони не потягнули нові стандарти плюсів.

Так само як і в Eclipse доставляється плугіном wiki.codeblocks.org/...​x.php?title=Cscope_plugin
Ніби в найтлі збірках має вже бути. Так само як і флаги до GCC 13 і новітніх версій C lang і т.д. Чому не виходить реліз як анонсували не в курсі.
А взагалі питання не про це було, така велика різниця у «вазі» не через принципово різну кількість фітч, різниця у вазі в два рази це плата за Java.

Updated 2012-08-04 (15.8a Released)
Щось мені підказує, що воно також не розуміє нові стандарти С++

cscope працю як просунутий grep. тобто швидко знайти символ ігноруючи строкові літерали та комменти — без проблем.
Знайти де використовується саме цей метод validate а не усі методи та функціі з такой назвою в проекті — то не до нього. Ще яскравіше різниця у тому випадку коли намагаєшся перейти до дефіниціі метода. якщо одноіменних багато — у cscope ручки, а clion та vscode наприклад в більшості випадків якщо то compile-time визначається то пригне саме туди куди треба. І то велика різниця

Цікаво. Треба спробувати наскільки воно влучно підбирати буде код.

Напевно як і інші копілоти — аля капітан очевидність. Не те що би воно не вірно відповідало, чи якийсь примітивний сніплет генерувало, разом з тим як тільки якись складний промпт — йди програмуй. От просто спробуйте запитати велику повну модель відтворити саму себе, навіть простіший промпт — просто зробити еталонну нейронну сіть яка роспізнаватиме зображення арабських цифр.
Поки що це швидше про рівень абстракцій коли можна трошкі більш смарт від форматувати код під кодстайл, трошки краще за старі алгоритми.
Тим не меньше куди ж діватись від маркетингу Microsoft, якщо вони сказали з кожної праски — що без ChatGPT 95 ви тепер динозавр, який вимре треба додати таку функцію негайно.

але бойлерплейтні завдання воно виконує шикарно) менше друкарьскої тупої роботи це щастя)

Це приблизно як і у Amazon де виявилось, що мега ШІ це індуси з Бангалора які на аутсорсингу сиділи itc.ua/...​i-pratsivnykiv-indijtsiv :) Вбудова ШІ в IDE звісно має ефект, та про можливість заміни програмістів не йдеться :) Та під час золотої лихоманки якщо у тебе нема «ШІ» покупець піде в магазин де дешевше, а не де цікавіше бо можна погратись із «роботом».
Напевно наступним кроком буде плугіни для багтрекінгових систем типа Jira, де можна буде продукт манагеру одразу аутсорсити конкретні таски по різним вендорам на планеті. Не знаю правда як із Законом Брукса можна буде мати справу, або з тікетами в яких назвою do something good та жодним описом. Та те що таке можно буде подати під видом супер ШІ — 100%.

та звісно це не про заміну. це про полегшення роботи :) бо раніше я створював купу шаблонів шоб бойлерплейт не писати а студія хот кейем вставляла за мене а тепер ШІ-айка це робить)

Насправді воно не про бойлерптет, воно про «візуально схожий» код. Я користуюсь GitHub копайлот ще з бети (вже два роки), і зараз десь 60-80% мого коду, то є згенерований код. Щоб воно працювало добре, потрібно дотримуватись більш менш одного код стайлу завжди, тоді воно взмозі згенерувати щось добре маючи приклади як ви робите «бай дефолт». Останні десь 6 місяців воно порозумнішало, і тепер контекст це не тільки те що є в файлі які ви редагуєте, а ще й контекст із файлів де ви були до того, тобто якщо ви, скажемо, задекларували одну функцію у файлі 1, а потім намагаєтесь її використати у файлі 2, воно вас зрозуміє і згенерує параметри коректно (це гітхаб копайлот, як працює джет брейнивскій я не знаю).

Більш того, воно здатне агрегувати логіку, скажемо, у вас у коді є 2 LINQ expressions які щось роблять, якщо ви будете намагтися написати третій експрешен який концептуально робе тей саме що попередні два але за «один прохід», воно таке зможе із високою вирогідністю. Взагалі, це як мати джуна який може якось змінити код за вашою указівкою, але той джун — це копайлот, а замість тасок у джирі ви пишете комент що треба зробити або використовуєте само-документовані названея змінних (і воно тоді генерує логіку після ʼ=ʼ). Ну тобто це трошки промт-інжиніринг — із копайлот все що ви пишете у IDE то є промпт із контекстом вашого кода, треба трошки звикнути щоб писати код і «промпти» так щоб воно розуміло.

Дуже гарний приклад

Скажемо, у вас є апі v1, ви його зробили депрекейтед, бо вже є апі v2. Нажаль ви не можете видалити апі v1, бо ним все ще користуються, але v2 вміє все те що і v1 + щось нове (через нову функціональність і рефакторінг дата контракту — v2 не зумісно із v1).

У такому випадку, майже 100% ви хочете логіку ендпоінту v1 «заредиректити» до v2 або її бізнес логіки адаптуючи параметри та відповідь так щоб воно робило вигляд що нічого не змінилося.

Копайлот таке згенерує автоматично майже 100%

Стаття беззмістовна, не витрачайте свій час. Тут немає оригінального вмісту порівняно з тим, що вже є в рекламних матеріалах від JetBrains.

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

будь-ласка , не витрачайте свій час на токсичність в інтернеті, Володимир :)

В такому випадку: (1) варто було помістити цю новину в розділ форуму «новини»; (2) не додавати слово «огляд» в заголовок.

Редакція DOU визначила текст за форматом більш актуальним для розділу техстатей. У цьому розділі трапляються статті-огляди оновлень чи новинок, напр. Bun, Оновлення Python 3.1.

Як раз для мене найбільш корисна тех. Стаття за останній час на доу.

якби не цей допис, то я б нiколи не дiзнався про цей плагiн

З таким тулом ’джунівські’ тестові завдання виходять на новий рівень

Доречі, з появою ШІ як copilot, chat gpt , gemini та інших як на мене треба зовсім передивлятися підхід до тестових завдань взагалі. Бо більшість з цього може бути вирішено не людиною яку ви будете співбесідувати :)

Або підібрані так щоби AI не зміг вирішити )

Не завжди .. часто це не корелює з реальними задачами на проекті

Ці усі тестові завдання, вони швидше на комунікативні навички і на можливість діяти в стресовій ситуації співбесіди.
Часто народ не може зробити якісь примітивні речі по 15 хвилин, типу розгорнути масив у зворотньому напрямку, при чому можна користатись усім, що хочеш — можна гуглити, ChatGPT і т.д. Разом з тим коли проходиш співбесіду теж є такі таки діалоги — «Почнемо з того, що я напишу тест — Ні тестів нам не треба, нема часу — Тут може бути такий чи інший алгоритм — Ти не міг би мовчки, у нас мало часу».

Вони тепер стали більш комплексні. Мені пару місяців тому пропонували зробити цілу систему в якості тестового)

Мені здається, що маленькі лавкодінг задачки під час інтерв’ю спрацюють краще

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

вже безліч разів було говорено, що «лайв кодінг» працює в 50% людей. решта 50% впадают в ступор і мозок просто відключається.
А після інтервʼю рішення саме приходить в голову одразу після виходу з інтервʼю.

А Ті хто вирішують типові задачки на лайвкодінг сесії, не факт що также швидко будуть закривати більш складні таски

«лайв кодінг» працює в 50% людей. решта 50% впадают в ступор

ну і ок, будемо, значить, вибирати собі людей з перших 50%. Про них ми хоча б знаємо, що вони вміють в сякий-такий лайв-кодінг. Про другу половину ми не знаємо нічого.

Тобто про інші способи евалюейтити людей пан не чув? Так і запишемо.

Записуйте :) Стандартний спосіб найму у великі контори зараз кругом один: 5-6 раундів інтерв’ю з різними людьми: лайв кодинг, сістем дизайн, поведінікове, з менеджером, по предметній галузі. Наймають тих, хто пройшов всі. Не якесь одне добре, а всі. Якщо у когось «мозок не працює» і він пройде тільки 4 інтерв’ю з п’яти, без лайкодінгу, то наймемо ми того, хто пройде 5 з 5, з лайв кодінгом. От і все.

Серйозно? Що, Infopulse почав себе з FAANG порівнювати? )

Ну тобто то ж не секрет, що FAANG так робить? І при цьому фаанг випускає ті продукти, які випускає. Значить, щось він правильно робить?

Великі контори, це про галери? Ліл. Карго культ з аборигенів нікуди не вивели, так і запишемо :)
А хоча б дві сотні кілобаксів в рік вже платите?

А от даремно, може, галери такого не роблять. Є карго культ, а є принцип «fake it till you make it». Хочете дві сотні кілобаксів — ну так вмійте робити те, що роблять ті, кому платять дві сотні кілобаксів.

Це не відповідь на питання.

А хоча б дві сотні кілобаксів в рік вже платите

Я не вповноважений відкривати дані по зарплатам в тій, чи іншій компанії.

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

Так а до чого тут ви до нетфліксу?

будемо, значить, вибирати собі людей

Доречі, в нетфліксу нема єдиної полісі для найму

Так а до чого тут ви до нетфліксу?

Я от теж не розумію чого ми раптом мене вирішили обговорювати :) Я думав ми про найм в ІТ говоримо.

Можливо, тому, що ви будуєте речення в першій особі, коли оьговорюєте найм?

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

Я просто нагадаю, що свого часу, співбесіди про гномиків і люки — теж буди стандартом. Поки, їх всі не визнали дурницею. Деякі ретрогради подібні питання в Україні задавали ще в 2010их, коли в ФААНГах про них забули.
В тих же ФАПНГах працюють різні люди, деякі з них, не пройшли би

ми з наймаючим менеджером годинку потравили анекдоти

З причини тугоумства :) Принаймі я одного такого знаю.

Отак і маємо купу сучасних сервісів від великих контор, де все швидко й оптимально не виконує своїх задач.

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