GPT-розширення: великі можливості та налаштування під запити
Нещодавно OpenAI презентувала довгоочікувану можливість налаштування ChatGPT під власні потреби. Відтоді користувачі платного плану Plus, а також Enterprise-користувачі можуть створювати власні версії чат-боту, налаштовуючи їх відповідно до побажань. А після запуску GPT Store можна буде публікувати свої розширення назагал.
Чому ця подія така довгоочікувана? Мовленнєві моделі, зокрема ChatGPT — одна з найбільш проривних технологій за останні пʼять років, а можливо і більше. Преса підігрівала й інтерес, і страх публікаціями про те, як ChatGPT успішно складає університетські іспити для все більшої кількості професій, і про те, які професії він замінить найближчими роками.
Проте ті, хто намагався використовувати ChatGPT у роботі для вирішення практичних задач, зрозуміли, що технологія має свої обмеження. Що відповіді часто мають енциклопедичний вигляд, що успішно написати великі шматки коду, який буде одразу працювати, теж не вийде, і т. п. Зростання хайпу та певне розчарування добре проілюстровані в цьому мемі:
Однак те розчарування, що відбулося, це нормальний етап циклу надочікувань (hype cycle). Для того, щоб ChatGPT був справді корисним, йому потрібно подолати головне обмеження — те, що він буває занадто узагальнювальним. Кожен хотів отримати ChatGPT, який видасть не інформацію з енциклопедії, а зможе проаналізувати вчорашні звіти, вивчить корпоративну вікі та допомагатиме онбордингу новачків, зможе самостійно діставати інформацію з бази даних і сформувати відповідь тощо.
OpenAI відразу почали створювати розширення до стандартної моделі, а зараз вирішили дати користувачам можливість власного налаштування GPT. Оглянемо основні інструменти, які OpenAI наразі надає для цього.
Редактор GPT-розширень
Для того, щоб створити власне GPT-розширення, на бічній панелі в розділі Explore потрібно обрати Create a GPT.
Після цього відкриється інтерфейс створення розширення. Він складається з двох блоків: ліва частина інтерфейсу — це текстовий чат, у якому можна описати, яке саме розширення ви хочете створити, а права частина — прототип створеного вами GPT-розширення.
У першому повідомленні асистент для створення запитає, що саме має робити ваше розширення. Далі буде запропоновано обрати назву для вашого GPT. На наступному кроці асистент запропонує іконку розширення. Ця іконка генерується за допомогою DALL-E, тому можна поспілкуватися із асистентом, щоб створити саме таке зображення, яке вас влаштує. Після цього асистент запитає більш докладно про те, які конкретно дії має робити GPT-розширення, тон спілкування і т. д.
Асистент створення цікавий тим, що всі описані словами зміни одразу застосовуються до вашого розширення, і ви зможете спробувати їх у прототипі в блоці Preview. Такий метод налаштування підходить для новачків, але для більш досвідчених користувачів ChatGPT я б радив відразу переходити у вкладку Configure, адже там ховається найбільш цікаве.
Як ви бачите, в цьому розділі зібрані всі доступні налаштування вашого GPT-розширення. Тут можна обрати вже готову іконку для розширення або згенерувати нову. У текстовому полі Name можна задати назву, в Description навести короткий опис того, для чого саме ваше розширення, але найголовніше перебуває в полі Instructions.
У цьому полі задається Prompt template, тобто опис або набір інструкцій, який і визначатиме основні характеристики. Prompt engineering невідʼємна частина роботи з мовленнєвими моделями (LLM). Існують різноманітні підходи для того, щоб отримати від мовленнєвої моделі кращих результатів. Серед них Zero/Few shot prompting, Chain-of-Thought, ReAct та інші. Більш докладно із цим напрямом можна ознайомитися за посиланням.
Наступний розділ конфігурації називається Conversation starters. Це закріплені запити до вашого розширення. У полі їх можна обрати багато, але на стартовій сторінці виводяться лише перші чотири запити.
Пункт Knowledge дозволяє завантажувати додаткові файли з інформацією. Таким способом у розширенні можна використати підхід, що називається RAG (Retrieval Augmented Generation). ChatGPT буде шукати інформацію у ʼ документах, а вже після цього формуватиме остаточну відповідь.
Цей підхід дозволить вашому розширенні відповідати на запитання, які стандартна модель знає недостатньо добре або якщо відповіді важко знайти в інтернеті. Ця функція може бути корисна для створення асистентів на базі корпоративного вікі чи документів для якихось вузьких галузевих знань.
Наступний розділ Capabilities дозволяє підімкнути функції пошуку в інтернеті, генерації зображень за допомогою DALL-E, а також функцію Code Interpreter. Якщо з першими двома все зрозуміло, то на Code Interpreter можемо зупинитися більш докладно. Зазвичай підхід, який реалізовано в цьому розділі, називають PAL (Program-aided language).
Тобто мовленнєва модель, яка не може за своєю природою давати відповіді на точні запитання, із запиту користувача генерує код. Цей код виконується за допомогою інтерпретатора й повертається в мовленнєву модель. А далі модель генерує остаточну відповідь з урахуванням точно розрахованих величин. Тобто якщо активувати цю функцію, то розширення зможе запускати код у власному інтерпретаторі для виконання завдань, які ви описали в інструкції. Це дозволяє аналізувати дані з завантажених файлів, виконувати математичні обчислення та інші.
Ну й наостанок розробники OpenAI додали чудову можливість в Actions. У цьому розділі можливе підключення до вашого розширення зовнішніх API. Це відкриває дуже широкі можливості з використання і тих API, що вже існують, і написаних власних мікросервісів, що виконуватимуть запити в базу даних, спілкуватимуться з обладнанням, робитимуть інтеграції з месенджерами тощо.
У налаштуваннях API задається схема в JSON-форматі, а також обираються методи аутентифікації в разі необхідності. Підтримуються методи аутентифікації за допомогою API Key або ж OAuth, що дозволяє розширенню комунікувати не лише з відкритими, а і з захищеними ресурсами. Як приклад, наводиться схема запиту до сервісу погоди.
Створення персоналізованого агрегатора новин
Знайомство з функціоналом для створення власного GPT-розширення я хотів би показати на прикладі сервісу, якого мені завжди не вистачало. Мабуть, кожен відчув, що в інформаційному просторі виникає велика кількість новин. Їх настільки багато, що стежити за ними немає можливості. Проте все ж не хочеться пропускати важливі новини.
А інструменти, що існують, як-от RSS, E-mail-підписки чи розширення-агрегатори не задовольняють через необхідність налаштування та не завжди гарні результати. Тому кожен раз я намагаюся оптимізувати отримання важливих новин і відсіювання другорядних.
Через цю потребу я ухвалив рішення спробувати застосувати нові технології до старої проблеми та створити агрегатор новин. У мене є список авторитетних, на мою думку, ресурсів, з яких я черпаю більшість своїх новин. Тож я планую створити розширення, який за запитом буде збирати інформацію з улюблених ресурсів і обирати основне.
У конфігураторі я обираю назву, генерую іконку та додаю короткий опис призначення для свого розширення. А далі переходжу до найважливішого — до опису інструкцій для GPT-розширення. У моєму випадку я використав таку інструкцію:
Ти — «Основне», універсальний помічник-агрегатор українських новин. Твоє завдання: агрегувати новини з усіх необхідних ресурсів для успішного виконання кожного запиту без жодних часових обмежень. Ти будеш працювати з широким колом джерел для того, щоб відповісти на такі основні напрямки новин: Основні новини України, Згадки про Україну у світових медіа, Економічні новини України, Новини ІТ України, Новини ІТ світу. Для всіх блоків цих новин передусім необхідно шукати найважливіші новини з рекомендованих списків для кожного напрямку.
У цій текстовій інструкції мовленнєвій моделі GPT задається роль, яку буде виконувати ваше розширення, а також окреслюється загальні рамки, в яких планується його використання. Я одразу розбиваю новини, які мене зазвичай цікавлять на напрями: Основні новини України, Згадки України в світі, Новини ІТ України, Новини ІТ світу, Економічні новини та Аналітичні статті про перебіг війни.
Для кожного з піднапрямів я задаю список ресурсів, які вважаю авторитетними. До прикладу, щоденні новини в мене базуються на стрічці Української правди та ще декількох ресурсів. Для новин ІТ України використовую dou.ua та інші. Аналітичні статті GPT-розширення шукатиме на texty.org.ua, Мілітарному та ін. Також мені цікаві згадки про Україну в авторитетних світових медіа. Тому я додав сюди список з Associated Press, Reuters, Wall Street Journal, BBC та інних.
Усі вищезгадані сайти — це не реклама, а винятково мої вподобання. Кожен може використати власний список джерел.
Майте на увазі, що під час виконання запиту на пошук джерел з кожного напряму розширення ходитиме на відповідні ресурси для пошуку новин, тому що більше сайтів буде додано до списків, то довше триватиме пошук. Ще варто врахувати, що в ChatGPT є ще обмеження, які накладаються.
Зазвичай за один запит сервіс аналізує не більше пʼяти вебресурсів та в глибину не більше, ніж один рівень вниз. Для багатьох задач цього цілком вистачить, але нюанс варто враховувати під час використання сервісу для чогось більш складного. Якщо потрібні важчі сценарії, то доведеться відповідно коректувати інструкції.
Далі в конфігураторі я вибираю, які можливості матиме розширення. У цьому випадку необхідні лише можливість вебпошуку. Всі інші опції я залишаю нективним. Останнім кроком буде визначення прав доступу до вашого розширення. Розташоване це в правому верхньому кутку під кнопкою Save:
Є три опції на вибір: залишити приватним, зробити доступним для всіх, хто має посилання, а також опублікувати. Наразі Public не доступна для вибору, але все зміниться, коли буде запущено GPT store. Із запуском маркету розробники зможуть публікувати свої GPT-версії в магазині розширень. Поки що про це мало відомо, тому будемо стежити за оновленнями.
Приємним є те, що розширення вже мають встановлені рамки (guardrails) самого ChatGPT, і вам не потрібно окремо пояснювати вашому розширенню, щоб він був ввічливим та не надавав якусь шкідливу інформацію. Зазвичай розробники розширень на базі LLM мають самі попіклуватися про можливу шкоду.
Якщо цікаво спробувати GPT-розширення, його можна знайти за цим посиланням. Нагадую, він доступний лише користувачам з підпискою Plus.
Це демонстрація, як доволі легко зробити розширення, яке спростить і автоматизує певну проблему користувача. Зараз я активно тестую і покращую Prompt. Пізніше планую створити та підключити crawler для Telegram, який робитиме агрегацію новин з улюблених каналів.
Висновки
На мою думку, OpenAI створює нові доволі цікаві можливості. Це дещо змінює звичний підхід до взаємодії користувачів з пристроями. Я досі не вважаю, що це ідеальний засіб комунікації людини із застосунком, бо ми все ще маємо взаємодію текст — текст. Інколи мені дуже важко щось пояснювати ChatGPT текстом.
Звісно, існує можливість спілкування голосом, але цей спосіб теж часто не підходить. Часом значно простіше використовувати розширення з гарним UI/UX. Але я думаю, що в OpenAI вже працюють над покращенням і, можливо, найближчим часом ми побачимо динамічні інтерфейси з опцією вибору бажаного варіанту та інші зручні покращення.
10 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів