Інженер 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.
8



