Створити

Як мова 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 настільки ретельно, наскільки це можливо.

Обговорення

Увійдіть, щоб коментувати.