
Передмова
Ця стаття є самодостатнім графоманським потоком свідомості, що намагається впорядкувати хаос думок навколо теми, яку ви бачите в заголовку. Вам не обов’язково мати будь-які знання у програмуванні чи штучному інтелекті, але я вас трохи завантажу різними термінами (з поясненнями).
Для більшого занурення у контекст ви можете почитати попередні статті - раз і два, це не обовʼязково, бо ця частинна є компактним рімейком перших двох.
Ідея, проблема і рішення
Десь у далекому 2023 році мені захотілось знайти Telegram канал з постами про цікаві GitHub репозиторії, бо я розробник, й іноді хочеться знайти цікаві інструменти або надихнутись якимось проєктом з відкритим кодом.
GitHub — це онлайн-платформа, де зберігають і діляться проєктами, найчастіше пов’язаними з програмуванням. Тут можна переглядати чужий код, користуватись ним (з урахуванням ліцензії) або працювати над проєктами разом з іншими.
Я провів невелике дослідження і не знайшов такого каналу українською. Оскільки за вікном окрім російських ракет був ще розквіт штучного інтелекту, ідея сформувалась сама!
Написати програму яка буде брати репозиторії з трендів самого GitHub, за допомогою штучного інтелекту генерувати гарні тексти, і автоматично публікувати ці тексти в Telegram канал. Загалом задача не складна, вона розв’язує мою проблему, і можливо покриває потреби інших.
Отже, я озброївся своїм улюбленим редактором коду і mvp був готовий в той же вечір.
MVP (мінімально життєздатний продукт) — це найпростіша версія продукту, яка вже виконує свою основну задачу і яку можна показати людям, щоб перевірити, чи взагалі комусь це потрібно (спойлер, виявилось що нікому).
Далі я зіткнувся з першими проблемами:
- якість генерованого тексту була не найкраща;
- оскільки це була перша версія коду вона мала помилки, була не досконала і потребувала покращення;
- тексти були то великими, то маленькими, то взагалі не відповідали дійсності.
Але ідея працювала, тому я почав це все виправляти.
How it started / How it's going

Дуже багато часу було проведено над пошуком ідеальних інструкцій для штучного інтелекту. Враховуючи стрімкий розвиток технологій, почали з'являтись все нові великі мовні моделі (LLM).
Спочатку я використовував ChatGPT від компанії OpenAI.
Тоді це було напевно єдине і саме потужне рішення, але через те, що це був тільки початок, воно мало багато проблем. Наприклад, самі тексти іноді були якісь, штучні (неймовірно, так? штучний інтелект генерував штучні тексти 😄), і читались як дуже поганий переклад з англійської мови.
Були ідеї генерувати тексти англійською, так вони мали кращий вигляд, і потім просто перекладати, але не вийшло, бо якісний переклад коштував грошей.
Також була ідея перекладати згенеровані тексти тим же штучним інтелектом, але вихідний результат мені все одно не подобався. Штучний інтелект іноді губив сенс, і тексти виходили якимись безглуздими. В цій ідеї все залежало саме від штучного інтелекту, я хотів, щоб згенеровані тексти були хорошими, тому я багато експериментував в той час.
Згодом я відкрив для себе Mistral AI
Mistral AI — французька компанія, що спеціалізується на розробці відкритих та ефективних мовних моделей. Заснована у 2023 році, швидко здобула популярність завдяки своїм потужним LLM, які можна вільно інтегрувати в комерційні та некомерційні продукти.
Mistral пропонував дешевші рішення, і, на перший погляд, ці рішення справлялись краще ніж аналогічні від OpenAI. Тексти виходили менш штучні (диво як для штучного інтелекту), українська мова вже не читалась так наче ці тексти переклали з англійської дуже поганим перекладачем. Загалом мені подобалось. Сенс тексту все ще втрачався іноді, але я знав що прогрес не буде стояти на місці, і стане краще.
На цьому рішенні я і зупинився, сам проєкт не сильно поповнювався новими функціями, він просто працював, і тому я його не чіпав, та і не було бажання та ідей.

Ще тоді я почав думати про подальший розвиток, адже першочергово ідея була створити автоматизований Telegram канал.
Чи думав я, що на цьому можна буде заробити? Або продати комусь саму ідею? - так, адже такий канал можна адаптувати під будь-який контент. Оскільки я це пишу не зі свого приватного літака, то це не зайшло далі розмірковувань. Тоді я написав перші дві статті, де описав весь тернистий шлях, після чого мені написали пару людей які зацікавились в цій ідеї, але далі розмов справа не пішла.
Але попри все я залишився задоволеним результатом, бо першочергово я хотів Telegram канал в якому будуть публікуватись цікаві GitHub репозиторії, при цьому я підійшов до розв'язання проблеми за допомогою цікавих нових технологій і програмування, тому я отримав задоволення як від процесу, так і від результату.
Версія 2.0 - Масштабування
І от десь в кінці 2024 року я відчув що пора.

З'явилась ідея і сили масштабувати проєкт. Звідки зʼявилися сили? Я не знаю, це було непереборне бажання писати код. Захотілось, щоб публікації були не тільки в Telegram, а й, наприклад в Twitter(x) або ще десь. І захотілось опублікувати вихідний код у GitHub (так, весь цей час код проєкту був закритим). Погоджуюсь, це дуже абсурдно що проєкт який має на меті ділитись зі світом проєктами з відкритим кодом сам не був відкритим.
Перше, що я зробив, почав приводити код до ладу перед публікацією, і під час цього виснажливого процесу я зрозумів — воно взагалі не масштабується. Фактично у мене на руках був Telegram бот який за допомогою штучного інтелекту створював тексти та публікував їх в Telegram каналі по розкладу. Тому я створив план як переписати майже увесь код. Переписав. Опублікував, і почав втілювати у життя другий пункт плану - МАСШТАБУВАННЯ.
Була ідея точно публікувати пости у Twitter(x) WhatsApp і Bluesky.
Bluesky — це соціальна мережа для тих, хто втік з Twitter, коли він став X. Тут всі говорять про децентралізацію, але поки що головне досягнення — це те, що можна знову писати твіти, які не називаються твітами.
При швидкому вивченні питання було виявлено, що працювати з Twitter(x) та Bluesky офіційними методами дуже легко, а от з WhatsApp були деякі проблеми. Офіційний метод вимагав фінансів, а неофіційний метод загрожував блокуванням акаунту. Лишніх грошей витрачати я не хотів, тому написав реалізацію на основі неофіційного методу, але наразі я її не використовую, хочу створити додатковий акаунт для такого експерименту.
В результаті проєкт дуже змінився “під капотом”, тепер його було легко масштабувати, якби я захотів додати нову інтеграцію з якоюсь соц. мережею.
Ще я зробив зручну панель для управління контентом який буде публікуватись і можливістю генерувати контент самому з посилань на GitHub репозиторії.

Раніше цю роль виконував Telegram бот, але в процесі переписання коду я зрозумів, що не хочу прив'язуватись до однієї платформи в цьому питанні, та і хотів трохи розвинути свої front-end навички.
Front-end — це все, що ви бачите і з чим взаємодієте на сайті або в застосунку: кнопки, тексти, картинки, меню. Він відповідає за зовнішній вигляд і зручність користування.
Оскільки прогрес у сфері штучного інтелекту рухається доволі швидко, я зрозумів, що не потрібно обмежуватись одним Mistral AI, тому після деяких тестів я повернув у код інтеграцію з OpenAI та ще додав інтеграцію з однією доволі цікавою штукою - OpenRouter.
OpenRouter — це платформа, яка дозволяє підключатись до різних мовних моделей (наприклад, GPT, Claude, Mistral) через єдиний інтерфейс. Користувачі можуть обирати модель під свої потреби, експериментувати та порівнювати результати без зайвих складнощів.
Інтеграція з OpenRouter дає мені змогу легко тестувати будь-які LLM, а отже швидше обирати найефективніші рішення та експериментувати з різними підходами. А ще цей сервіс буде корисний не тільки для розробників, а і для інших користувачів, адже він надає зручний інтерфейс у вигляді чату який дозволяє спілкуватись майже з будь-яким штучним інтелектом.

Підсумовуючи цей період непереборного бажання писати код, зміни в архітектурі проєкту допомогли позбавитись помилок в коді, які призводили до аварійних завершень програми, чи критичних помилок коли пост не публікувався. Еволюція у сфері штучного інтелекту та якісні інструкції позбавили мене проблем з поганими текстами. На цей час робота над проєктом знову трохи уповільнюється, до нових непереборних приступів писати код.
Післямова
Інколи мені здається, що цей проєкт — це моя персональна форма прокрастинації, просто дуже складна. Я не знаю, чи він колись стане чимось більшим, ніж просто хобі. Але якщо він надихне когось зробити щось подібне, або навіть просто прочитати статтю і подумати “прикольно” — цього вже достатньо.
Мене часто тягне до автоматизації всього, що тільки можна (і не можна).
А додавши до цього бажання трохи штучного інтелекту, можна створювати неймовірні речі, які можливо заберуть в когось роботу, але це не точно, тому не хвилюйтесь.
Корисні посилання
Вихідний код проєкту - https://github.com/think-root
Telegram канал - https://t.me/github_ukraine
Twitter(x) - https://x.com/sigmanor