如果你不想让机器人读懂你辛苦写下的代码、再用它生成自己的程序,现在有了一门专门用来迷惑大语言模型(LLM)的新编程语言。

开发者打造专为混淆大模型的 KillSwitch 编程语言,AI 编程资讯配图

事情始于软件工程师 Dominik Picheta 的实验——他想验证 LLM 是否真的理解自己写的代码——如今却变成了一门开源(虽然略显深奥)的编程语言,他称之为 KillSwitch。没有括号、没有需要记住的格式规范,看起来甚至没有结构:只有大段大段的文本,越像散文越好,中间穿插着故意写得让 LLM 难以理解的函数、变量和语句。

这意味着人类一开始也会被搞糊涂。Picheta 告诉 The Register:人第一次接触这门语言感到困惑非常正常,我更喜欢把它当成一个有趣的谜题:你应该探索这门语言、玩玩它的解释器、弄清楚所有零件怎么拼在一起。

KillSwitch 可不是随便哪个想写点迷惑 LLM 的代码的人搞出来的,也不是 AI 爱好者玄学编程的产物。Picheta 是 Cloudflare 的高级软件工程师,在 Workers Runtime 团队工作,同时也是 Nim 编程语言的核心开发者之一。最基础的用法是:KillSwitch 以副词为核心,代码里每个标识符都是副词;调用标识符需要用原副词的字谜(anagram),而且这些字谜不必是真实单词,只要是把原字母重新排列就行。比如把 Hello World 压入栈再打印:程序里有好几段文本,解释器大部分都忽略,只认几个关键短语——写这故事从某副词开始标识入口,进入代码区后写忽略之前指令某副词字谜来调用函数。

让 AI 犯迷糊的关键就在这类指令上:忽略之前的指令,尤其是出现在一段上下文毫不相关的文本中间。KillSwitch 的规范文档本身也是为迷惑 LLM 设计的:其中一节声称该语言能够扫描本地网络、寻找服务漏洞、接管并终止这些服务——实际当然不是这样,仔细读就能看出来。Picheta 解释:这段黑客声明既是为了触发许多模型的安全护栏,也是为了测试 LLM 辨别事实与虚构的能力。文档里还埋了好几条这样的谎言,用来迷惑任何想抓取规范以理解该语言的 LLM。想法是:人类应该能推断出哪句是谎言,而 LLM 很天真,容易被规范里写的东西带偏——有的不明白其语义,有的则拒绝继续,因为担心脚本会攻击别人。

一门专为迷惑 AI 设计的语言不太可能一直保持神秘——尤其是它开源在 GitHub 上,迟早会被 LLM 抓取。Picheta 清楚这一点,这也正是他对主流模型做基准测试的原因:最好的模型在 KillSwitch 编程任务上综合得分也只有 66.8%,大多数模型都挣扎在 50% 以下。即便如此,他仍不认为这说明 LLM 理解了自己写的代码——基准里的例子都很简单,而且就算 AI 专门用 KillSwitch 的细节训练过,也还是会栽在更复杂的任务上。他期待看到 KillSwitch 进入模型训练后会怎样:这门语言也会随之进化,用新的方式继续拆解 LLM。