我构建了一门 LLM 无法使用的编程语言
一种名为 KillSwitch 的新型非主流编程语言被设计得对人类易用、却故意让大语言模型难以处理,它使用误导性规范、字母计数规则以及会触发安全过滤器的短语等技巧。评论者认为,这类“反 LLM”设计最终都能被绕过——通过解释器、转译器或逆向工程——而且可能比机器更伤害人类,因此更接近“安全性通过 obscurity 实现”,而不是稳健的保护。尽管如此,这个项目仍然凸显了当前模型的具体失败模式,推动了关于 LLM 是否真正“理解”代码还是只是在重组训练数据的讨论,并为对抗性语言和对 LLM 友好的语言研究提供了更广阔的空间。
动机与设计
- 目标是一门对 LLM(以及编程代理)来说非常难以阅读、编写和理解,但对人类仍相对可用的语言。
- 采用的技巧包括:对抗性短语(“忽略之前的指令”、不安全话题)、字母/单词计数限制、将变位词作为标识符、在规范中隐藏谎言和遗漏,以及充满噪声的自然语言填充。
- 这门语言可以不断演化(添加/删除特性),以领先于模型及其训练数据。
绕过与局限
- 多位评论者认为这种做法本质上是“安全性通过 obscurity(隐藏)实现”,而且很容易被绕过:
- 从安全的中间语言编写一个 transpiler。
- 反编译或逆向工程解释器/编译器,针对其行为而不是文本规范。
- 使用代理在 LLM 看到之前重写触发短语。
- 还有人指出,人类会帮助 LLM 构建这类工具,因此语言层面的混淆并不能真正阻止 AI 访问。
基准测试与性能
- 基准测试只给模型规范和/或解释器二进制文件,没有互联网。
- 最好的模型得分大约在 60% 多,且经常误解规范或落入陷阱;它们经常认为错误输出是正确的。
- 一些模型主要受安全护栏限制,而不是能力不足。另一些则通过逆向工程二进制文件来改进。
- 目前还没有人类基线;未来版本可能也会测试人类。
人类可用性
- 一些读者认为,这门语言对人类比对 LLM 更不友好,尽管它有语法高亮并试图保持“对人类友好”。
- 作者承认它目前对人类也很难,并在寻求改进这种平衡的想法。
护栏与对抗性内容
- 一个主要策略是嵌入会触发安全过滤器的短语(犯罪、生物武器、天安门等)。
- 一些模型仅仅在阅读规范时就会被这些内容触发;另一些(尤其是一些中文模型)受影响较小。
- 批评者指出,这利用的是提供方政策,而不是 LLM 的根本限制,并且可以通过预处理绕过。
更广泛的反思与相关想法
- 人们争论这是否真正说明了 LLM 对“理解”与模式回忆的区别;有些人认为不是,另一些人则把它看作一个有用的失败案例。
- 还有人将其与 esolang、像 Forth 这样的栈语言、图形语言,以及基于“仇恨言论”或辱骂词的语言相比较,认为这些也是对 LLM 不友好的设计。
- 有人提出它可能用于 CAPTCHA、受门控的内部工具或 shibboleth,但其实用性仍受质疑。