这是继斯坦福的25人小镇后我看到的最有意思的AI论文了。
简单来说,Jim Fan的团队做了一个类似于AutoGPT的AI代理叫Voyager,但这个代理主要是用来玩Minecraft的,给Voyager提供一个操作Minecraft的JS库,并且接入GPT-4,这期间不需要人类干预,完全有GPT-4自主根据游戏的反馈进行推理,决定下一步的任务,根据任务需要去组合或者写新的代码来推动游戏任务。
最终随着代码库的完善,Voyager能轻松在Minecraft中完成复杂的任务,取得很好的成绩。
从技术实现上来说,Voyager由3个关键的部分组成:
1. 代码生成器:根据游戏反馈、运行结果来优化和生成操作游戏的代码;
Voyager使用的是一个流行的Javascript Minecraft 操作库 (Mineflayer),GPT-4可以根据任务需要生成游戏操作代码,例如combatZombie。但在运行生成的代码后可能会遇到错误,通常有两种错误,一种是JavaScript的执行错误,比如语法错误;一种是游戏反馈的错误,比如在制作木棒之前需要再有2块木板。GPT-4可以根据错误信息对生成的代码进行优化,直到能正常执行为止。
2. 代码技能库:存储生成的游戏操作代码,检索已经生成的游戏操作代码;
每次GPT-4生成并验证一个新技能的代码后,Voyager首先会将生成的代码用GPT-3.5(省钱😄)生成详细的注释,然后对注释做Embedding,保存到向量数据库Chroma中。
当下次任务系统生成一个新的任务的时候,先用GPT-3.5根据当前游戏环境给出任务的操作说明,然后将操作说明做Embedding,去技能库检索出前5个最匹配的操作代码。再由GPT-4来决定是直接调用技能库代码,还是写新技能代码,并且尽可能重用已有技能。
3. 自动任务生成系统
首先给GPT-4设定一个终极目标:“尽可能发现更多的不同事物”,然后在游戏的过程中,向GPT-4反馈当前的状态,例如生命值、饥饿值、库存、时间和附近的实体(僵尸、河流、猪、猫、村民等),GPT-4根据这些信息来决定下一步的任务,
示例一:
库存(5/36):{‘橡木板’: 3, ‘木棍’: 4, ‘工作台’: 1, ‘石头’: 3, ‘木镐’: 1}
推理:“由于你有一个木镐和一些石头,将你的普通镐升级为石镐对提高效率会很有益。”。
任务:制作1个石镐。
示例二:
库存(6/36):{‘熔炉’: 1, ‘石镐’: 1, ‘橡木板’: 7, ‘工作台’: 1, ‘生铁’: 4, ‘煤炭’: 1}
时间:夜晚
附近的实体:僵尸
推理:由于现在是夜晚,附近有一个僵尸,现在你有一把石剑和一个盾牌装备,这是一个试着杀掉僵尸的好机会。
任务:杀掉1只僵尸。
在Minecraft这种开放环境的游戏中,这样的自动任务系统可以很好的适应开放式的探索,借助GPT-4的推理能力可以确保提出具有挑战性并且可控的任务。
最终将Voyager的结果和同类AI代理进行对比,各项数据都超出数倍,并且能完成很多复杂的任务,例如解锁科技树中钻石等级。
当然Voyager目前还有局限性,比如只支持文本,但他们计划未来通过视觉感知进行增强。
真的是了不起的尝试,整个代码都是开源的,这种自动生成任务->自动写代码执行任务->保存一个代码库可以重用的思路应该是可以很容易应用到其他领域。
不知道从这样的项目中,你可以获得什么样的灵感?欢迎分享你的想法
GPT-4 开启了一种新的范式:“训练”是代码执行而不是梯度下降。“训练模型”是Voyager迭代编写的技能代码库,而不是浮点数矩阵。我们正在将无梯度架构推向极限。
航海家号迅速成为一名经验丰富的探险家。在《我的世界》中,它获得的独特物品增加了 3.3×,旅行距离延长了 2.3×,解锁关键科技树里程碑的速度比以前的方法快了 15.3×。
我们开源一切。让通才特工在《我的世界》中出现!
欢迎大家今天尝试: https://voyager.minedojo.org
论文: https://arxiv.org/abs/2305.16291
代码: https://github.com/MineDojo/Voyager
暂无评论内容