Як ChatGPT веде за мене канал в Telegram і у нього це (майже) виходить — Частина 2

Передмова

Щоб розуміти, про що тут написано, бажано спочатку прочитати першу частину.

Воно живе (на перший погляд)

Після заповнення бази даних репозиторіями та їх описами, згенерованими ChatGPT, почали автоматично публікуватися перші пости в Telegram канал. Тексти були написані непогано, хоч і дещо неоковирно, але менше з тим, перша проблема, яку я помітив, полягала в тому, що текст іноді не відповідав реальному опису репозиторія. Схоже, що AI додавав деякі вигадані деталі, які не відповідали реальному опису. Після огляду інших записів в базі даних я зрозумів причину: ChatGPT не міг переходити за деякими посиланнями, і тому генерував описи на основі слів у посиланні або своїх власних знань. Наприклад, цей репозиторій містить проєкт, який перетворює код Python у машинний код, але AI описав його так:

🧬 Codon - це пакет Python, який надає інструменти для аналізу та візуалізації послідовностей ДНК та РНК. Він містить функції для перекладу послідовностей в послідовності амінокислот, ідентифікації відкритих рамок зчитування та обчислення статистики використання кодонів. Пакет також містить кілька інструментів візуалізації, таких як теплові карти та діаграми розсіювання, для дослідження патернів використання кодонів.

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

Систематизація проблем

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

  2. Згенеровані тексти іноді написані від імені автора Telegram каналу або власника репозиторія, наприклад "Хочу вам представити свій проєкт" або "Наш веб додаток пропонує".

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

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

  5. Сайт GitHub також може бути іноді недоступним, це буває не часто, але це також треба врахувати.

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

Красива, але безглузда маячня

Після детального дослідження офіційної документації та спілкування з ChatGPT я зрозумів, що він може "переходити" за посиланнями, але його база даних обмежена вереснем 2021 року, тому він не володіє даними про репозиторії, що з'явилися пізніше, і генерує текст на основі наявних даних або просто щось вигадує. А ще я хотів, щоб ChatGPT сам розміщував емодзі по тексту, вставляв посилання на проєкт, і взагалі писав текст якось прикольно. Проте, при явному зазначені цих параметрів у запиті, емодзі розміщувалися хаотично та іноді навіть повторювались декілька раз підряд, посилання на проєкт іноді не вставлялися, а сам текст був низької якості. Я вирішив модифікувати запит.

Завдяки боту я знайшов репозиторій з прикладами та інструкціями для використання OpenAI API та колекцією підказок для ChatGPT, які і допомогли мені сформувати новий запит. Ідея полягала в тому, щоб передавати текстовий опис репозиторія замість посилання на нього, а також просити ChatGPT генерувати емодзі, який відповідатиме змісту тексту. Як на мене, влучний емодзі завжди прикрашає текст🤔

Отже, алгоритм такий: бот відкриває посилання на репозиторій та зчитує текст опису. Після цього він видаляє приклади коду та перевіряє довжину тексту. Якщо текст занадто короткий (менше 300 символів), бот переходить до наступного репозиторію, оскільки з 300 символів складно згенерувати адекватний опис. А якщо текст занадто великий (більше 10 000 символів), то він обмежується до цієї довжини, з надією, що вирізання лишнього тексту не завадить згенерувати адекватний опис. Такий ліміт було встановлено через неможливість ChatGPT обробити настільки великий текст. І нарешті, отриманий текст даємо ChatGPT і просимо згенерувати короткий (не більше 600 символів) опис.

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

Займенники

Суть проблеми полягала у тому, що ChatGPT час від часу генерував текст від імені автора каналу або власника репозиторію, що виглядало досить кумедно, але я вирішив це виправити, додавши відповідне прохання в запит:

Ти не повинен використовувати займенники 'я', 'ми', 'наш' у своєму тексті

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

Поганий переклад українською

Спочатку я писав запити до ChatGPT українською, але якість створених текстів мене не задовольняла. Тому я вирішив писати англійською та перекладати результати за допомогою того ж ChatGPT на українську. Стало краще, але іноді штучний інтелект перекладав власні назви, назву проєкту, чи технічні терміни, що виглядало доволі комічно:

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

Я також розглядав можливість додати до бота сервіс перекладу, наприклад, DeepL, який має досить високу якість перекладу. Але він, як я зрозумів, недоступний в Україні. Іншим варіантом був Google, але він платний. Ще я знайшов один безкоштовний сервіс, але якість перекладу там була приблизно як у ChatGPT.

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

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

Технічні проблеми

Тут я об'єднаю 4 і 5 пункти. Ідея для випадків, коли сервіси, звідки бот бере дані недоступні, така:

  1. Бот кожного дня в 09:00 і в 16:00 намагається знайти репозиторій в GitHub і потім за допомогою ChatGPT згенерувати текст та зберегти йогу в базу даних.

  2. Якщо один з сервісів недоступний, бот буде намагатись з'єднатися з сервісом кожну хвилину протягом 5 хвилин.

  3. Якщо нічого не вдасться, тоді бот зачекає трохи, і починаючи з 9:30 або для вечірнього посту з 16:30, кожні 10 хвилин буде шукати репозиторій і намагатися згенерувати текст, і так до 50 хвилин.

  4. Якщо все вдалося, то в 10:00 і в 17:00 в канал буде опубліковано повідомлення.

Мені здається, що цього достатньо при короткочасних проблемах у роботі сервісів. Була ідея генерувати повідомлення заздалегідь, наприклад, раз на тиждень або за декілька днів до публікації, щоб мати заготовлені пости. Також була ідея мати резервні джерела, наприклад якщо GitHub не доступний, я міг би брати інформацію з сервісу OSS Insight який я згадував у першій статті. У ChatGPT альтернатив немає, хіба що Bing в якого немає офіційного API але є цікавий проєкт за допомогою якого все ж можна робити запити, але доступність Bing ймовірно залежить від серверів OpenAI. Також є Bard від Google, який наразі недоступний в Україні. Проте на даний момент алгоритм залишається таким, як я описав вище.

Проблему вирішено? Думаю, частково . Якщо сервіси, за допомогою яких бот генерує пости будуть недоступними, наприклад, протягом доби, то звісно, нічого не буде працювати, але для короткочасних перебоїв це спрацює.

Фінальний алгоритм (спрощено)

  1. В назначений час бот починає дуже старанно шукати трендовий репозиторій.

  2. Зчитує та форматує текст опису знайденого репозиторія.

  3. Отриманий текст дає ChatGPT і просить згенерувати короткий опис та один емодзі релевантний тексту.

  4. Просить перекласти текст українською.

  5. Записує результат в базу даних.

  6. В назначений час бот заглядає в базу даних, формує і відправляє повідомлення в групу Telegram.

Підсумки

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

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

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

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Олександр
Олександр@sigmanor

425Прочитань
0Автори
19Читачі
На Друкарні з 14 квітня

Більше від автора

Вам також сподобається

Коментарі (2)

Цікаво про Телеграм-ботів, не так давно почала цікавитись програмуванням, вивчила синтаксис Python. Тому чекатиму цінну для себе інформацію тут)

Нещодавно створила свій ТГ-канал для вивчення англійської “Yes,I do!”, можна долучитись за посиланням https://t.me/english_came_saw_won.

Вам також сподобається