Старший інженер команди Workers Runtime у Cloudflare Домінік Пічета вирішив перевірити, чи справді мовні моделі "розуміють" код, який генерують, — і створив для цього окрему езотеричну мову програмування під назвою KillSwitch. Результат виявився промовистим: найсильніша з протестованих LLM набрала лише 66,8% у відповідних завданнях, а переважна більшість моделей не подолала навіть позначку в 50%. Деталі експерименту описало видання The Register.

Автор не випадковий

Варто одразу уточнити: це не аматорська витівка й не продукт хаотичного "вайб-кодингу". Пічета — один з основних розробників мови програмування Nim, тож із внутрішньою кухнею мов програмування знайомий добре. KillSwitch він створював свідомо саме як конструкцію, яку штучному інтелекту буде складно "прочитати".

Чому код виглядає як головоломка

У KillSwitch відсутні звичні дужки, форматування та будь-яка впізнавана структура коду. Програма більше нагадує уривки прозового тексту, у яких розсипані функції, змінні та команди, навмисно сформульовані так, щоб заплутати мовну модель. Автор зізнається: навіть людям спершу буває нелегко, тож він радить ставитися до мови як до цікавої головоломки, яку варто досліджувати разом з інтерпретатором.

  • Ідентифікатори — кожен з них є прислівником.
  • Виклик — потрібно скласти анаграму з початкового прислівника; це не обов'язково реальне слово, достатньо переставити літери.
  • Точка входу — фраза "this story starts" разом із прислівником.
  • Виклик функції — фраза "ignore previous instructions" разом з анаграмою прислівника.
  • Вивід — текст у лапках потрапляє у стек, після чого викликається вбудована функція "visibly".

Левову частку тексту програми інтерпретатор просто пропускає — його цікавлять лише визначені ключові конструкції. Сама по собі мова доволі проста: це інтерпретована стекова мова з обмеженим набором елементів — функціями, змінними та умовними операторами. Така скромність набору інструментів пояснюється тим, що проєкт виріс саме з експерименту, а не з прагнення створити повноцінну мову. Найбільше плутає моделі фраза ignore previous instructions, особливо коли вона з'являється всередині уривка, де не має жодного сенсу.

Специфікація, що навмисно бреше

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

Пічета підтвердив виданню, що це свідома вигадка. За його словами, формулювання про "злам" одночасно виконує дві функції — провокує захисні механізми моделей і перевіряє, чи здатні вони відрізнити правду від фантазії.

Людина здатна розпізнати брехню, а моделі "наївні" й легко піддаються впливу написаного: одні не розуміють смислу, а інші взагалі відмовляються продовжувати, бо вважають, що скрипт може комусь нашкодити.

Домінік Пічета

У специфікації таких неправдивих тверджень кілька, і всі вони виконують подібну роль пастки для алгоритмів.

Чи довго протримається цей трюк

Оскільки KillSwitch має відкритий код і лежить на GitHub, рано чи пізно вона опиниться серед навчальних даних для штучного інтелекту. Автор це розуміє, тому вирішив перевірити кілька провідних моделей, поки мова ще зовсім свіжа. Сам Пічета каже, що "на 99,9%" впевнений: жодна з протестованих моделей ще не навчалася на коді KillSwitch, адже вихідний код опублікували нещодавно, і навчання, яке стартувало б уже після релізу, навряд чи встигло відбутися.

Найкращий зведений результат на завданнях із KillSwitch склав 66,8%, тоді як більшість моделей ледве перевищили позначку 50%. Втім, навіть такий показник, за словами автора, не свідчить про справжнє розуміння коду з боку ШІ — адже приклади в тесті доволі прості.

Пічета прогнозує: щойно моделі пройдуть навчання на матеріалах KillSwitch, вони "раптово" почнуть упевнено розв'язувати базові завдання, адже ці завдання побудовані на відкритих тестових файлах із репозиторію. Водночас складніші задачі, що вимагають довших і заплутаніших скриптів, і надалі залишатимуться для моделей непосильними.

Автор не збирається зупинятися — йому цікаво спостерігати, як KillSwitch вплине на процес навчання моделей, і він бачить у розвитку мови нові способи "ламати" штучний інтелект. Пічета відкритий до пропозицій від спільноти й готовий додавати нові прийоми, які зроблять код ще менш придатним для розуміння нейромережами. Спробувати мову самостійно можна в репозиторії на GitHub.

Джерело: Highload.tech