Lemmy Lemmy 26 жовтня 2023, 15:08

Як мова SudoLang допомагає спілкуватися із мовними моделями. Посібник для новачків

Бажа­є­те ство­рю­ва­ти чат-боти, ігри та про­гра­ми з вико­ри­ста­н­ням моде­лей ШІ, таких як ChatGPT? У цій стат­ті ми роз­гля­не­мо осно­ви SudoLang — ефе­ктив­ної мови про­гра­му­ва­н­ня псев­до­ко­да при­ро­дної мови, при­зна­че­ної для навча­н­ня суча­сних мов­них моде­лей, таких як GPT4 від OpenAI, Claude від Anthropic та інших.

SudoLang був роз­ро­бле­ний мною (Ері­ком Еллі­о­том) спіль­но з GPT4. Метою було ство­ри­ти про­сту мову, яку моде­лі ШІ розумі­ли без спе­ці­аль­но­го навча­н­ня. Всі досить про­су­ну­ті мов­ні моде­лі при­ро­дно розу­мі­ють SudoLang і дотри­му­ю­ться його інструкцій.

Про­сто пам’я­тай­те, моде­лі можуть поми­ля­ти­ся, як і люди. І май­те на ува­зі, що ви осво­ю­є­те нову нави­чку, а це вима­гає часу та пра­кти­ки. Навіть якщо ви рані­ше займа­ли­ся про­гра­му­ва­н­ням, SudoLang від­рі­зня­є­ться від усьо­го, що ви вивчали.

Ниж­че наве­де­но його особливості.

  • Орі­єн­то­ва­ний на інтер­фейс. Ви каже­те йому, що запа­м’я­та­ти і як з вами вза­є­мо­ді­я­ти, а він як розум­ний пер­со­наль­ний помі­чник робить все інше.
  • Засно­ва­ний на обме­же­н­нях. Він дотри­му­є­ться вста­нов­ле­них вами правил.
  • Декла­ра­тив­ний. Ви каже­те йому, що ви хоче­те, а він вирі­шує, як це зробити.
  • Фун­кціо­наль­ний. Як при будів­ни­цтві із бло­ків Lego, кожна деталь робить щось одне і не змінюється.
  • Ком­по­зи­цій­ний. Ви може­те ком­бі­ну­ва­ти різні части­ни, щоб ство­ри­ти щось нове.

Не хви­люй­те­ся, якщо ще не розу­мі­є­те, що це озна­чає. Про­сто поста­рай­те­ся бути тер­пля­чим до себе та ШІ, якщо щось не вихо­дить з пер­шо­го разу.

Про­гра­му­ва­н­ня в обме­же­н­нях було вина­йде­но на поча­тку 1960‑х Айве­ном Сазер­лен­дом. Він же став пер­шим твор­цем екра­нів, з яки­ми можна без­по­се­ре­дньо вза­є­мо­ді­я­ти (такий, напри­клад, у вашо­го теле­фо­ну), і гар­ні­тур вір­ту­аль­ної реаль­но­сті. Про­гра­му­ва­н­ня в обме­же­н­нях перед­ба­чає вста­нов­ле­н­ня пев­них пра­вил, зва­них обме­же­н­ня­ми”, та нада­н­ня можли­во­сті про­гра­мі самої вига­да­ти, як від­по­від­а­ти цим обмеженням.

Про­гра­му­ва­н­ня в обме­же­н­нях у Sketchpad Айве­на Сазер­лен­да, 1963 рік

Обме­же­н­ням, зада­ним у наве­де­ній ниж­че про­гра­мі вір­ту­аль­но­го цуце­ня, є незда­тність цуце­ня гово­ри­ти люд­ською мовою, а ШІ інтер­пре­тує це обме­же­н­ня у сво­їх від­по­від­ях. Незва­жа­ю­чи на те, що про­гра­му­ва­н­ня в обме­же­н­нях не часто зустрі­ча­є­ться в суча­сних мовах про­гра­му­ва­н­ня, це клю­чо­вий аспект робо­ти SudoLang.

