Експеримент із ChatGPT. Ми попросили айтівців поставити чат-боту задачі з розробки — ось що з цього вийшло

18 лютого ChatGPT — нейромережевий чат-бот від OpenAI, реліз якого запустив нові перегони big tech у сфері штучного інтелекту, — став доступним на території України.

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

Сергій Бутенко, Software Engineer CleanMyMac у MacPaw

Я вирішив попросити ChatGPT знайти у кошику файли, які видаляє CleanMyMac.

❔ Запит: Find trashes files on macOS using Swift

❕ Відповідь:

Виглядає нормально, хоча я не просив видаляти ці файли. А якщо запустити цей код, то ми отримуємо «The file „Trash“ couldn’t be opened because you don’t have permission to view it».

Так і скажемо ChatGPT.

❕ Відповідь:

ChatGPT каже, що треба запустити застосунок від root, але нам це точно не підходить. Знайти теку у Finder неможливо, бо вона системна і не відображається. Що ж, ми в розпачі.

❔ Запит: It doesn’t help

❕ Відповідь:

На жаль, нічого з цього не допомагає. Поради дуже загальні й не стосуються саме кошика. Експерти підказали: проблема в тому, що у застосунку немає Full Disk Access. Перевіримо, чи це правда.

❔ Запит: Is it because of a lack of full disk access?

❕ Відповідь:

Нарешті ми з’ясували, у чому проблема! Ми надали FDA нашому застосунку і тепер можемо отримати доступ до файлів у кошику.

⚪Висновки:

  1. ChatGPT може видати код, який компілюється.
  2. ChatGPT може видати код, який робить щось зайве або має вразливості.
  3. ChatGPT може давати поради, але вони не завжди правдиві. І все треба мати досвід у домені, з яким працюєш.
  4. Як для пошукових систем, так і для ChatGPT треба правильно підбирати запит. Наприклад, вказувати, що ти хочеш код на Swift і саме під платформу macOS. Тобто дати якомога більше обмежень, щоб отримати максимально релевантну відповідь.

Володимир Кирилов, Machine Learning Engineer у Zencastr

Нещодавно я працював з методами генерації текстів з моделі GPT-2. У моєму редакторі відкрита реалізація алгоритму Beam Search, яка вже обросла складними конструкціями. Чи може ChatGPT додати мені свіжих ідей?

❔ Запит: Implement beam search decoding from GPT-2 from scratch a pretrained model

❕ Відповідь:

Я припустився помилки в запиті, і модель все одно згенерувала потрібну мені відповідь.

Написаний код достатньо простий і поєднує тензори PyTorch і стандартні структури даних у Python. Алгоритм залежить від гіперпараметрів, і бот запропонував мені практичні значення.

Пояснення алгоритму містить його основну ідею — для кожної послідовності згенерували beam_width найкращих токенів, отримали beam_width^2 кандидатів. Відсортували всі послідовності за оцінками, залишили найкращі beam_width послідовностей, побігли далі. Запам’ятаю це формулювання для наступної дискусії з колегами.

Пояснення алгоритму

Чи працює цей код? Для перевірки скопіював його в новий файл і побачив список з найкращих п’яти послідовностей:

Працює!

Перевірка

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

❔ Запит: use huggingface beam search implementation on the same example with the same parameters

У відповідь отримав задовгий код. Я запустив його та отримав помилку. Повернув її боту.

❔ Запит: ImportError: cannot import name ’BeamSearchDecoder’ from ’transformers’

Бот пробурмотів щось про версії трансформерів і дав новий, коротший і кращий код, а головне — він працює.

Тут я дізнаюся про магічний параметр `no_repeat_ngram_size`, який робить щось нове. Запам’ятаю! Для мого тесту виставлю цей параметр у 0 у своєму редакторі.

Я бачу, що цей код генерує тільки одну послідовність. Прошу бота виправити це.

❔ Запит: Use the same hyperparameters as the original code

Так, бот вгадав параметр num_return_sequences!

Працює!

⚪ Висновки

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

Владислав, Front-end Developer

Ще роки чотири тому я разом з друзями кілька місяців пововтузилися з однією задачкою — ми намагалися її розв’язати, але за умови не піддивлятися відповіді деінде. Далі ви побачите максимум, до якого я дійшов :)

Коли в Україні розблокували ChatGPT, я подумав, що використати допоміжний інструмент — це не шахрайство.

Спочатку я просто скопіював завдання і лише трошки змінив його.

Цей код міг би працювати, але мав проблему: там не було назви функції, яка є обов’язковою і незмінною, тож я продовжив спроби.

Певний час ми продовжували діалог. У ChatGPT виникла проблема з розумінням, що є solution та code. Я намагався його навчити, але це не давало бажаного результату: чат то генерував неробочий код, то робочий, але неправильно. І пропонував лише довгі відповіді, тоді як за умовами задачки рішення мало містити не більше ніж 53 символи. Чат переконував мене, що це неможливо.

У певний момент мені стало соромно за ChatGPT і я вирішив на нього «биконути». Вийшло кумедно.

Я пояснив, що запропоноване мною рішення не задовольняє умови задачі, адже весь код, включно з функцією, має бути не більшим за 53 символи. Сподівався, що це допоможе чат-боту знайти розвʼязок. Втім не допомогло. У певний момент ChatGpt взагалі мені повернув мій же код.

Через деякий час я полишив спроби, бо втомився. Навіть із ChatGPT я не розкусив задачку, зате переконався, що про втрату роботи розробника ще на 100% зарано турбуватися. Ну й колись зможу казати онукам, що навіть «Скайнет» визнав мій геній і покажу ці скриншоти :)

⚪ Висновок: ChatGPT — як твій найліпший друг. Він ніколи не відмовить тобі в допомозі, але не гарантує, що ця допомога справді буде помічною.

TelegramВсе про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось24
До обраногоВ обраному3
LinkedIn



29 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Кому цікаво пропоную спробувати такі сайти eduwriter.ai та myessaytyper.ai вони базуються на технології ChatGPT

Склалося враження, що приклад Сергія Бутенка навмисно з поганою постановкою задачі і такими ж подальшими підказками. Звісно, на

Запит: It doesn’t help

буде найзагальніша відповідь. Запит «Is there any solution without root access?» було б набагато цікавіше подивитися. Мабуть, Сергій занадто сильно боїться, що робот забере його роботу

Легко может выдать некорректное решение. Если ему указать на это — он исправится. Но это если знать что решение некорректное )

Не всегда оно исправится. Еще и будет настаивать что все правильно:

> Me: is explicit Begin Transaction call compatible with EnableRetryOnFailure strategy?
> ChatGPT: Yes, the explicit BeginTransaction call is compatible with the EnableRetryOnFailure strategy in Entity Framework Core.

```
using var context = _dbContextFactory.CreateDbContext();
using var transaction = await context.Database.BeginTransactionAsync();
try
{
await context.SaveChangesAsync();
await transaction.CommitAsync();
}
catch (Exception ex)
{
await transaction.RollbackAsync();
// Handle the exception
}
```

Мне так и не удалось убедить ChatGPT что код выше свалится с ошибкой.

согласен, не всегда исправляется. бывает что просишь исправить — он начинает по-новой тоже самое.

Дайте лінку на малюнок кота з телеграм каналу )

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

Йеп, саме тому мені здається що йому буде важко працювати з vsdl дизайном чіпів і різною інженерією. Він круто вчиться з промптів доречі...

готувався до співбесід за допомогою ChatGPT, як альтернатива пошуку матеріалу аля «нагадати собі вектор» — дуже непогано, якщо брати до уваги швидкість пошуку матеріалу порівнюючи із тим же гуглом (гугл повільніше бо дуже багато сміття у результатах). Але є одно но, треба перевіряти, бо неодноразово застукав за брехнею. Типу видав OWASP top ten 2017 як 2021, але в 2021 усе звісно що змінилося.

Тобто як казали у коментарях — усе треба допилювати напилком

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

Terraform/ansible/gitlab/jenkins CI кофіги пише норм. Без складних та запутних expressions, але інфра деплоіться і на AWS, і на GCP. Навіть якийсь дефолтні values підставляє. Для всяких dev енвайрментів ОК. Ай пайдьот!
На прод таке деплоіти поки не можна, доводиться ще трохи «напильником» доточуівти. Імхо, дуже економить час для різних рутинних девопс тасків. Особисто мені вже замінює парочку індусів на проектах:).

removeZeros=a=>(+a.join(’’)+’’).split(’’).map(a=>+a)
я щось туплю чи задача надто легка з другого прикладу спілкування?)

Вона ще й нерепрезентативна для буденних завдань

вона видаляє 0 тільки спочатку, а потрібно ще в кінці

Сгенерував код все красиво, але він допустив декілька помилок. Почав питати чому він обрав таке рішення. Він почав щось дуже абстрактно писати, та наче забувати попередні відповіді. Тільки через декілька промптів де було максимально детально прописане запитання стосовно того чим саме він керувався коли обирав таке рішення то він написав що «вибачте, я переплутав», це дословно :).

Що він гарно вміє робити це рефакторити. Головне правильно задати промпт типу: зроби код більш зрозумілішим, щоб не було великих методів, та складних if/else jкнструкцій. Або перепиши щоб це не порушувало пинцип відкритості, закритості SOLID.

Я заметил, что с тех пор, как ввели платную опцию, бесплатная стала гораздо «тупее» что ли того, что было раньше. Теперь он бывает заикается даже на имплементации каких-то простых вещей типа фреймворкспецифичных запросов

Зустрічайте AWS Nerdless Express Solution Wizard!

Клієнт вводить текстом у великий інпут свої бізнес-потреби (або надиктовує на айфон на кшталт аудіо/відеоповідомлень Телеграму), AWS автоматично розгортає інфраструктуру, генерує додатки та мейнтейнить систему.

ІТ-еліта відправляється у безстроковий сабатікал на universal basic income.

ІТ-еліта відправляється у безстроковий сабатікал

і стає сантехніками/електриками, бо нейронка ще не навчилась крутити гайки та прокладати/фіксити електрику у квартирах :)

Так і іт-еліта цього не вміє зазвичай)

деякі електрики/сантехніки — теж не вміють, але це не заважає їм отримувати гроші

кодить колись також не вміли, але нічо, навчились)

Як добре що прості кодери не не ІТ-еліта, от Solution Architect-ам не позаздрю тепер.

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

Сьогодні спробував прогнати простий фрагмент коду попросивши заімпрувити. Видав якусь повну дічь про те, що return з synchronized блока може привести до меморі ліка, при цьому не побачивши те, що в коді використовується magic number.

А так є в принципі нормальні поради по коду, якщо прогнати інші фрагменти, хоча 90% порад просто вкусовщіна.

Мабуть, magic number у коді заважає тільки шкіряним мішкам, бот не проти частки магії в коді )

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

Ти сам так працюєш, коли не в темі. Звісно коли в темі, працюєш ще швидше за той ШІ — береш шаблон із попередніх наробок і готово.

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

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

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