Як оптимізувати роботу за допомогою ChatGPT. Досвід Junior Data Scientist

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Усім привіт! Мене звати Денис Деркач, я Junior Data Scientist в продуктовій IT-компанії Quarks. Це моя перша робота, яку я здобув після курсу продуктової аналітики від компанії в КНУ ім. Тараса Шевченка. Зараз я займаюся підтримкою наявних аналітичних сервісів та пишу нові, використовуючи машинне навчання на Python.

18 лютого ChatGPT почав офіційно працювати в Україні — й багато фахівців різних напрямів вирішили спробувати його в роботі над щоденними завданнями. Я теж не залишився осторонь — спочатку мені стало цікаво розібратися з можливостями чат-бота, а згодом я зрозумів, наскільки це потужний інструмент. Маю сказати, що ChatGPT може стати хорошим помічником, якщо потрібно знайти відповідь на складне запитання або автоматизувати частину роботи. Втім, є й недоліки, які теж варто взяти до уваги.

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

Кейс з AWS bucket

Завдання звучало приблизно так: налаштувати автоматичне перетренування моделей. У межах цієї таски потрібно закидати моделі в AWS S3 bucket. До цього я взагалі не працював з AWS, і знав лише те, що S3 — це певне сховище. Зазвичай я починаю роботу з пошуку прикладів та читання документації, але цього разу мав намір стартувати зі спілкування з ChatGPT.

Особисто для мене найзручніше розбиратися в новій темі на прикладах, тому я прошу ChatGPT написати код на Python, який завантажує в S3 bucket певний файл.

Звичайно ж, цей код не буде працювати, доки ми не створимо bucket і не додамо його назву. Тому прошу ChatGPT написати відповідний флоу. В цьому bucket буде лежати sensitive data, тож його обов’язково потрібно зробити приватним.

Йдемо за флоу й створюємо тестовий bucket. Не забуваємо змінити назву файлу на наявний та встановити бібліотеку boto3. Знову намагаємося виконати код і... він не працює. Видає помилку «Unable to locate credentials». Запитаємо ChatGPT, у чому справа.

Пише, що потрібно креди для доступу. Але що це за креди й де їх узяти?

Йдемо за флоу, додаємо секрети і... все працює!

Тепер опишемо технічні деталі та попросимо його переписати код.

Всього 20 хвилин — і модельки вже завантажуються на AWS! І, що не менш важливо, — це було дуже просто й зручно! Мені навіть код не довелося писати, тільки прокоментувати.

Які можу зазначити переваги

✅ ChatGPT гарно розуміє питання, пам’ятає контекст, сприймає людську мову, завдяки чому пошук відповіді на запитання стає значно легше.

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

Щодо недоліків

❌ ChatGPT може відповісти на запит, але пропустити важливі деталі. Наприклад, коли бот розповідав про додавання AWS_ACCESS_KEY_ID та AWS_SECRET_ACCESS_KEY до environment variables, він показав, як це можна зробити в коді з використанням os.environ. Однак зберігати секретні дані у коді програми — це небезпечна практика.

❌ Сам ChatGPT визнає, що такий підхід не надійний, але поки не розуміє, чому це важливо.

Пояснення до коментарів у code review

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

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

Крім того, можна попросити ChatGPT використати конкретний патерн (адаптер).

Оптимізація SQL-запитів

Для початку передамо йому сам запит.

Зауважимо, що цей запит в базі виконується приблизно 60 секунд (з LIMIT 500). Запропоноване рішення хоч і не змінило швидкість, однак спростило запит. Поки рішення нема, тому просимо інші варіанти.

Тестимо запит з пункту 1 — працює приблизно за 45 секунд. Бачимо зайвий DISTINCT — дублі тільки в таблиці isolated, джойну більше нема. Прибираємо — і запит працює приблизно за 20 секунд. Такий результат мене цілком влаштовує.

Загалом, ChatGPT не надто гарно розуміє SQL-запити, але він може порадити, на що варто звернути увагу.

Тексти та допомога в навчанні

Ви точно вже не раз чули про ці здібності ChatGPT, але це занадто крута фіча, щоб не згадати її тут.

Ось ще пара прикладів використання ChatGPT. Вони останні в переліку, але не за значенням. Чат-бот допомагає, коли мені потрібно:

  • вивчати Go. Це друга для мене мова програмування. Часто трапляється так, що я розумію мету, але не знаю, як її досягти. Тоді я формулюю запитання та отримую досить чіткі відповіді від ChatGPT;
  • шукати нові інструменти та методи для вирішення проблеми. Наприклад, нещодавно чат-бот допоміг мені дізнатися про rule-based classifiers, які дають змогу автоматично знаходити евристичні правила, та про бібліотеку pandas-profiling, завдяки якій можна швидко та зручно проводити data exploratory analysis.

Що потрібно врахувати при використанні

ChatGPT, безумовно, потужний інструмент, втім він має помітні недоліки.

1. Іноді чат-бот дає відповідь на запит, але пропонує не найкращі рішення.

Ось, наприклад, відповіді на одне й те ж питання.

Перший варіант:

Другий варіант:

У першому випадку ChatGPT проігнорував фразу `in one command`. А от на другий раз зробив саме те, що потрібно.

Це означає, що для точної та конкретної відповіді потрібно надати ChatGPT максимум контексту. Інакше результат спрогнозувати важко: він один раз напише код на Python з type hint-ами, а другий — без; один раз скаже, що секрети не варто зберігати в коді, а потім забуде про це.

2. Чат-бот не завжди відповідає правильно, навіть коли йому вказали на помилку.

Наприклад, я хотів використати бібліотеку для автоматичної генерації swagger-документації для Golang Gin. ChatGPT сказав, що є кілька подібних ліб, зокрема gin-swagger та go-swagger. Але коли я попросив його написати код для go-swagger, він написав його для gin-swagger. Щоби зрозуміти, чому go-swagger не генерує док (генерує пустий), довелося переглянути документації обох ліб.

Я написав про це ChatGPT. Він відповів, що все виправить, і... знову написав код для gin-swagger. Тоді я вказав, що go-swagger використовує анотації певного вигляду й почав міксувати їх для двох бібліотек.

Тепер код набагато легше адаптувати під себе.

Питай, але перевіряй

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

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

Водночас як і будь-який інструмент, ChatGPT має недоліки. Потрібно уважно стежити за його відповідями та мати досвід у своєму напрямі, аби відловити помилки та неточності. Тому, перефразовуючи відому приказку, — питайте, але перевіряйте!

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

Якось спробував з ChatGPT витягнути воркераунд на обмеження фреймворку, то він давав або неробочій код (ну тобто принципово неробочий через те саме обмеження фреймворку), або взагалі якусь нісенітницю. Причому було видно, що в його датасеті документація була, бо приклади писав гарні.
Так що поки це працює хіба що як заміна роботи з наявною документацією.

Статті в Genesis це тепер обов’язкова умова для підвищення винагороди?

Так як i токсичнiсть — умова пiдвищення в DocHQ

В мене такий пункт в договорі відсутній

Мені для підвищення достатньо добре розбиратись в DDD, а в одній з попередніх компаній то потрібно було вивчити Elasticsearch, React та Webpack.

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

тоді ви прийдете в коментарі, залишите токсичний і отримаєте підвищення)

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

Продуктивніше уникати токсичності як явища)

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

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