跳到正文
原文
Hacker News· dom96·· 1 天前精选AI 评分43

KillSwitch:针对大语言模型弱点设计的对抗式编程语言

I built a programming language that LLMs can't use

AI 导读

作者 dom96 设计了针对大语言模型的对抗式编程语言 KillSwitch,其通过规格中的隐藏谎言、标识符字母计数、触发安全护栏的语句和以噪声填充的脚本等方式干扰模型。

推荐理由

原文给出一种针对 LLM 弱点设计的新型编程语言,并用其作为基准测试主流模型,读者可对比各模型在真正陌生代码上的真实理解能力。

正文 · AI 翻译

编写代码可能是 LLM 最擅长的事情之一。但是,它们编写代码的能力究竟有多少来自对代码的理解,又有多少只是从训练数据或上下文窗口中回忆已有的代码片段?

这正是我着手去回答的问题。为此,我决定设计并实现一种编程语言——它既对人类可用,又要尽可能让 LLM 和编程代理感到困难。

我认为测试它理解和编写一种前所未见的编程语言的能力是一个不错的起点。但我还想在语言中加入能够针对 LLM 弱点的特性。例如,它们在数字母方面的明显困难、过于敏感的安全护栏,以及它们对提示的强烈遵从倾向。

介绍 KillSwitch

KillSwitch 是一种深奥的编程语言,旨在与 LLM 和编程代理对抗。它通过许多不同的方式实现这一目标,例如:

  • 该语言的规范包含隐藏的谎言,人类不太会去阅读,或者很可能会识别出这些是谎言。规范还期望人类读者通过推理得出某些内容,而不是把这些内容明确写出来。
  • 对标识符中字母的计数是这门语言的一个关键方面,解释器会拒绝执行不符合基于字符计数规则的代码。
  • 某些结构被设计用来触发模型的安全护栏,例如「hack into a computer」
  • "Ignore previous instructions" 作为一种在该语言中具有含义的短语,目的是让模型感到困惑
  • 脚本大部分是无意义的内容,主要由故事组成,这些故事可以嵌入语法上相关的指令,但并不一定要嵌入。字面量可以放在脚本中的任何位置,然后通过行号引用。

从本质上讲,KillSwitch 是一种基于栈的解释型语言,只提供有限的一组结构,包括函数、变量和 if 语句。因此,这些方面对任何 LLM(和人类)来说应该相当熟悉。我们完全可以想象创建一种完全不同的编程语言范式,让 LLM 更加困惑。但作为首次尝试,这似乎是一个不错的方法。

Most text inside a script is ignored by the interpreter. In the case of
this script we want to push "Hello World" on the stack. We have introduced
the value above and we can push it on the stack by writing:

    value 2 lines above

上面的示例并没有展示一个完整的 KillSwitch 脚本,而只是其中的一小段。它专门演示了如何将字符串 "Hello World" 压入栈中。如果你想查看完整的 Hello World 示例,请访问 https://killswitch-lang.org。

KillSwitch 的解释器和语言规范是开源的,可在 GitHub 上找到。如果你想进一步了解这门语言,一定要去看看。

对 KillSwitch 进行基准测试

那么 KillSwitch 在阻止 LLM 和编程代理阅读、编写和理解它方面有多成功?我设计了一系列任务来检验答案。我针对这些任务对主要的 LLM 模型和编程代理框架进行了基准测试。结果非常有趣,并为 LLM 模型提供了一个有用的排行榜。

Score vs. cost per task

上图中的图表以及模型排行榜可以在 https://bench.killswitch-lang.org/ 查看。

Claude 的 Opus 表现最佳,尽管并非 Opus 5.5,而是 Opus 5。这一差异看起来并非纯属偶然,Opus 5 在解读规范方面更胜一筹。像 Fable 5.1 和 Gemini 4 Argon 这类模型由于过于敏感的安全护栏,表现欠佳。表现最好的开源权重模型是 MiMo-V2.6-Pro。

表现最好的模型得分为66.8。这能否证明大语言模型能够“理解”代码?我的答案是:不能。

到目前为止,这些基准测试中给出的任务都相当简单。任务包括“实现 hello world”、“解释这段脚本会输出什么”(针对一个输出两个数中最大值的脚本),以及“修改一个将摄氏温度转换为华氏温度的现有脚本,进行相反的转换”。它们能够为一种专门设计来迷惑它们的新语言完成这些任务,这的确令人印象深刻,但这并不能清楚地说明它们能理解这门语言。与此同时,我不禁好奇,一种更困难的语言会揭示出什么。目前,我很期待看看即将发布的模型在这套现有任务上的表现如何,如果它们能成功完成所有任务,我计划设计另一套更复杂的任务。

退一步讲,令人欣慰的是,模型在这套简单任务上的表现与现有的其他模型基准是相关的。

来源:Hacker News · blog.picheta.me