Від ідеї до прототипу: як ми створювали AI-проєкт для хакатону
Привіт! Мене звати Павло Малітов, я Full-Stack Engineer у компанії Levi9 з понад
У цій статті ділюся історією участі в хакатоні Hack9 2024 — про те, як невелика команда, всього лише з двох людей, за чотири дні зібрала повноцінний AI-прототип, який посів друге місце. Це був інтенсивний, але дуже надихаючий досвід, про який хочеться розповісти.
Точка входу: як все починалось
Hack9 — це внутрішній хакатон Levi9, який об’єднує учасників з різних офісів. Останні два роки фокус — на штучному інтелекті. Цього разу темою стали Generative AI та LLM. Участь взяли близько 100 людей у складі 18 команд.
Перед стартом відбулись кілька воркшопів — про пошук AI-ідей, локальний запуск
GenAI цікавить вже давно, і цього разу я вирішив зібрати власну команду — якраз була ідея, яка довго чекала свого часу. Ми працювали над платформою, що генерує персоналізовані плани навчання. Хотілося створити щось на кшталт roadmap.sh, але з адаптацією під конкретного користувача й можливістю відстежувати прогрес.
Процес подачі заявки на участь пройшов швидко. Назву для команди згенерував Claude — GANgsters’ Paradise. Вона одразу привернула увагу, і помітивши відсилку до Generative Adversarial Networks (GAN), сумніви розвіялись — назву було збережено.
До старту залишалося зовсім небагато, а я все ще був єдиним учасником своєї команди. Поки інші вже сформували команди по
AI as a Judge
Найцікавішим моментом стало те, що звичне для нас суддівство цього разу повністю замінив штучний інтелект. Оскільки головною перевагою такого підходу мала бути неупередженість, AI-суддя отримав ім’я Themis — на честь грецької богині правосуддя. Від самого слова суддя в мене з’явився флешбек з фільму Суддя Дредд. Саме такі очікування були від Themis у ролі арбітра.
Очікування, на щастя, не справдилися. Організатори розробили спеціального AI-агента, який без людського втручання аналізував подані проєкти та оцінював їх за чіткими правилами. Критерії залишались таємницею до самого фіналу, тож інтрига трималась до останнього.
Ідея полягала в тому, щоб створити автономну систему оцінювання на базі AI-агентів. Її логіка ґрунтувалася на так званому
1. Перший етап: Presentation transcript
AI аналізував транскрипт презентації. Оскільки подія транслювалася через Microsoft Teams, найзручніше було скористатися вбудованим інструментом транскрибування. Далі штучний інтелект оцінював, наскільки зрозуміло команда подала свою ідею, на чому робила акценти, і формував короткий висновок для наступного етапу.
2. Другий етап: Scoring individual categories
На цьому етапі оцінювалися п’ять окремих характеристик, серед яких: README проєкту, скріншоти інтерфейсу, UX-рішення та висновок з першого етапу. Документація мала велике значення — саме тут команди могли детально описати свій підхід, використані технології й подальші плани.
Привіт, prompt injection.
Проєкти отримували оцінки від 1 до 10 за такими категоріями:
- Usefulness
- Innovation
- Technical quality
- Completeness
- Presentation
- UX/UI Design
Кожна категорія мала власну вагу залежно від важливості, тож підсумковий бал був точнішим. Також на цьому етапі формувався фінальний висновок, на основі якого AI-агент наступного етапу порівнював проєкти між собою.
3. Третій етап: Comparing all projects
На цьому етапі, маючи всю необхідну інформацію про проєкти, Themis проводив порівняльний аналіз: оцінював усі роботи відносно одна одної та формував загальний рейтинг. Назви команд і імена учасників при цьому видалялися — для збереження неупередженості. Проєкти з найвищими оцінками отримували додатковий «бонус», пропорційний їхньому місцю в рейтингу.
Після фінального підрахунку балів визначили переможців. На цьому етапі ми дізналися, що наша команда посіла друге місце.
Ідея та цінність рішення
Ми з колегою працювали над інструментом для тих, хто хоче вчитись усвідомлено. Він не просто підкидає чергову добірку курсів, а будує маршрут — залежно від цілі, рівня та способу, в який людині зручно навчатись. Платформа розв’язує проблему хаотичного та неструктурованого навчання, коли ти не знаєш, які ресурси краще обрати та в якому порядку їх проходити. Замість нескінченних пошуків кращих ресурсів, LLM аналізує ціль користувача, поточний рівень знань та особисті вподобання в навчанні. Список питань і відповідей на цьому етапі формується динамічно — жодного хардкоду, все залежить від конкретного топіка.
На основі цих даних AI-агент генерує навчальний план і шукає відповідні ресурси в пошуковій системі. В результаті юзер отримує покроковий план з орієнтовним часом на проходження кожного навчального блоку, action points та списком релевантних ресурсів.
Таким чином, платформа позбавляє від неконтрольованого блукання серед величезної кількості джерел та вкладок. Хотілося додати можливість окремо редагувати блоки, щоб персоналізація була справді гнучкою. Але, як це часто буває, довелося пожертвувати деякими фічами, аби вкластися в дедлайн.
Технологічний стек
Під капотом у нас був класичний на 2025 рік стек, трохи приправлений бібліотеками для роботи з AI. Для фронтенду вибрали Next.js та shadcn/ui, адже хотілося почати швидко і не залипнути на виборі кнопок. Для роботи з LLM та агентами використовували LangChain.js та LangGraph.js. Я б сказав, що ці бібліотеки на любителя. Бувало таке, що після мінорних апдейтів вилазили невідомі баги, й твій апп просто переставав нормально працювати 😄 Якщо чесно, то все це діло хостилось на Vercel, тому тут проблем не було.
Для реалізації пошуку в LLM ми взяли Tavily API. Приємним бонусом було те, що в Langchain уже є готовий інтеграційний інструмент для Tavily — тож із налаштуванням все пройшло безболісно та без проблем.
Нижче — спрощена схема платформи, без занурення в технічні деталі:
Юзер вводить тему, яку хоче вивчити → AI-агент ставить уточнювальні запитання → отримує релевантні ресурси через пошуковий інструмент → і на основі всього цього формує персоналізований роадмап.
І все це — в межах одного великого системного промпту.
У майбутніх ітераціях, коли ми взяли проєкт у розробку, вирішили зробити все вже по-людськи. Розділили workflow на трьох агентів, кожен із яких мав власні специфічні інструменти. Також імплементували human-in-the-loop — підхід, за якого людина активно залучена до процесу прийняття рішень штучним інтелектом. У нашому випадку AI-агент чекав на відповіді з нашого боку на додаткові запитання — і тільки після цього процес рухався далі.
На схемі це виглядало так:
Трохи коду
Якщо маєте бажання спробувати побудувати свого першого агента, то ось вам одна з імплементацій його з можливістю пошуку в інтернеті.
npm install @langchain/core @langchain/langgraph @langchain/openai @langchain/community
Основні виклики під час розробки
Найбільшим викликом було встигнути реалізувати прототип у такі стислі терміни. Особливо коли в команді лише двоє, а в інших — по п’ятеро. Пріоритезація фіч і швидке прийняття рішень, мабуть, були ключовими факторами успіху. І нічого з цього не вдалося б без добре злагодженої спільної роботи з моєю колегою. Це дало змогу ефективніше побудувати робочий процес і зосередитися на головному функціоналі.
Плани на майбутнє
Наше рішення помітили в компанії, і його обрали для подальшого розвитку та інтеграції з внутрішніми проєктами. Потираючи руки в передчутті, наша команда з радістю взялася за цю ініціативу, розуміючи, що це чудова можливість здобути новий досвід у створенні продукту з нуля — без поспіху, з реальним впливом на його розвиток. Нарешті з’явилась нагода повернутися до того функціоналу, який був відкинутий під час хакатону.
У планах — переписати все з нуля, інтегрувати кілька AI-агентів, які відповідатимуть за збір інформації від юзера, підбір релевантних ресурсів і генерацію навчальної карти. Також хочемо розширити платформу, додавши внутрішні навчальні матеріали компанії — курси, книги, менторів — і реалізувати інтеграцію з LMS. Ну і, звісно, передбачаємо збір фідбеку від зацікавлених колег та організацію бета-тесту, щоб перевірити, як усе працює в реальності.
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів