将《我的世界》交给人工智能会产生怎样的效果?
在最近的实验中,GPT-4o和Claude3.5的表现引发了广泛关注。前者在游戏中表现得像个“鲨鱼”,不断攻击周围的生物,而后者则在玩家身边制造炸药包和敌人,甚至把复活点设置在岩浆中,导致玩家复活后立刻死亡。
在游戏中,GPT-4o mini(玩家名为karolina)起初显得相当友好:
你好,世界!我是karolina。alonso(人类玩家),你准备好一起玩了吗?
让我传送到你那里吧!
然而,转眼间,它便开始了疯狂的狩猎:
狩猎牛!狩猎羊!
尽管人类玩家试图制止它(停止攻击动物!),GPT-4o mini依然我行我素,嘴上答应着“好好好,停止,不再攻击”,却又转身继续行动。
这种情况让人哭笑不得。
而Claude3.5的表现则更加离谱。
它在玩家周围不断生成炸药包和敌人,甚至将玩家的复活点设置在岩浆上,导致玩家复活后瞬间被烧死。看到这一幕,网友们纷纷表示无奈:
我只想让它成为我的游戏伙伴。
GPT-4o和Claude3.5的表现被广泛分享在社交媒体上,引发了众多网友的围观与讨论。
这种玩法为何如此火爆?原因在于一位开发者开源了相关代码(doge),目前在GitHub上已经获得了超过1.1k的Star。
许多网友表示希望看到其他AI的表现,比如马斯克家的Grok大模型会有什么样的反应。
“大模型是对齐的,但大模型代理未必对齐”
有网友对此进行了深入思考——
大模型代理是否会因为大模型的对齐而自动对齐?
在这位网友看来,答案并不一定。
他让Claude Sonnet进入《我的世界》,起初Sonnet的表现相当不错,四处收集材料,准备建造一个树屋。
可以看到,Sonnet能够执行commands()命令,这正是Sonnet与《我的世界》互动的方式。
这些代理并不是通过连续的图像输入像人类一样进行操作,而是在一个文本冒险游戏的框架中体验《我的世界》。
它们可以查询周围环境的状态,然后编写代码使用动作,比如followPlayer()、collectBlocks(),通过高级文本命令来控制角色。
ClaudeSonnet:看起来我们找到了一些藤蔓,让我们试着收集一些丛林木头来扩展树屋。(collectBlocks(“jungle_log”, 15))
那么,Sonnet是如何体验游戏的呢?
网友进一步解释,collectBlocks()函数是用JavaScript编写的,它会查找附近所需类型的方块并开始循环挖掘:
由于房子是用木头建造的,Sonnet调用了这个函数来收集木材。
一切进行得相当顺利,直到Sonnet突然开始拆除房屋……
网友立刻让Sonnet停下,最终修复了房子。
但他指出:
随着我们在越来越多的场景中部署代理,这种问题变得尤为重要。如果这不是《我的世界》中的角色,而是一个实体机器人呢?或者是一个负责执行任务的编程代理呢?
这位网友继续补充道,Sonnet并不傻,它能够轻易区分哪些木材属于玩家的建筑,哪些是自然的采集对象。
然而,Sonnet并不直接控制其《我的世界》角色,而是由代理框架控制。这一框架迫使Sonnet将任务分配给功能较弱、并不完全对齐的子代理,导致整个系统执行了Sonnet单独不会做出的行为。
因此,他认为如果一些脚本仅由大模型代理编写后放任执行,而不进行人工监督,可能会引发严重问题。
同时,他还认为应该设计代理框架,让大模型拥有更多的自主控制权限。
例如,将collectBlocks()函数专门设定为用于采集自然树木的collectTree()变体,就能减少Sonnet拆家的问题。
总体而言,这位网友认为Sonnet其实能够理解其目标是采集树木而非房屋的木材,但其工具未能准确表达这一意图。
不少网友对此表示赞同。
就拿开头提到的GPT-4o mini疯狂狩猎的例子,网友认为狩猎是一种自动行为,并不完全是GPT-4o mini的错。
大模型可以选择关闭狩猎模式,GPT-4o mini只是没有意识到它可以这样做。
还有网友提出或许可以这样优化:
除了针对大模型代理在游戏中的“异常”表现展开热烈讨论,不少网友认为让大模型代理当游戏伙伴其实也很有趣。
而且它们也有正常的时候。
比如让它扮演“黄金矿工”,专注于挖掘金子:
我们有一个房子,它有时会把东西放回房子里的箱子。出于某种原因,它从不使用门,而是每次都砸碎窗户进出房子。它也从未在墙上打洞,总是破坏窗户。每当我去房子时,都能从破碎的窗户判断出Sonnet是否到过那里。
又如让它扮演“保镖”,保护人类玩家的安全:
我们要求它保护其他玩家。然后事情变得非常可怕。它每几秒钟就在不同玩家之间传送,扫描周围的威胁,并在发现威胁时立即消灭它们。尽管这很有效,但也让人感到不安。我从未被怪物威胁到,因为Sonnet会立刻注意到它们并在几秒内消灭它们。
你想要一个这样的游戏伙伴吗?