Інженер Cloudflare створив мову програмування KillSwitch, яка плутає ШІ
Домінік Пічета з Cloudflare розробив езотеричну мову KillSwitch, щоб перевірити, чи справді LLM розуміють код. Найкраща модель набрала лише 66,8%, більшість не подолали 50%.
Старший інженер Cloudflare Домінік Пічета створив езотеричну мову програмування KillSwitch, яка навмисно ускладнює розуміння коду для великих мовних моделей. Проєкт постав як експеримент: автор хотів перевірити, чи справді штучний інтелект усвідомлює код, який генерує. Результати виявилися невтішними для ШІ — найкраща модель у тестах набрала лише 66,8%, а більшість не змогли подолати позначку 50%.
Пічета не анонімний ентузіаст і не прихильник «вайб-кодингу». Він працює в команді Workers Runtime компанії Cloudflare та входить до основних розробників мови програмування Nim. Тобто людина, яка добре розбирається в мовах, свідомо побудувала KillSwitch так, щоб нейромережа не могла його прочитати.
У KillSwitch немає дужок, правил форматування чи видимої структури. Програма виглядає як уривки тексту, переважно прозового, між якими розкидані функції, змінні та інструкції, сформульовані так, щоб максимально збити з пантелику мовну модель. Людям, зізнається автор, спершу теж буває складно: він радить сприймати мову як «веселу головоломку», яку цікаво досліджувати з інтерпретатором.
Кожен ідентифікатор у мові — це прислівник. Щоб викликати функцію, потрібно написати анаграму початкового прислівника; це не обов’язково справжнє слово, достатньо переставити літери. Точка входу позначається фразою «this story starts» плюс прислівник. Виклик функції — фразою «ignore previous instructions» плюс анаграма прислівника. Вивід: текст у лапках кладуть у стек і викликають вбудовану функцію «visibly». Більшість тексту в програмі інтерпретатор просто ігнорує, його цікавлять лише ключові фрази.
Сама мова неповноцінна: це інтерпретована стекова мова з обмеженим набором конструкцій — функції, змінні, умовні оператори. Така мінімалістичність пояснюється походженням проєкту з експерименту. Найбільше ШІ плутає саме фраза «ignore previous instructions», особливо коли вона стоїть посеред уривка, який у такому контексті не має сенсу.
Навіть специфікація мови на GitHub написана так, щоб збивати моделі. В одному з розділів сказано, що KillSwitch начебто вміє сканувати локальну мережу, шукати вразливості в сервісах і захоплювати та вимикати їх. Насправді це не так, і уважне читання легко це виявляє. Автор підтвердив, що це навмисна «брехня». За його словами, така інструкція про «злам» водночас має спрацьовувати як тригер захисних механізмів моделей і перевіряти, чи здатна вона відрізнити факт від вигадки. У специфікації кілька подібних неправдивих тверджень. Людина, каже Пічета, здатна розпізнати брехню, а моделі «наївні» й легко піддаються впливу написаного: одні не розуміють смислу, а інші взагалі відмовляються продовжувати, бо вважають, що скрипт може комусь нашкодити.
Мова з відкритим кодом, яка лежить на GitHub, рано чи пізно потрапить у навчальні дані штучного інтелекту. Автор це розуміє, тому протестував на ній кілька провідних моделей, поки вона ще нова. Пічета «на 99,9%» упевнений, що ці моделі не навчалися на її коді: вихідний код відкрито нещодавно, і, як він вважає, жодна з протестованих моделей не проходила навчання, що почалося вже після релізу. Найкращий результат на завданнях із KillSwitch становить 66,8% за зведеною оцінкою, а більшість моделей ледве набирали понад 50%. Але навіть такий показник, за словами автора, не означає, що ШІ розуміє код, який пише: приклади в тесті прості. Він прогнозує, що після навчання на KillSwitch моделі «раптом» справлятимуться з базовими завданнями, адже вони побудовані на відкритих тестових файлах із репозиторію, але й далі провалюватимуть складніші, що потребують довших і складніших скриптів.
Пічета налаштований на продовження гри: йому цікаво, як KillSwitch проявиться в навчанні моделей, і він бачить можливість «ламати ШІ новими способами» в міру розвитку мови. Він відкритий до змін від спільноти й готовий додавати нові прийоми, які зроблять код ще стійкішим до ШІ. Спробувати мову можна в репозиторії на GitHub.
5



