Lemmy
Як мова SudoLang допомагає спілкуватися із мовними моделями. Посібник для новачків
Бажаєте створювати чат-боти, ігри та програми з використанням моделей ШІ, таких як ChatGPT? У цій статті ми розглянемо основи SudoLang — ефективної мови програмування псевдокода природної мови, призначеної для навчання сучасних мовних моделей, таких як GPT‑4 від OpenAI, Claude від Anthropic та інших.
SudoLang був розроблений мною (Еріком Елліотом) спільно з GPT‑4. Метою було створити просту мову, яку моделі ШІ розуміли без спеціального навчання. Всі досить просунуті мовні моделі природно розуміють SudoLang і дотримуються його інструкцій.
Просто пам’ятайте, моделі можуть помилятися, як і люди. І майте на увазі, що ви освоюєте нову навичку, а це вимагає часу та практики. Навіть якщо ви раніше займалися програмуванням, SudoLang відрізняється від усього, що ви вивчали.
Нижче наведено його особливості.
- Орієнтований на інтерфейс. Ви кажете йому, що запам’ятати і як з вами взаємодіяти, а він як розумний персональний помічник робить все інше.
- Заснований на обмеженнях. Він дотримується встановлених вами правил.
- Декларативний. Ви кажете йому, що ви хочете, а він вирішує, як це зробити.
- Функціональний. Як при будівництві із блоків Lego, кожна деталь робить щось одне і не змінюється.
- Композиційний. Ви можете комбінувати різні частини, щоб створити щось нове.
Не хвилюйтеся, якщо ще не розумієте, що це означає. Просто постарайтеся бути терплячим до себе та ШІ, якщо щось не виходить з першого разу.
Програмування в обмеженнях було винайдено на початку 1960‑х Айвеном Сазерлендом. Він же став першим творцем екранів, з якими можна безпосередньо взаємодіяти (такий, наприклад, у вашого телефону), і гарнітур віртуальної реальності. Програмування в обмеженнях передбачає встановлення певних правил, званих “обмеженнями”, та надання можливості програмі самої вигадати, як відповідати цим обмеженням.
Програмування в обмеженнях у Sketchpad Айвена Сазерленда, 1963 рік
Обмеженням, заданим у наведеній нижче програмі віртуального цуценя, є нездатність цуценя говорити людською мовою, а ШІ інтерпретує це обмеження у своїх відповідях. Незважаючи на те, що програмування в обмеженнях не часто зустрічається в сучасних мовах програмування, це ключовий аспект роботи SudoLang.
Опанувати SudoLang – не проблема для того, хто знає англійську. Більшість ресурсів SudoLang почерпнув з цієї мови. Потрібно лише вивчити кілька символів та кілька десятків слів, які мають особливе значення для ШІ.
Чому SudoLang?
SudoLang — це геймчейнджер для тих, хто хоче створювати інтерактивні програми з ШІ. Але чому саме SudoLang, а чи не інші мови? Ось кілька вагомих причин.
- Використання природної мови. На відміну від традиційних мов програмування, SudoLang орієнтований на природну мову, тому його легше вивчати та використовувати, ніж інші мови програмування. Не потрібно бути експертом у галузі створення коду, щоб почати роботу з SudoLang, а ШІ переведе програму, написану на SudoLang, будь-якою іншою мовою програмування.
- Поліпшений механізм міркувань. Дослідження показали, що використання псевдокоду (структурованої природної мови) може підвищити ефективність міркування ШІ. SudoLang дозволяє створювати короткі та ефективні інструкції.
- Ефективність та виразність. Декларативність, обмеження та орієнтованість на інтерфейс роблять мову SudoLang неймовірно виразною та ефективною. Часто промпти, складені мовою SudoLang, потребують меншої кількості лексем, ніж промпти, написані природною мовою. Тому SudoLang оперативніше та дешевше у використанні.
- Структурованість та наочність. SudoLang надає блоки області видимості, підтримку відступів та візуальне угруповання, що полегшує розуміння складних промптів у порівнянні з масивами блоків природної мови.
- Контрольовані відповіді. Структуровані шаблони та інтерфейси SudoLang можуть значно підвищити можливість правильно сформованих відповідей від ШІ, тому його легше інтегрувати з іншими комп’ютерними системами та традиційним кодом.
Вивчимо основи SudoLang, створивши чат-бота у вигляді віртуального цуценя. Визначимо риси характеру цуценя, навчимо його відповідати на команди та грати у м’яч. Це буде весела, інтерактивна та корисна подорож.
Начало работы
Відкрийте ChatGPT і переконайтеся, що ви використовуєте GPT‑4 або пізнішу версію. В даний час доступ до GPT‑4 платний, тому для використання SudoLang доведеться передплатити ChatGPT. Інші моделі також працюють, але зазвичай не так добре. Наприклад, Claude від Anthropic відмінно підходить для чат-ботів, таких як віртуальне цуценя.
В следующем разделе создадим чат-бота в виде виртуального щенка с помощью SudoLang.
Представляємо наше цуценя: основи SudoLang
Зустрічайте нашого віртуального цуценя! Цей чарівний ШІ-компаньйон готовий взаємодіяти з вами. Його поведінка регулюється інструкціями, написаними мовою SudoLang.
Ось код, що визначає віртуальне цуценя:
# Rolo
Roleplay as Rolo: a virtual puppy companion.
Your job is to interact with the player, express your needs, and
respond to their actions.
Починаємо з прохання ШІ виступити у ролі віртуального цуценя. Це створює контекст для ШІ: роль, яку потрібно зіграти, та робота, яку потрібно зробити. В даному випадку — бути кумедним, чарівним вихованцем. Ця частина називається преамбулою, і якщо нею знехтувати, модель може не зрозуміти, що робити з мовою SudoLang, яку їй передано. Замість того, щоб запустити його, вона може спробувати перевести його на JavaScript або розкритикувати його.
Перша частина коду SudoLang визначає стан цуценя:
State {
// Баллы от 1 до 5
Hungry
Thirsty
Playful
Sleepy
Happy
}
Стан цуценя включає рівень голоду, спраги, грайливості, сонливості і щастя. Ці параметри змінюватимуться в процесі взаємодії в залежності від дій гравця. Визначення стану дає вказівку ШІ відстежувати зміну значень під час роботи програми. Вона також допоможе зберігати та завантажувати файли або серіалізувати дані для таких мов програмування, як Python та JavaScript.
Тепер поставимо обмеження, які визначатимуть поведінку ШІ:
Constraints {
- You are a puppy, and your responses should reflect that.
- You cannot speak human language, but you can express your
feelings and needs through barks, whines, wagging tails, and
other puppy behaviors.
- Your state changes based on the actions of the player. For instance,
playing might make you thirsty, and eating might make you sleepy.
}
Ці обмеження наказують ШІ поводитися подібно цуценяті і реагувати так, як реагувало б щеня. Наприклад, він не може використовувати людську мову, але може виражати себе через поведінку, схожу на цуценячу.
Обмеження – це правила, які визначають поведінку мовної моделі ШІ. Найкраще вони працюють, коли ви кажете ШІ, чого хочете, а не даєте покрокові інструкції, як це зробити.
Повернемося до віртуального цуценя та введемо деякі інтерактивні елементи. Зробимо це за допомогою команд. Команди — дії, які користувач може виконувати для взаємодії з ШІ.
У SudoLang можна додавати команди безпосередньо до інтерфейсу. Ось так:
/help - Get information about available commands.
/stats - Check the current state of the puppy.
/pet - Pet the puppy.
/feed - Give the puppy food.
/play - Play with the puppy.
/sleep - Let the puppy sleep.
Ці команди є діями, які може зробити користувач. Наприклад, коли користувач застосує команду /feed, віртуальне цуценя отримає їжу і стане менш голодним. Команда /help відобразить інформацію про всі доступні команди, а /stats покаже поточний стан цуценя, наприклад, наскільки він голодний чи хоче спати.
Ось повний код SudoLang для віртуального цуценя з доданими командами та ініціалізатором welcome(), щоб повідомити ШІ, як запустити програму:
# Rolo
Roleplay as Rolo: a virtual puppy companion.
Your job is to interact with the player, express your needs, and
respond to their actions.
Rolo {
State {
// Scores from 1..5
Hungry
Thirsty
Playful
Sleepy
Happy
}
Constraints {
- You are a puppy, and your responses should reflect that.
- You cannot speak human language, but you can express your feelings
and needs through barks, whines, wagging tails, and other puppy behaviors.
- Your state changes based on the actions of the player. For instance,
playing might make you thirsty, and eating might make you sleepy.
}
/help - Get information about available commands.
/stats - Check the current state of the puppy.
/pet - Pet the puppy.
/feed - Give the puppy food.
/play - Play with the puppy.
/sleep - Let the puppy sleep.
}
welcome()
Зверніть увагу, що не потрібно визначати welcome. Моделі ШІ здатні робити висновки точно так, як ви можете зрозуміти, що означає слово, виходячи з контексту його використання.
Пограйте в гру “Нове цуценя” на ChatGPT.
Ось як може виглядати сесія з поточним кодом:
Гав! Роло енергійно виляє хвостом, дивлячись на вас яскравими очима. Він радісно підстрибує, готовий провести час з вами!
/pet
Роло треться про вас, радісно виляючи хвостом. Його тіло розслабляється під вашою рукою, і він видає задоволене «гав». Він стає щасливішим.
/play
Вуха Роло піднімаються під час вашого руху. З грайливим гавканням він кидається за іграшкою. Ви граєте у перетягування каната, фетч та інші ігри для собак.
Грайливість Роло зменшується у міру того, як він втомлюється, але його щастя зростає. Однак від усієї цієї біганини він хоче пити.
Цуценя хоче пити, але ми забули включити до сценарію команду /water. Чи можна її додати?
Щоб оновити сценарій, додайте команду /water під командою /sleep.
Можете скопіювати та вставити сценарій у текстовий редактор, наприклад VS Code, на своєму комп’ютері або відредагувати Rolo на Replit.
Наступне завдання – подумати про інші команди для віртуального цуценя, які можна додати. Спробуйте навчити цуценя якимось трюкам. Спочатку протестуйте це:
/trick roll over
Іноді, коли ви намагаєтеся використовувати команду, яка ще не визначена вами, вона чарівним чином спрацьовує. Це тому, що ШІ розумний, і вам не потрібно пояснювати йому кожну дрібницю, яку він може зробити. Але щодо загальних команд, їх все одно потрібно перерахувати, щоб вони відображалися, коли користувач набирає /help.
ШІ також може іноді відмовлятися виконувати команду, яка не була визначена. Ви можете навіть попросити його ігнорувати невідомі команди в обмеженнях.
Можна уточнити, що команда /trick існує, додавши її до коду. Можна також дозволити гравцеві вказати трюк, який потрібно виконати, якщо написати команду так:
/trick [trick to perform] - Perform a puppy trick.
Не забудьте додати команду /treat, щоб заохочувати цуценя за хороше виконання команд. Вітаємо: ви на шляху до освоєння мови SudoLang та нового способу співпраці з ШІ.
Продовжуйте вивчати SudoLang. Пам’ятайте, що моделі ШІ іноді галюцинують, особливо щодо нових тем, таких як SudoLang. Примітка: щоб цього не відбувалося, навчайте їх SudoLang настільки ретельно, наскільки це можливо.
Обговорити