Опа­ну­ва­ти SudoLang – не про­бле­ма для того, хто знає англій­ську. Біль­шість ресур­сів SudoLang почер­пнув з цієї мови. Потрі­бно лише вивчи­ти кіль­ка сим­во­лів та кіль­ка деся­тків слів, які мають осо­бли­ве зна­че­н­ня для ШІ.

Чому SudoLang?

SudoLang — це гейм­чейн­джер для тих, хто хоче ство­рю­ва­ти інте­р­актив­ні про­гра­ми з ШІ. Але чому саме SudoLang, а чи не інші мови? Ось кіль­ка ваго­мих причин.

  • Вико­ри­ста­н­ня при­ро­дної мови. На від­мі­ну від тра­ди­цій­них мов про­гра­му­ва­н­ня, SudoLang орі­єн­то­ва­ний на при­ро­дну мову, тому його лег­ше вивча­ти та вико­ри­сто­ву­ва­ти, ніж інші мови про­гра­му­ва­н­ня. Не потрі­бно бути екс­пер­том у галу­зі ство­ре­н­ня коду, щоб поча­ти робо­ту з SudoLang, а ШІ пере­ве­де про­гра­му, напи­са­ну на SudoLang, будь-якою іншою мовою програмування.
  • Полі­пше­ний меха­нізм мір­ку­вань. Дослі­дже­н­ня пока­за­ли, що вико­ри­ста­н­ня псев­до­ко­ду (стру­кту­ро­ва­ної при­ро­дної мови) може під­ви­щи­ти ефе­ктив­ність мір­ку­ва­н­ня ШІ. SudoLang дозво­ляє ство­рю­ва­ти коро­ткі та ефе­ктив­ні інструкції.
  • Ефе­ктив­ність та вира­зність. Декла­ра­тив­ність, обме­же­н­ня та орі­єн­то­ва­ність на інтер­фейс роблять мову SudoLang неймо­вір­но вира­зною та ефе­ктив­ною. Часто пром­пти, скла­де­ні мовою SudoLang, потре­бу­ють мен­шої кіль­ко­сті лексем, ніж пром­пти, напи­са­ні при­ро­дною мовою. Тому SudoLang опе­ра­тив­ні­ше та дешев­ше у використанні.
  • Стру­кту­ро­ва­ність та нао­чність. SudoLang надає бло­ки обла­сті види­мо­сті, під­трим­ку від­сту­пів та візу­аль­не угру­по­ва­н­ня, що полег­шує розу­мі­н­ня скла­дних пром­птів у порів­нян­ні з маси­ва­ми бло­ків при­ро­дної мови.
  • Кон­тро­льо­ва­ні від­по­віді. Стру­кту­ро­ва­ні шабло­ни та інтер­фей­си SudoLang можуть зна­чно під­ви­щи­ти можли­вість пра­виль­но сфор­мо­ва­них від­по­від­ей від ШІ, тому його лег­ше інте­гру­ва­ти з інши­ми ком­п’ю­тер­ни­ми систе­ма­ми та тра­ди­цій­ним кодом.

Вивчи­мо осно­ви SudoLang, ство­рив­ши чат-бота у вигля­ді вір­ту­аль­но­го цуце­ня. Визна­чи­мо риси хара­кте­ру цуце­ня, навчи­мо його від­по­від­а­ти на коман­ди та гра­ти у м’яч. Це буде весе­ла, інте­р­актив­на та кори­сна подорож.

Нача­ло работы

Від­крий­те ChatGPT і пере­ко­най­те­ся, що ви вико­ри­сто­ву­є­те GPT4 або пізні­шу вер­сію. В даний час доступ до GPT4 пла­тний, тому для вико­ри­ста­н­ня 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 настіль­ки ретель­но, наскіль­ки це можливо.

  • 5
  • 0
  • 134

Обговорити