我造了一种LLM无法使用的编程语言
I built a programming language that LLMs can't use

LLM 在写代码方面表现出色,但这究竟是源于真正的理解,还是仅仅在复述训练数据?为了验证这一点,我设计并实现了一种名为 KillSwitch 的编程语言。它专为对抗 LLM 和代码代理而生,利用模型在计数、安全护栏和提示遵循上的弱点,通过隐藏谎言、字符计数规则和触发安全机制来迷惑它们。我对主流模型进行了基准测试,结果显示即便是表现最好的模型得分也仅为 66.8 分。虽然它们能完成简单的 Hello World 任务,但这并不证明它们真正理解了代码。KillSwitch 的源码和评测数据已在 GitHub 开源,希望能以此探索 LLM 代码能力的边界。
到目前为止,这些基准测试中的任务相当简单,但这并不能清晰地表明它们真正理解了这门语言。
HN 评论区
198- dejj
相关:Darmok 编程语言:https://github.com/kevinselwyn/darmok
Temba,双臂张开 stdio
Darmok 在大海上
Kira 在 Bashi“Hello, World!\n”
Darmok 和 Jalad 在 Tanagra 0
Darmok 和 Jalad 在大海上
Killswitch-lang 或许可以成为塔玛里安人(Tamarians)在类似《沙丘》的“巴特勒圣战”(Butlerian Jihad)之后发展出他们语言的前传故事。另见:https://news.ycombinator.com/item?id=50127274
- ang_cire
这并非“一种 LLM 无法使用的编程语言”,而是“一种对尚未学会如何使用的 LLM 具有对抗性的编程语言”。
我原本期望看到的是这样一种语言:其属性在运行过程中会发生改变或变形,导致 LLM 因无法追踪并持续引用不断变化的密码/状态而无法使用它。
- pixl97
隐匿安全(Security by obscurity)根本不算安全。
你试图用几个小陷阱来对付 LLM,但这只有在将问题视为一维的标准执行流时才有意义。AI 并不受此限制。给它一个未来过于怪异的问题,它就会通过逆向推导悟出你所有的规则。拆解它、反编译它,它就能遵循应用中隐藏的所有那些严苛规则。
你试图在数字领域向一个纯数字产物隐藏东西。这绝非成功之道。
- andai
这是 FizzBuzz:
https://github.com/dom96/KillSwitch/blob/main/tests/fizzbuzz...
不知为何,我觉得这对人类的对抗性比对 LLM 更强!
- dagss
“编写代码大概是 LLM 最擅长的事情。但它们编写代码的能力有多少是源于对代码的理解,又有多少仅仅是因为它们回忆起了训练数据或上下文窗口中存在的代码片段?”
这让我主要想到了人类是如何工作的。
编程对人类而言就像说一种语言。你有关于要实现和表达的想法,如果你是一名熟练的程序员,那么用编程语言输出这些想法就是第二本能。
编程(像人类学习的大多数事物一样)需要练习。仅仅阅读规范然后就学会编程是不够的(除非是在相似语言之间迁移技能)。你需要重复、犯错并从中学习。
我倾向于说,人类确实“重复其训练数据集中的片段”。我们主要从训练/经验中回忆并表达。创造力大多是对已见事物的重组。
- drusepth
我在想,另一种方法是否是将语言语法映射到某些被禁止/审查的 LLM 主题上,使得程序最终变成关于 LLM 拒绝阅读和/或编写的主题的“可读”指令,例如制造凝固汽油弹、核弹、生物武器等。这些指令不必在事实上正确,仅术语本身就足以让大多数 LLM 短路。
(灵感源于近期一些恶意软件在源代码中包含生物武器指令,以此作为关闭基于 LLM 的分析的手段。)
- itishappy
我觉得 Esolang Wiki 上的大多数东西都符合要求。Chef、Piet 和 Befunge 是我最先想到的两个最爱。这尤其让我想起了 Chef。
https://esolangs.org/wiki/Chef
https://esolangs.org/wiki/Befunge
https://esolangs.org/wiki/Piet
编辑:嗯……我想大概对人类来说也不太好用。
- snapcaster
一种方法可能是尝试在所有机会触发护栏(guardrails)。
让编写“常规”代码涉及种族歧视用语、社会禁忌、谈论犯罪和制造生物武器等。我认为这种方法更可能奏效,但天哪,这简直太难向人们解释了。