Як оптимізувати роботу за допомогою ChatGPT. Досвід Junior Data Scientist
Усім привіт! Мене звати Денис Деркач, я 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 має недоліки. Потрібно уважно стежити за його відповідями та мати досвід у своєму напрямі, аби відловити помилки та неточності. Тому, перефразовуючи відому приказку, — питайте, але перевіряйте!
10 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів