top of page

LLM для Python спеціалістів: Advanced Data Analysis та Semantic Kernel

Оновлено: 12 черв.



Стрімкий розвиток великих мовних моделей трансформує різні галузі. Попри те, що ChatGPT привернув значну увагу завдяки своєму зручному інтерфейсу чату, ця технологія дозволяє  створювати складні рішення та інтегрувати можливості штучного інтелекту без необхідності глибокого розуміння машинного навчання. Олександр Краковецький, керівник української ІТ-компанії DevRain та співзасновник інтелектуальної системи рекрутингу донорів крові ДонорUA, поділився можливостями роботи Python-розробників з цією LLM. Під час виступу на конференції Python + DS fwdays’24 він розповів, як ChatGPT 4 може використовуватись для Advanced Data Analysis, а також про можливості бібліотеки Semantic Kernel. Публікуємо найважливіше з виступу. 


Великі мовні моделі (LLM) — це комп'ютерні програми, які вміють оброблювати, генерувати текст і, виконувати різноманітні завдання, пов'язані з природною мовою, а віднедавна і працювати з різними типами контенту на кшталт зображень, відео, аудіо і так далі. Попри весь хайп, що відбувається навколо цієї технології, усі ІТ-спеціалісти мають розуміти основи штучного інтелекту, машинного навчання, вміти будувати прості моделі та звичайно користуватися різними LLM. 

Advanced Data Analysis

Function Calling

GPTs

Retrieval Augmented Generation

Semantic Kernel



Advanced Data Analysis


Найпопулярніші LLM вміють працювати з різними мовами програмування, в тому числі Python. Нижче приклад, як різні мовні моделі (ChatGPT-4, Google Gemini, Microsoft Copilot, GitHub Copilot, Claude) впоралися із завданням розвʼязати квадратне рівняння за допомогою коду Python. 




Загалом кожна LLM має свої відмінності, переваги й недоліки. Водночас на мою думку, ChatGPT-4 наразі надає більше можливостей. Серед них — режим Advanced Data Analysis, який інші сервіси досі не можуть повторити в такій якості. 


Advanced Data Analysis (ADA) — це аналіз даних з використанням складних і спеціалізованих методів та інструментів (застосування статистичних моделей, машинного навчання, виявлення прихованих закономірностей, прогнозування майбутніх тенденцій тощо). 


У попередньому прикладі я просив розвʼязати рівняння саме за допомогою коду, і це невипадково. Відомо, що математичне завдання — один зі сценаріїв, де LLM починають галюцинувати, тому що завдання мовних моделей, в першу чергу, — згенерувати відповідь. Якщо попросити модель просто розвʼязати рівняння, існує висока ймовірність, що вона зробить це неправильно. ChatGPT-4 вміє ідентифікувати запит і вчасно перемкнутися на потрібний режим, щоби надати правильну відповідь, згенерувавши під капотом той самий Python-код. Це дає розробникам можливість оцінити адекватність коду. 


Якщо попросити ChatGPT-4 запустити pip freeze, можна побачити список усіх компонентів і пакетів, які використовуються в цьому середовищі — це близько 350 бібліотек, і список постійно збільшується. Таким чином, у розробників є умовно безкоштовний інструмент (за $20 доларів на місяць), який вміє оркеструвати різні завдання.



Крім того, ми можемо використовувати цей інструмент за основним призначенням – аналізувати дані, виконуючи роль дата-аналітика або дата-інженера. Так, якщо ми завантажимо, наприклад, CSV-файл або Excel-файл, модель надасть коротке самарі, про що цей файл, список колонок і їхній опис, а в кінці запропонує, який аналіз можна провести за цими даними. Також ви можете створювати графіки на основі проаналізованих даних, обʼєднувати різні набори даних та перетворювати їх — ChatGPT вміє генерувати файли у заданому форматі. 


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


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




Function Calling


Як ChatGPT вирішує, який саме режим використати в конкретний момент часу: пошуку в інтернеті, Advanced Data Analysis або перемикатися між ними залежно від контексту? Рішенням, який саме інструмент потрібен, займається механізм Function Calling. 




Як це працює? Наприклад, у нас є запит «погода в Києві» зі списком можливих функцій: поточна погода, історичне значення, погода через тиждень тощо. Відповідно, завдання ChatGPT Function Calling — обрати ту функцію, яка найкраще підходить для запиту. Замість того, щоб давати запит в текстовій формі, ми зробимо його у форматі Open API, де пропишемо усі функції, типи, властивості та параметри. ChatGPT використає цей опис для того, щоб визначити потрібну функцію. 



