我们测试了从 Haiku 到 o3-mini 在内的 50 个 LLM,看看哪些模型最擅长蛇形游戏对战。
介绍 SnakeBench,这是一个实验性的 ARC Prize 挑战,包含了 2.8K 场 LLM 之间的蛇形游戏对决。旨在测试模型如何与动态环境交互、进行实时决策和长期策略规划。
由 o3-mini 和 DeepSeek 完成的顶级 SnakeBench 对战。
ARC Prize 基金会的使命是推动开放科学发展。我们通过构建和部署前沿基准来探索「对人类来说很容易,但对 AI 来说很难」的能力差距。
我们在 2019 年创建了第一个基准测试 ARC-AGI-1。直到 2024 年,模型才达到了与人类相当的表现水平。在 ARC-AGI-1 的基础上,我们将很快发布第二个版本。
展望未来,像 SnakeBench 这样的探索有助于我们设计基准(v3+)。为了提高 AI 模型的性能,我们需要超越 V1 和 V2 的输入/输出网格格式。
未来的基准测试将有显著的不同,允许更复杂的推理、目标设定,以及在环境中培养直觉能力。我们仍处于设计阶段,像这样的玩具原型有助于塑造我们的思维。
我们从基准设计中学到了什么
- 推理模型占据优势:推理模型远超其他模型。在与其他 LLM 的对战中,o3-mini 和 DeepSeek 赢得了 78% 的比赛。
- 上下文至关重要:模型需要大量关于棋盘的数据才能玩好游戏:完整的坐标、苹果的位置、其他蛇的位置,以及如何解析 X/Y 网格的清晰说明。这种开发者直觉式的提示突显了 AI 当前的局限性。
- 明显的错误使大多数比赛缺乏趣味:大多数 LLM 无法理解游戏棋盘和跟踪蛇的位置,导致碰撞。直到我们测试 GPT-4、Gemini 2.0 和 o3-mini 时,才看到足够的空间推理能力来进行策略性游戏。
SnakeBench 排行榜
排名 | 模型 | ELO | 胜 | 负 | 平 | 苹果 | 查看 |
---|---|---|---|---|---|---|---|
1 | o3-mini | 1825 | 155 | 21 | 21 | 546 | -> |
2 | DeepSeek-R1 | 1801 | 86 | 18 | 7 | 259 | -> |
3 | Meta-Llama-3.1-405B-Instruct-Turbo | 1731 | 70 | 30 | 10 | 228 | -> |
4 | claude-3-5-sonnet-20241022 | 1689 | 133 | 44 | 15 | 424 | -> |
5 | Meta-Llama-3-70B-Instruct-Turbo | 1681 | 63 | 37 | 10 | 123 | -> |
6 | o1-mini | 1672 | 119 | 56 | 17 | 414 | -> |
完整的 50 个 LLM 排行榜请访问 SnakeBench.com。代码和结果已开源。
游戏的重要性
来自 Andrej Karpathy 的推文。
ARC Prize 的使命是衡量和引导 AI 缩小「对人类来说容易,对 AI 来说困难」的任务差距。只要我们能创造出人类可以解决但 AI 无法解决的问题,我们就还没有实现 AGI。
游戏是测量 AI 泛化能力的优秀示例,它们是易于验证的领域。而且……它们很有趣。
除了我们的主要基准(ARC-AGI-1)之外,我们进行了这个副本挑战,看看 LLM 在贪吃蛇游戏中表现如何。这将迫使模型:
- 逐回合跟踪不断变化的状态
- 管理多个目标和动态对象(得分、避免碰撞)
- 在文本环境中评估空间推理
在游戏环境中测试 LLM 的悠久历史
研究人员一直使用游戏来测试 LLM 如何规划、适应和理解复杂环境,包括:
- 基于文本的冒险游戏:GPT 风格的模型用于玩交互式小说游戏(例如 Zork 类环境),通过阅读文本描述和输入命令。
- 具身模拟任务:代理需要在 ALFWorld 中执行如「在厨房找到一把刀并放入抽屉」这样的序列任务。
- 实体机器人:Google 的 PaLM-SayCan 是一个基于 LLM 的机器人代理,可以规划现实世界的行动。它使用 LLM(PaLM)根据高级目标建议可能的下一步行动,并使用价值函数对可行的行动进行排序。
- 棋盘和策略游戏:Meta 的 CICERO 将 LLM 与战略规划相结合来玩外交游戏。如果没有特殊处理,LLM 容易做出非法或无意义的移动,因为它们并不真正「看到」棋盘 —— 它们只是从文本中预测移动。
- 视频游戏和 3D 世界:Voyager,一个使用 GPT-4 自主玩《我的世界》的代理,当然还有 Agent57 雅达利游戏玩家。
SnakeBench 方法论
从环境状态(游戏描述、传感器读数等)开始,将提示作为上下文提供给 LLM。然后 LLM 生成一个动作:左、右、上或下。
在选择移动之前进行更长时间的「思考」的模型可以获得更连贯的长期行为和更好的表现。这意味着 LLM 会进行内部推理(例如「我想避开那条敌方蛇,所以我应该远离」),然后输出动作(例如「远离」)。
对于 SnakeBench,我们以纯文本格式将棋盘呈现为二维网格给 LLM,从下到上的行标记为 0 到 9,从左到右的列标记为 0 到 9。苹果、蛇头和蛇尾用不同的符号表示。
SnakeBench 解剖图
每个 LLM 每回合都会被询问它的移动。移动同时进行,这就引入了正面碰撞的可能性。
如果一条蛇吃到苹果,就会得分并增长。如果一条蛇撞到墙或另一条蛇的身体,就会立即失败。
通过计算 Elo 评分来对特定 LLM 的胜率进行排名。
除了显示二维棋盘外,提示中还包含了额外信息:
- 敌方位置坐标
- 自身坐标
- 苹果坐标
- LLM 上一次移动的理由
- 游戏规则
这种上下文丰富的提示也是推理模型表现更好的一个关键原因。它们被训练成在输出之前进行思考。推理模型会自动进行思考,而不是在提示中人为地设计思考步骤。
以下是 DeepSeek 在一次移动中的思维链节选(完整版本在这里)。
DeepSeek 的「思考」关键部分:
- 重复已知的棋盘信息
- 评估可能的方向
- 评估苹果的位置
- 评估敌人的位置
- 提出移动建议(在这种情况下是向下)并评估替代方案
- 确认移动
好的,让我看看。我需要为我的蛇找出最佳移动。棋盘是 10x10 大小,我的蛇在 (3,4)。苹果在 (4,2)、(3,3)、(7,8)、(0,9)、(7,0)。敌方蛇在 (1,5),没有身体,所以只有一个头。
查看苹果:在 (3,3) 有一个苹果,就在我当前位置的正下方。如果我向下移动,我可以吃到那个苹果并增长。但是等等,向下移动会让我到达 (3,3),那里有个苹果。这对得分有利。但我需要确保移动到那里是安全的。有任何障碍吗?
敌方蛇在 (1,5)。它们的身体是空的,所以可以自由移动...
另一个考虑:向下移动到 (3,3) 可以得到苹果,这很好。然后,在吃掉后,我的蛇会增长。所以下一回合,身体会包括之前的位置。但对于这次移动,由于现在还没有身体,移动到苹果的位置是安全的。
其他方向:向上到 (3,5)。那是一个空位置。那里没有苹果...
等等,但是敌方蛇呢?它们在 (1,5)...
所以最佳选择似乎是向下移动到 (3,3) 吃掉苹果。这样可以得分并让蛇增长。但是等等,当你吃掉苹果时,你会增长,所以下一次移动的身体会包括之前的位置。但是由于当前身体只有头部,向下移动会增加一个段。
另外,向左移动到 (2,4) 或向右移动到 (4,4) 不会得到苹果但会是安全的...
因此,最佳移动是向下吃掉 (3,3) 的苹果,获得一分并让蛇增长。那个方向没有直接的威胁。敌人在 (1,5),不在路径上。所以我应该向下走。
下一步移动:向下
LLM 仍面临挑战
玩一场有趣的贪吃蛇游戏的性能要求目前超出了 LLM 的能力范围。虽然这种情况最终会改变,但我们观察到了当前的挑战:
- 文本格式不利于空间推理:模型将棋盘布局视为标记,而不是原生的二维数组。这导致频繁的坐标混淆:例如,朝错误方向移动或没有意识到蛇头与自己的尾巴重叠。
- 分层性能:较低层次的模型如 GPT-3.5 Turbo、Haiku 等持续早死 —— 通常在前几个回合内。它们很少得分超过一次。而中/高端模型如 GPT-4、Gemini 2.0、o3-mini 显示出更好的空间推理能力,偶尔能绕过障碍物、抢夺苹果,并延长游戏时间。
- 长期规划和记忆限制:动态环境通常需要一系列正确的决策才能实现目标。然而,LLM 在长序列中失去了关注。为了解决这个问题,我们注入了 LLM 上一次移动的理由,这样它就有机会保持一些策略稳定性。
- 对新颖性或变化的脆弱性:LLM 证明是脆弱的 —— 输入格式的小变化或不熟悉的情况都可能打断它们的推理。
其中一些问题可以通过开发者在提示中注入更多的保护措施和知识来缓解。例如,我们本可以限制 LLM 只能做出「合法」的移动。然而,你在模型中加入越多的开发者智慧,就越不能测试其推理和导航能力,而这正是这个练习的核心目的。
SnakeBench 是一次有趣的探索,研究 LLM 如何处理动态环境和实时决策。
我们期待探索其他游戏环境,帮助我们设计更好的基准来衡量 AI 能力。
查看代码请点击这里。
附录
未来工作
SnakeBench 环境可以通过增加棋盘大小和添加更复杂的障碍物(如墙壁或更多的蛇对手)来改进。引入更多的蛇和苹果将迫使更大的竞争和不可预测性,这对于压力测试 LLM 的思维链推理很有用。此外,通过更结构化或逐步的提示,持续改进提示方式可能会导致更少的棋盘状态读取错误。
o1-pro 一次性成功
初始的贪吃蛇游戏是由 o1-pro 一次性生成的。它在测试中有效地掌握了环境逻辑,几乎不需要重新提示游戏引擎。
使用的提示:
能给我做一个贪吃蛇游戏吗?
但不是自动计时而是回合制的?
可以有任意数量的玩家,所以是多条蛇。
每条蛇都会提交它想要的回合动作,然后一个「回合」就会发生。
做一个函数询问每个「玩家」想要做什么动作。
多个 LLM 决定它们想去哪里。我想让 LLM 在贪吃蛇中对战。
也要让网格大小是任意的。
我还需要一种重放游戏的方式,所以要确保存储历史状态。
Google 模型和速率限制:
尽管使用了付费等级,某些基于 Google 的 LLM 在游戏中途达到了速率限制,这扰乱了连续性。这导致许多游戏无法完成。目前还不清楚如何移除速率限制。
提示
我们使用了一个详细的提示,包括:
- 棋盘尺寸:明确的最小/最大 X 和 Y。
- 苹果位置:以坐标对列出。
- 敌方蛇位置:ID、头部和身体坐标。
- 移动历史:上次移动方向和理由。
- 移动规则:如何上/下/左/右移动、计分和碰撞条件。
查看完整提示请点击这里。