ChatGPT та Мапи

3.png ChatGPT став революцією в розвитку ШІ. Вже в перші місяці після випуску GPT3 виникло тисячі стартапів, що використовують В цій статті буде мова про GPT-3 та його допомогу в нашому проекті.

SQL запити для статистики

В кінці грудня виникла ідея порахувати статистику повітряних тривог за 2022 рік та оформити це все у вигляді інфографіки. 3.png

Для технічної реалізації треба було написати низку SQL запитів, щоб кожен з них порахував статистику за різними критеріями. Тут вперше в пригоді і став ChatGPT.

Для початку описали боту коротко структуру бази і основні сутності, а потім попросили написати SQL запити просто описуючи, що треба порахувати. img.png

ChatGPT успішно справився з цією задачею, проте звісно були нюанси і код треба було підправляти.

Так, коли написали порахувати кількість тривог в залежності від фаз місяця, то бот вирішив використати зовнішню бібліотеку для Postgres. Проте пошук такої бібліотеки ні до чого не призвів. Згодом дізналися, що бот подекуди придумує певні сутності, яких насправді не існує. img.png Оскільки написати на чистому SQL’і було проблематично, вирішили згенерувати код на Python, який запише в базу фазу місяця для кожного дня 2022 року і тоді використати цю табличку для порівнянь. ChatGPT написав код програми на Python’і, але з ним виникли певні проблеми. Так, треба було використати стару версію бібліотеки для обрахунку фаз, оскільки бот знає лише про версію, що була актуальна на 2021 рік. А в новій версії API змінився, тому згенерований код просто не працював.

Навіщо ми рахували залежність тривог від фаз місяця? Це вже інше питання.

Зараз статистика доступна користувачам одразу на сайті. Для цього перевикористали самі SQL запити і зробили зручний інтерфейс для додавання нових метрик.

Сервіс моніторингу Telegram каналів

img.png

Telegram Monitor - це мікросервіс відповідає за відслідковування нових тривог в Telegram каналах та відправку їх на сервер обробки. Великою проблемою існуючого сервісу була доволі велика затримка(latency) між часом появою повідомлення в каналі та її фізичним отримання на сервері. Подекуди час затримки була більше хвилини!. На це скаржилися як користувачі, так і API розробники. Усі методи зменшення затримки, які знайшли в інтернеті не працювали і тому вирішили спробувати інший фреймворк для роботи з Telegram API.

ChatGPT тут був використаний для швидкої розробки Proof of Concept, а згодом і міграції існуючого коду.

Так, ми описали задачу і попросили написати код на Python, який буде відслідковувати нові повідомлення в Telegram каналах та відправляти їх на сервер обробки. Бот швидко згенерував код і згідно вимірювань затримка стала значно менша, в района 3-5 секунд. Після пари днів замірів було вирішено переписати код використовуючи інший фреймворк.

Але і тут в ChatGPT виникли проблеми з актуальністю знань. Бот знав версію, що була 2021 року, а в нових версіях були значні зміни в API, тому для останньої версії бібліотеки згенерований код просто не працював.

В цьому випадку код моніторингу був переписаний вручну, бо виходило більше часу виправляти “помилки” бота, ніж написати самому використовуючи документацію.

Збір даних

img.png Поряд з інформацією про тривоги ми також збираємо низку інших даних, які можливо використаємо для проєкту. Здебільшого це або парсинг REST API або повідомлень в Telegram каналах.

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

Шифрування

Для внутрішніх сервісів необхідно було реалізувати шифрування даних. Оскільки ми використовуємо декілька мов програмування, то код мав би працювати на всіх мовах. Тобто зашифрувавши на Python ми мали бути в змозі розшифрувати на Ruby і навпаки. Ніби проста задача, але, як завжди, були нюанси.

img.png

Згенерований код на Python запрацював практично з першого запиту, але от порти на інші мови не дуже.

ChatGPT використовував параметри шифрування, які не працювали коректно з стандартною бібліотекою Ruby. А після багатьох уточнень бот взагалі вирішив використати бібліотеку для Python в коді Ruby. Дивно ж бачити бібліотеку “pyaes” в коді Ruby?

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

Інші сфери використання

ChatGPT також використовувався для:

Які виникали проблеми?

А загалом?

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