Коли ми питаємо про температуру повітря, очевидно, що відповідь може бути за шкалою Цельсія або Фаренгейта, залежно від точки світу. Потужність сучасних LLM полягає в тому, що модель може визначити один параметр, а інші підібрати за контекстом. Так, погоду у Вашингтоні вона покаже в одному форматі, а у Києві — в іншому. Так само, якщо ми спитаємо «яка погода у Львові», модель зрозуміє, що «Львові» — це Львів. Завдання розпізнавання іменованих сутностей (Named Entity Recognition) раніше давалося моделям надзвичайно складно. Іноді треба було роками вчити модель, щоби вона розпізнавала всі можливі сценарії. Усім знайомий біль спілкування з першими голосовими помічниками банків. У нових LLM, зокрема ChatGPT-4, ця проблема поступово розвʼязується. І цьому є підтвердження: компанія Klarna, запустила чат-бот підтримки на основі GPT-4. За один місяць вони змогли обробити 2,3 мільйона звернень, час на відповідь скоротився з одинадцяти хвилин до двох. Також вони отримали паритет по якості відповіді між людиною та ШІ. В результаті обсяг покритих звернень дорівнював роботі 700 агентам, що працювали фултайм — цей результат вражає!


Отже, механізм Function Calling використовується в ChatGPT-4 для того, щоб оркеструвати різні запити. З іншого боку, розробники з його допомогою можуть впроваджувати LLM-інструменти у свої застосунки. 



GPTs


ChatGPT також надає таку фічу, як GPTs — це простий спосіб зробити кастомізовану версію чату в певній предметній області. Наприклад, можна попросити модель «створити  цифрового асистента з навчання англійської мови». Тоді система звузить всю базу знань до цієї конкретної задачі. Цим інструментом ми скористалися для платформи ДонорUA. Часто користувачі звертаються до служби підтримки з однаковими запитаннями: «Де здати кров в суботу?», «Яка ситуація з кров'ю в Києві зараз» тощо. Чат-бот може розпізнавати природну мову та надавати відповіді в реальному часі.


GPTs також має додаткові можливості. Одна з них — налаштування інтеграції з вашим бекендом, зокрема, у форматі API. Наприклад, ми зробили API, заточене під GPT, і прописали певні ендпоінти, описи та параметри у форматі Open API. У такий спосіб механізм Function Calling працюватиме у вашому конкретному GPT. 




Retrieval Augmented Generation


Ще одна опція — можливість додати власні файли до вкладки knowledge, щоби GPT надавав пріоритет даним з вашої бази, наприклад. Цей підхід називається Retrieval Augmented Generation і є прелюдією до більш комерційних застосувань технології. 



Це загальна схема того, як працюють так звані RAG. Є запит, який перетворюється в ембединги (векторні представлення слів, речень, текстів) і відправляється до векторної бази, щоби дістати необхідні матеріали та використати їх як контекст для відповіді на запитання. Далі запит і контекст формуються у єдиний промпт (ця стадія називається Augmentation). Тоді LLM оброблює його та генерує відповідь.


Як працюють ембединги? Вони зберігають значення слів у векторі та здійснюють певні обчислення з ними. Спрощений приклад: якщо від слова «король» відняти слово «чоловік» і додати «жінка», вийде значення «королева». Так система розуміє, що залежно від ситуації  деякі слова можуть мати спільний або абсолютно різний контекст.  



Саме тому LLM добре працюють на різних мовах. Ви можете написати промпт українською і попросити дати відповідь англійською мовою», або навіть міксувати різні мови в одному промпті. LLM зберігають значення цих слів у векторі, отже вміють легко їх перетворювати. 



Semantic Kernel


Фактично, бізнеси прагнуть мати свою корпоративну систему, до якої можна завантажити свої файли та отримати інформацію в стилі ChatGPT. Компанія Microsoft, яка інвестувала в OpenAI, інтегрувала моделі до своєї хмарної платформи Microsoft Azure. Таким чином у розробників є вибір: користуватися ChatGPT через OpenAI API або через Azure. 


Зазвичай бізнесу потрібно не лише ставити питання та отримувати відповіді, але й оркеструвати ці запити за певною бізнес-логікою, а також будувати пайплайни, щоби закривати різні сценарії. У Python є рішення для цих завдань — LangChain. Подібний функціонал також пропонує Microsoft — Semantic Kernel. Це відкритий SDK, що призначений для інтеграції ШІ-моделей до різних програм. Наразі Semantic Kernel працює у трьох варіантах: .NET, Python і Java. Це дає можливість отримати готовий набір функцій для роботи з LLM: 


  1. Recall Memory — дозволяє витягувати збережені дані з внутрішнього сховища Semantic Kernel для контекстуалізації відповідей.

  2. Plan — інструмент для створення сценарію дій, який визначає послідовність виконання завдань або функцій.

  3. Graph API — дозволяє працювати з графами даних. 

  4. Semantic Function — виконує завдання, використовуючи семантичні моделі для обробки природної мови або інших складних типів даних. 

  5. Native Function — виконує специфічні завдання безпосередньо в середовищі виконання. 


Також в Semantic Kernel є можливість обирати векторну базу даних. Цей інструмент заточений в першу чергу під Microsoft Azure, проте також має підтримку різних векторних баз. 



Незабаром для Python також зʼявиться можливість конвертації та експорту плагінів в API, сумісне з OpenAI. 


Отже, GPT-4 – прекрасний інструмент для того, щоб поекспериментувати, зробити MVP-версію вашого продукту, а також швидко з'єднати функцію розпізнавання природної мови з вашим бекендом. Використання OpenAI, або Azure OpenAI дає можливість вам створювати застосунки так званого нового покоління.

© 2035 by Business Name. Made with Wix Studio™

bottom of page