Експеримент із 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 нашому застосунку і тепер можемо отримати доступ до файлів у кошику.
⚪Висновки:
- ChatGPT може видати код, який компілюється.
- ChatGPT може видати код, який робить щось зайве або має вразливості.
- ChatGPT може давати поради, але вони не завжди правдиві. І все треба мати досвід у домені, з яким працюєш.
- Як для пошукових систем, так і для 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 — як твій найліпший друг. Він ніколи не відмовить тобі в допомозі, але не гарантує, що ця допомога справді буде помічною.