准备好,此前曾轰动全体AI社区的斯坦福智能体小镇,现在已经正式开源!
项目地址:https://github.com/joonspk-research/generative_agents
在这个数字化的「西部天下」沙盒虚拟城镇中,有学校、医院、家庭。
25个AI智能体不仅能在这里上班、闲聊、social、交友,乃至还能谈恋爱,而且每个Agent都有自己的个性和背景故事。
不过,它们对付自己生活在仿照中,可是绝不知情。
英伟达高等科学家Jim Fan评论道——
斯坦福智能体小镇是2023年最激动民气的AI Agent实验之一。我们常常谈论单个大措辞模型的新兴能力,但是现在有了多个AI智能体,情形会更繁芜、更引人入胜。
一群AI,可以演绎出全体文明的蜕变进程。
现在,首先受到影响的,或许便是游戏领域。
总之,前方有无限的新可能!
网友:众游戏厂商们,你们懂我意思吧?
很多人相信,斯坦福的这篇论文,标志着AGI的开始。
可以想象,各种RPG和仿照类游戏都会用上这种技能。
网友们也非常激动,脑洞大开。
有想看神奇宝贝的,有想看行刺探案故事的,还有想看恋爱综艺的……
「我已经等不及看AI智能体之间的三角恋剧情了。」
「《动物之森》中重复、沉闷的对话,所有村落民共有的一维人格系统,都太令人失落望了。任天国赶紧学学吧!
」
「可以让《仿照人生》移植一下这个吗?」
如果能在《神界》这样的经典RPG游戏中,看到AI在NPC上运行,全体游戏体验都会被颠覆!
」
有人还畅想:这项技能在企业空间中也有很多运用处景,比如员工如何和不同的事情环境/流程变革互动。
当然,也有人表示,你们激动个啥?实在我们一贯都生活在这样的仿照中,只不过我们的天下有更多的算力罢了。
是的,如果我们把这个虚拟天下放大到足够多倍,我们肯定能看到自己。
Karpathy:AI智能体,便是下一个前沿
此前,前特斯拉总监、OpenAI大牛Karpathy就表示,如今AI智能体才是未来最前沿的方向。
OpenAI的团队最近5年把韶光花在了别的地方,但现在Karpathy相信,「Agent代表着AI的一种未来。」
如果某篇论文提出演习大措辞模型的不同方法,OpenAI内部的Slack群组中就会有人说:「这个办法我两年半前考试测验过,没什么用。」
然而每当有AI智能体从论文涌现,所有同事都会很感兴趣。
Karpathy曾将AutoGPT称为快速工程的下一个前沿
「西部天下」中的25个AI智能体
在美剧《西部天下》中,被预设了故事情节的机器人被投放到主题公园,像人类一样行事,然后被重置影象,在新一天再被投放进自己所在的核心故事情节。
而在今年4月,斯坦福和谷歌的研究者竟然构建出了一个虚拟小镇,让25个AI智能体在个中生存、从事繁芜行为,切实其实堪称是《西部天下》走进现实。
论文地址:https://arxiv.org/pdf/2304.03442.pdf
架构为了天生智能体,研究者提出了一种全新架构,它扩展了大措辞模型,能够利用自然措辞存储Agent的经历。
随着韶光的推移,这些影象会被合成为更高等别的反射,智能体可以动态检索它们,来方案自己的行为。
终极,用户可以利用自然措辞和全镇的25个Agent都实现交互。
如上,天生式智能体的架构实现了一个「检索」功能。
这一功能将智能体确当前情形作为输入,并返回影象流的一个子集通报给措辞模型。
而检索功能有多种可能的实现办法,详细取决于智能体在决定如何行动时考虑的主要成分。
天生式智能体架构面临一个核心寻衅,便是如何管理大量必须保留的事宜和影象。
为理解决这个问题,架构的核心是影象流(memory stream),即一个记录智能体全部履历的数据库。
智能体可以从影象流中检索干系影象,这有助于它方案行动,做出精确反应,并且每次行动都会反馈记录到影象流中,以便递归地改进未来行动。
其余,研究还引入了第二种类型的影象——反思(reflection)。反思是智能体根据最近经历天生的高等抽象思考。
在这项研究中,反思是周期性触发的过程,只有当智能体判断最近一系列事宜的主要性评分,累积超过设定阈值时,才会启动反思机制。
天生式智能体为了创建合理的方案,它们会自上而下递归天生更多的细节。
而这些方案最初只是粗略的描述了当日所要做的事情。
在实行方案的过程中,天生智能体会持续感知周围环境,并将感知到的不雅观察结果存储到影象流中。
通过利用不雅观察结果作为提示,让措辞模型决定智能体下一步辇儿为:连续实行当前方案,还是做出其他反应。
在实验评估中,研究职员对这一框架进行了掌握评估,以及端到真个评估。
掌握评估是为了理解智能体能否独立产生可信个体行为。而端到端评估,是为了理解智能体的呈现能力以及稳定性。
比如,Isabella策划一个情人节party约请大家来。12个智能体中,7个人还在考虑中(3个人有了别的操持,还有4个人没有想法)。
这一环节与人类相处模式很相似。
像真人一样交互
在这个名为Smallville的沙盒天下小镇中,区域会被标记。根节点描述全体天下,子节点描述区域(房屋、咖啡馆、商店),叶节点描述工具(桌子、书架)。
智能体会记住一个子图,这个子图反响了他们所看到的天下的各个部分。
研究者编写了一段自然措辞,来描述每个智能体的身份,包括它们的职业、与其他智能体的关系,作为种子影象。
比如,智能体John Lin的种子影象便是这样的——
John Lin是一名药店店主,十分乐于助人,一贯在探求使客户更随意马虎得到药物的方法。
John Lin的妻子Mei Lin是大学教授,儿子Eddy Lin正在学习音乐理论,他们住在一起,John Lin非常爱他的家人。
John Lin认识隔壁的老夫妇Sam Moore和Jennifer Moore几年了,John Lin以为Sam Moore是一个善良的人。
John Lin和他的邻居山本百合子很熟。John Lin知道他的邻居TamaraTaylor和Carmen Ortiz,但从未见过他们。
John Lin和Tom Moreno是药店同事,也是朋友,喜好一起谈论地方政治等等。
以下便是John Lin度过的一天清晨:6点醒来,开始刷牙、沐浴、吃早餐,在出门事情前,他会见一见自己的妻子Mei和儿子Eddy。
就这样,当仿照开始时,每个智能体都有属于自己的种子影象。
这些智能体相互之间会发生社会行为。当他们把稳到彼此时,可能会进行对话。
随着韶光推移,这些智能体会形成新的关系,并且会记住自己与其他智能体的互动。
一个有趣的故事是,在仿照开始时,一个智能体的初始化设定是自己须要组织一个情人节派对。
随后发生的一系列事情,都可能存在失落败点,智能体可能不会连续坚持这个意图,或者会忘却见告他人,乃至可能忘了涌现。
幸运的是,在仿照中,情人节派对真实地发生了,许多智能体聚在了一起发生了有趣的互动。
保姆级教程
配置环境
在配置环境之前,首先须要天生一个包含OpenAI API密钥的utils.py文件,并下载必要的软件包。
步骤1. 天生 Utils 文件在reverie/backend_server文件夹中(reverie.py所在的文件夹),新建一个utils.py文件,并将下面的内容复制粘贴到文件中:
# Copy and paste your OpenAI API Keyopenai_api_key = "<Your OpenAI API>"# Put your namekey_owner = "<Name>"maze_assets_loc = "../../environment/frontend_server/static_dirs/assets"env_matrix = f"{maze_assets_loc}/the_ville/matrix"env_visuals = f"{maze_assets_loc}/the_ville/visuals"fs_storage = "../../environment/frontend_server/storage"fs_temp_storage = "../../environment/frontend_server/temp_storage"collision_block_id = "32125"# Verbose debug = True
将 <Your OpenAI API> 更换为你的OpenAI API密钥,将 <name> 更换为你的姓名。
步骤 2. 安装requirements.txt安装requirements.txt文件中列出的所有内容(强烈建议先设置一个虚拟环境)。
目前,团队已在Python 3.9.12上进行了测试。
运行仿照要运行新的仿照,你须要同时启动两个做事器:环境做事器和智能体仿照做事器。
步骤 1. 启动环境做事器由于环境是作为Django项目实现的,因此须要启动Django做事器。
为此,首先在命令行中导航到environment/frontend_server(manage.py所在的位置)。然后运行以下命令:
python manage.py runserver
然后,在你喜好的浏览器中访问http://localhost:8000/。
如果看到「Your environment server is up and running」这个提示,意思便是做事器运行正常。确保环境做事器在运行仿照时持续运行,因此请保持这个命令行标签打开。
(把稳:建议利用Chrome或Safari。Firefox可能会涌现一些前端故障,但该当不会影响实际仿照。)
步骤 2. 启动仿照做事器打开另一个命令行窗口(你在步骤 1 中利用的仍在运行环境做事器,须要保持不动)。导航到reverie/backend_server并运行reverie.py来启动仿照做事器:
python reverie.py
此时,会涌现一个命令行提示讯问以下内容:「Enter the name of the forked simulation: 」。
举个例子,现在我们要启动一个包含Isabella Rodriguez、Maria Lopez和Klaus Mueller这3个智能体的仿照,那么便是输入以下内容:
base_the_ville_isabella_maria_klaus
然后,提示将会讯问:「Enter the name of the new simulation: 」。
这时只须要随意输入一个名称来表示当前的仿照即可(例如「test-simulation」)。
test-simulation
保持仿照器做事器运行。此阶段,它会显示以下提示:「Enter option」
步骤 3. 运行和保存仿照在浏览器中访问http://localhost:8000/simulator_home,并保持标签打开。
现在你会看到小镇的舆图,以及舆图上生动的智能体列表,并且可以利用键盘箭头在舆图上移动。
要运行仿照,须要在提示「Enter option」的仿照做事器中输入以下命令:
run <step-count>
请把稳,须要将上述的 <step-count> 更换为一个整数,表示要仿照的游戏步数。
例如,如果要仿照100步游戏,就输入run 100。个中,一个游戏步骤表示游戏中的10秒。
现在,仿照就会开始运行,你可以在浏览器中看到智能体在舆图上移动。
一旦运行完成,「Enter option」提示会再次涌现。此时,你可以通过重新输入run命令并指定所需的游戏步数来连续仿照,或者输入exit退出但不保存,输入fin则是保存并退出。
下次运行仿照做事器时,只要供应仿照的名称就可以访问已保存的仿照。这样,你就可以早年次离开的位置重新启动仿照。
Step 4. 重放仿照只需运行环境做事器,并在浏览器中访问到以下地址,即可重放已运行的仿照:http://localhost:8000/replay/<simulation-name>/<starting-time-step>。
个中,须要将<simulation-name>更换为重放的仿照的名称,将<starting-time-step>更换开始重放的整数韶光步。
Step 5. 演示仿照你可能会创造,重放中所有角色的Sprite看起来都是一样的。这是由于重放功能紧张用于调试,并不优先考虑优化仿照文件夹的大小或视觉效果。
要精确演示带有角色Sprite的仿照,首先须要压缩仿照。为此,请利用文本编辑器打开位于reverie目录中的compress_sim_storage.py文件。然后,实行压缩函数,并将目标仿照的名称作为输入。这样,仿照文件就会被压缩,从而可以进行演示。
启动演示,请在浏览器中打开以下地址:http://localhost:8000/demo/<simulation-name>/<starting-time-step>/<simulation-speed>。
把稳,<simulation-name>和<starting-time-step>与上述提到的含义相同。<simulation-speed>可用于掌握演示速率,个中1表示最慢,5表示最快。
定制仿照你有两种可选办法来自定义仿照。
方法1:编写并加载智能体历史第一种是在仿照开始时初始化具有独特历史记录的智能体。
为此,你须要实行以下操作:1)利用个中一个基本仿照开始,2)编写和加载智能体历史记录。
步骤1. 启动基本仿照
存储库中包含两个基本仿照:base_the_ville_n25(25个智能体)和base_the_ville_isabella_maria_klaus(3个智能体)。可以按照上述步骤加载个中一个基本仿照。
步骤2. 加载历史文件
然后,在提示输入「Enter option」时,须要利用以下命令加载智能体历史记录:
call -- load history the_ville/<history_file_name>.csv
个中,须要将<history_file_name>更换为现有历史文件的名称。
存储库中包含两个示例历史文件:agent_history_init_n25.csv(针对base_the_ville_n25)和agent_history_init_n3.csv(针对base_the_ville_isabella_maria_klaus)。这些文件包含了每个智能体的内存记录列表。
步骤3. 进一步的定制
要通过编写自己的历史文件来定制初始化,请将文件放在以下文件夹中:environment/frontend_server/static_dirs/assets/the_ville。
自定义的历史文件的列格式必须与附带的示例历史文件同等。因此,作者建议通过复制和粘贴存储库中已有的文件来开始该过程。
方法2:创建新的基本仿照如果想要更深度地定制,就须要编写自己的基本仿照文件。
最直接的方法是复制和粘贴现有的基本仿照文件夹,然后根据自己的哀求进行重命名和编辑。
参考资料:
https://github.com/joonspk-research/generative_agents
https://twitter.com/DrJimFan/status/1689315683958652928