LARP LANGUAGE-AGENT ROLE PLAY FOR OPEN-WORLD GAMES

摘要

语言智能体在特定场景和有限时间内展现出了令人赞叹的问题解决能力。然而,随着开放世界模拟的复杂性不断演变,迫切需要能够灵活适应复杂环境并持续保持长期记忆以确保连贯行动的智能体。为了弥合语言智能体与开放世界游戏之间的差距,我们推出了用于角色扮演的语言智能体(LARP),它包含一个涵盖记忆处理和决策辅助的认知架构、一个具有反馈驱动的可学习行动空间的环境交互模块,以及一种促进各种角色一致性的后处理方法。LARP 框架优化了具有独特背景和角色的用户与智能体之间的互动,最终提升了开放世界环境中的游戏体验。此外,它还凸显了语言模型在娱乐、教育及各种模拟场景等一系列领域的多样化应用。项目页面发布于https://miao-ai-lab.github.io/LARP/

引言

大型语言模型(LLMs)是一类机器学习模型,能够执行多种自然语言处理(NLP)任务,如文本生成、语言翻译以及以对话形式回答问题。“大型” 这一术语指的是语言模型在学习过程中能够更新的大量参数。随着预训练生成模型技术的发展以及大规模综合数据集的构建,一些表现优异的大型语言模型拥有多达数千亿个参数 [图夫龙等人,2023 年;拉德福德等人,2018 年、2019 年;布朗等人,2020 年;欧阳等人,2022 年;OpenAI,2023 年]。此外,由于大型语言模型的进步,人工智能实体近年来成为热门话题。这些人工智能实体通常被称为智能体 [罗素和诺维格,2010 年;伍尔德里奇和詹宁斯,1995 年],是大规模人工智能系统的基本组成部分。通常,在通用人工智能领域,智能体是一种人造实体,它可以通过传感器感知周围环境、做出决策并通过执行器做出响应。随着大型语言模型和智能体的发展,出现了将它们结合为一个称为语言智能体的单一实体的新趋势。这些语言智能体是通过整合大型语言模型和智能体设计而构建的 [王等人,2023a;习等人,2023 年;苏默斯等人,2023 年]。

作为与计算机密切相关的行业,游戏与通用语言智能体的发展愈发紧密相连。大语言模型和智能体的应用也越来越广泛。在相关研究中,有大量文献探讨了语言智能体在文本游戏 [丹贝科迪等人,2020 年;辛格等人,2021 年;姚等人,2021 年;乌尔班内克等人,2019 年] 和对抗性游戏 [OpenAI 等人,2019 年;阿鲁库马兰等人,2019 年] 中的应用。与此同时,随着大语言模型能力的提升,开放世界游戏已成为语言智能体应用的前沿领域。这是因为开放世界游戏中存在独特且具有挑战性的场景,为通用语言智能体提供了丰富的实践土壤。开放世界游戏呈现出丰富、动态且引人入胜的环境,包含复杂的任务和故事情节。它们需要借助智能体为非玩家角色赋予多样化的行为。尽管众多研究已经提出了通用的架构

尽管语言智能体已应用于《我的世界》等开放世界游戏中(Lin 等人,2023 年;Park 等人,2023 年),但通用智能体与开放世界游戏的整体需求之间仍存在差距。通用语言智能体旨在解决现实环境中的各种问题,其主要要求是通用性和对人类行为的模拟。这些智能体能够适应各种环境和任务,不受固定角色的限制。然而,这些通用语言智能体在实际的开放世界环境中面临着重大挑战。这些挑战包括但不限于理解复杂环境、记忆长期事件、生成与角色和环境设定相符的表达,以及从与环境的交互中持续学习。

因此,在这项工作中,我们提出了一个面向开放世界游戏的、以游戏为导向的角色扮演智能体框架 —— 角色扮演语言智能体(LARP)。LARP 专注于将开放世界游戏与语言智能体相融合,采用模块化方法进行记忆处理、决策制定以及从交互中持续学习。在智能体的内部描述中,我们基于认知心理学设计了一个复杂的认知架构,赋予 LARP 框架下的智能体较高的可玩性和独特性。为了产生更逼真的角色扮演体验,我们利用开放世界游戏环境的数据和上下文、预先设定的个性、知识、规则、记忆以及后置约束对智能体进行规范,这可以看作是通用语言智能体中的一个特定案例。至于一般的智能体架构,它通常需要一个大规模语言模型。然而,我们的架构整合了一组较小的语言模型,每个模型针对不同领域进行微调,以分别处理各种任务。这种设计为开发用于开放世界角色扮演游戏的语言智能体带来了新的体验和视角。

image-20250524144544244

图 1:LARP 的认知架构概述。

本文余下部分的结构安排如下:第 2 节讨论了智能体框架和智能体组件方面的相关研究。在第 3 节中,我们介绍 LARP 的认知架构部分。在第 4 节中,我们重点介绍环境交互模块,在第 5 节中,我们介绍智能体多样化个性的校准。第 6 节进行讨论,随后在第 7 节对全文进行总结。

相关工作

智能体框架

首先,我们将介绍一些与语言智能体角色扮演和模拟相关的研究,这些研究旨在提升大语言模型的角色扮演能力并突出其独特特征。这些研究还旨在增强智能体与用户之间的交互能力,使智能体显得更具自我意识 [Wang 等人,2023b;Shao 等人,2023;Shanahan 等人,2023;Li 等人,2023a]。其他研究则聚焦于多个智能体之间的角色扮演与交互,其中包括协作完成任务 [Li 等人,2023b;Chen 等人,2023a;Qian 等人,2023;Li 等人,2023c;Wu 等人,2023]、模拟日常活动 [Lin 等人,2023;Park 等人,2023;Wang 等人,2023c;Liu 等人,2023a] 以及推动辩论进展 [Liang 等人,2023;Du 等人,2023;Chan 等人,2023] 等场景。

除此之外,语言智能体也应用于开放世界环境中。不仅在基于文本的游戏中有应用实例 [乌尔班内克等人,2019 年;科特等人,2019 年;豪斯克内希特等人,2020 年],在诸如《我的世界》等开放世界环境的探索任务中也有应用 [王等人,2023 年 d、e;朱等人,2023 年]。

智能体组件

在本节中,我们将介绍一些与语言智能体组件设计相关的研究。一个智能体系统通常分为三个部分:记忆、规划和行动(工具使用)[翁,2023]。记忆系统是事实、思考等内容的储存库,需要具备存储和检索能力。因此,记忆方面的研究主要涉及输入 / 输出功能,包括记忆压缩 [胡等人,2023]、存储和检索 [朴等人,2023;钟等人,2023;黄等人,2023]。

规划组件负责与智能体行为和语言相关的决策方面。智能体的能力在很大程度上取决于这一部分。规划能力 [Yao 等人,2023 年;Liu 等人,2023b;Yao 等人,2022 年;Shinn 等人,2023 年;Liu 等人,2023c;Wang 等人,2023f] 和推理能力 [Wei 等人,2022 年;Madaan 等人,2023 年] 在该组件中得以实现,相关工作通常围绕这两种能力展开。

最后一个部分是工具使用和行动,这意味着智能实体的能力得到了增强,帮助它们执行更复杂、更困难的任务。这部分的研究包括工具使用 [中野等人,2021 年] 和学习新行动 [席克等人,2023 年]。

认知架构

认知架构是开放世界游戏中角色扮演语言智能体的一个基本组成部分。它提供了一个逻辑框架,并使智能体能够进行自我识别。认知架构如图 2 所示。它由四个主要模块组成:长期记忆、工作记忆、记忆处理和决策。长期记忆模块是主要的存储库,具有巨大的存储容量来存放记忆。工作记忆则像一个空间有限的临时缓存来存储记忆。记忆处理模块是认知架构中最重要的单元。然后,决策模块根据检索到的信息推导出智能体的后续行动。

image-20250524144606698

图 2:LARP 的认知工作流程。这代表一个循环:来自长期记忆和观察的信息在记忆处理模块中进行处理,然后传输到工作记忆模块。工作记忆模块中的信息与观察到的信息一起输入到决策辅助模块,最终生成决策或对话。记忆处理主要有三个阶段:编码、存储和回忆。编码是将信息转化为可存储在记忆中的形式的过程。存储是在记忆中保存信息的过程。回忆是从记忆中检索信息的过程。

长期记忆

在认知科学中,长期记忆(LTM)由两种类型的记忆组成:陈述性记忆和程序性记忆。陈述性记忆又进一步分为语义记忆和情景记忆 [莱尔德,2019 年,图尔文等人,1972 年]。语义记忆是指通过关于世界的概念性和事实性知识获得的一般性知识记忆。在开放世界游戏的背景下,它可以被视为封装游戏规则以及与相关世界观一致的记忆的部分。在该系统中,我们将语义记忆分为两部分。其中一部分通过外部数据库实现,因为其内容不经常变动。同时,一些语义记忆以符号语言的形式存储在长期记忆模块中。

情景记忆是指个体对自身经历的特定事件的记忆。这些记忆可能与其他玩家或智能体相关。在我们的记忆系统中,长期记忆模块采用了向量数据库来存储和检索这些记忆。由于记忆可能会被遗忘,因此引入了相关的衰减参数,随着时间的推移,关联度分数会降低。在与大语言模型进行推理时,可以通过向量查询轻松检索此类记忆内容。

程序性记忆指的是无需有意识思考就能执行的动作或技能 [罗迪格,1990],比如游泳、骑自行车等。这些具有动作属性的技能,在我们的系统中被表示为动作空间中的应用程序编程接口(API)。动作空间分为公共 API 和个人 API。个人 API 可以通过学习来扩展 [苏默斯等人,2023],这在第 4 节中有提及。

在长期记忆模块中,我们将所有感知到的记忆分别存储在语义记忆区和情景记忆区。我们提出了一种名为基于问题的查询方法,该方法生成自问问题作为查询语句,可用于向量相似度搜索和谓词逻辑搜索。这种方法有助于在回忆模块中检索语义记忆和情景记忆,从而提高记忆利用的整体效率。

工作记忆

工作记忆主要保存执行复杂认知任务(如推理和学习)以及交互任务所需的观察信息和检索到的长期记忆【巴德利,2003 年;米勒等人,2017 年】。这些信息通常是通过智能体的观察获得的,以游戏方提供的自然语言数据形式呈现。短期记忆,顾名思义,代表了记忆的一个阶段,它在短时间内保留信息,一般只持续几秒到一分钟【阿特金森和希夫林,1968 年】。对于人类而言,短期记忆中保留项目的平均容量约为 7±2 个,保留时长约为 20 到 30 秒【米勒,1956 年】。在这项工作中,这两个概念被实现为同一个模块,统称为工作记忆。在我们的架构中,它作为一个数据缓存存在,信息从其中提取并放入提示的上下文环境中。其提取过程将在记忆处理和决策部分进一步详细说明。

内存处理

记忆处理模块主要负责处理已存储和即将存储的记忆。记忆的三个主要阶段是编码、存储和回忆 [梅尔顿,1963 年]。具体来说,感知到的输入信息被编码并转化为长期记忆中的内容,使其能够在长期记忆空间中被回忆起来。在实时角色扮演(LARP)中,我们通过处理游戏中提供的所有结构化观察信息,将其与检索到的内容相结合,并存储在工作记忆中来模拟这一过程。这些信息作为决策模块中一系列逻辑处理单元的输入,不断更新工作记忆中的内容。一旦工作记忆的长度达到一定阈值,就会触发反思,在此期间过滤掉无效记忆,并将处理后的自然语言记忆和符号语言记忆分别存储为情景记忆和语义记忆。

记忆编码的核心是语言转换系统。通过对齐语言模型和概率模型,自然语言被转换为概率编程语言(PPL)[Wong 等人,2023 年] 和逻辑编程语言。概率编程语言主要处理概率推理,而逻辑编程语言主要涉及事实推理。此外,记忆编码还应受到先验知识一致性的影响,这意味着过去的知识会影响当前的理解 [巴特利特,1995 年]。记忆的存储在长期记忆部分已经详细阐述。

对人类来说,回忆是指从过去检索信息的心理过程。而在我们的架构中,它是从长期记忆中检索信息的过程。它首先涉及从长期记忆中进行复合检索,包括通过向量相似性和谓词逻辑进行搜索。首先,我们采用自问策略来形成查询,促使大语言模型(LLM)提出有关智能体的观察、个性和经历的问题。在获得查询后,我们采用 3 种方法进行检索。对于逻辑编程搜索,大语言模型会用一种逻辑编程语言生成一个查询,根据可用的规则和事实来回答自问的问题。对于相似性搜索,有两种方法可用。一种方法是将自问的问题作为向量相似性搜索的查询,与情景记忆向量数据库中的问答对进行匹配。另一种方法是使用从自问问题中提取的关键词与同一数据库中的自然语言记忆进行匹配。这个过程将重复进行,直到获得最终答案,这也可以被视为语义检索 [普雷斯等人,2022 年]。图 3 展示了详细的控制流。

基于回忆能力,我们的架构采用思维链(CoT)[魏等人,2022年]对检索到的内容和观察到的信息进行推理,并执行记忆重建,即利用先验知识在一定程度上影响观察到的事实[洛夫特斯和帕尔默,1974年],尽管重建的记忆可能会被扭曲。此外,我们还在回忆工作流程中模拟了人类遗忘的过程。当检索系统运行时,我们引入一个由威克尔格伦符号表示的衰减参数,来标记该记忆的遗忘概率[威克斯特德和卡瓦纳,2007年]。计算公式如下:
$$
\alpha = \alpha \lambda N (1 + \beta t)^{-\psi}
$$
在这里,$\lambda$表示重要度,由评分模型给出。$N$ 代表该记忆的检索次数,$t$ 是上次检索后经过的时间。$\psi$ 是每个字符的遗忘率,$\alpha$ 和 $\beta$ 分别是重要性和时间的缩放参数。通过多轮记忆重建和遗忘过程,我们的认知架构最终可以模拟记忆扭曲的实例。

image-20250524144619144

图3:回忆心理过程的详细控制流程。首先针对观察内容进行自我提问,以得到自我提问的问题。将这些自我提问的问题作为查询内容,采用不同的检索方法。1. 基于查询内容,用逻辑编程语言和概率编程语言生成谓词逻辑语句。2. 从查询内容中提取关键词后,进行向量相似度搜索。3. 基于查询内容与问答对中的问题之间的句子相似度,搜索问答对。

$Q_{self-ask}$ 表示用作查询内容的自我提问的问题,$Q_{logic}$ 代表谓词逻辑查询语句,$Q_{key}$ 是提取的关键词,$Q’A$ 代表问答对。

决策制定

决策模块在观察和工作记忆的共同作用下产生最终决策。决策模块的核心部分是一组有序的可编程单元。每个单元将处理工作记忆和上下文环境中的内容,并实时将结果更新到工作记忆中。这些单元可以是简单的信息处理单元,如进行情感计算的单元,也可以是配备了经过特定微调的大语言模型的复杂单元,如意向分析和输出格式化单元。这些单元具有无限的可扩展性,可以处理所有类型的记忆处理任务。当每个单元与工作记忆进行通信时,它会实时更新工作记忆,使智能体在过程中观察发生变化时能够及时做出反应。这些单元的执行顺序将由一个语言模型助手确定。决策模块的最终输出可以是给非玩家角色(NPC)的任务或对话内容。

环境交互

对于开放世界游戏中的角色扮演语言智能体而言,通过认知架构基于当前观察生成任务,仅能在智能体内部达成目标。然而,在具有自由行动和丰富游戏内容的开放世界游戏中,智能体需要通过连接内部与外部来与游戏环境进行交互。在运用语言智能体与开放世界游戏环境进行交互方面已有诸多研究成果 [Wang 等人,2023d;Zhu 等人,2023;Yang 等人,2023;Wang 等人,2023e]。例如,Voyager 采用自动课程的概念,通过向 GPT4 输入环境观察的内容和状态来获取目标。然后,促使 GPT4 生成实现这些目标的功能代码。该论文还提出了技能库方法,即将生成代码的描述作为键,代码本身作为值进行嵌入,从而实现较高的……

image-20250524144630600

图 4:环境交互

通过添加键值对来融入新技能的可扩展性。章鱼(Octopus)利用视觉语言模型(VLM)来获取观察结果。然而,这种方法可能导致数据特征分布的维度较高,从而导致可控性较差。此外,视觉语言模型的运营成本较高,并且在游戏中收集数据集的先验知识也具有挑战性。

图 4 展示了基本交互流程。“内部” 指的是工作记忆以及根据当前情况需要执行的任务,这些任务由观察和认知架构生成。“行动空间” 是智能体在游戏世界中可执行的行动应用程序编程接口,包括公共和个人应用程序编程接口。个人应用程序编程接口库存储任务与应用程序编程接口对,而公共应用程序编程接口是基本行动。一个个人应用程序编程接口可以是一系列基本行动,有助于快速决策和应用程序编程接口的复用。

一旦我们在决策模块中生成了相应的计划,我们首先尝试将整体任务目标分解为几个子任务目标。这些子任务目标呈现为严格有序且对顺序敏感的安排。对于每个任务目标或子任务目标,整个系统会将其与工作记忆进行整合。然后,系统会使用检索器分别在个人 API 库和公共 API 库中进行搜索。如果任务对应的操作已存在于个人 API 库中,该操作将立即执行。否则,系统会使用整个动作空间和内部内容完成相应的提示,通过微调的大语言模型生成结构化代码。生成的代码块成功执行并验证后,将以(任务,API)的形式作为新接口存储在个人 API 库中以备将来使用。如果验证失败,反思单元将被激活以生成新的代码块 [申恩等人,2023 年]。

同时,我们还收集配对的提示和生成的代码,作为微调代码生成大语言模型的训练集 [帕蒂尔等人,2023 年]。在成功执行和验证后,结果通过基于人类反馈的强化学习进行反馈,以增强模型的能力。

性格

在角色扮演中,不同个性对于提升语言智能体的认知能力至关重要。协调可变的个性特征,能让语言模型更好地理解不同观点,并描绘出各种文化和社会群体。在复杂场景中扮演不同角色的语言模型,必须以其独特的方式进行深度理解、回应和表达。这就要求模型具备类似人类的思维过程,且拥有丰富多样的个性。理解多样化语言表达的生成方式、处理多元文化内容,以及展现不同的思想、观点、情感和态度,所有这些都需要模型适应这些独特的个性。因此,本节将深入探讨其实现方式。

LARP 采用模拟一组经过不同对齐方式微调的模型的策略,以应对智能体的多样化观点。这些模型可能应用于不同模块。在训练阶段,我们预训练了几个不同规模的基础模型。我们的预训练数据集包含不同文化和群体的观点。预训练后,这些基础模型在一系列关于人物角色和性格特点的指令数据集上进行有监督微调(SFT),以增强指令遵循和角色扮演能力 [Chen 等人,2023b;Dong 等人,2023]。这个指令数据集是通过基于 SOTA 模型生成的问答对进行数据提炼而建立的。然后,通过基于人类反馈的评估、修改和调整对该数据集进行优化。

可以创建多个数据集,并针对反思、代码生成和意图分析等能力对 LoRA(低秩自适应)进行微调。这些 LoRA 可以动态集成到不同规模的基础模型中,创建一个具有不同能力和特性的模型集群。这些能力涵盖语言风格、情感、动作生成、反思、记忆重构等任务。

然而,微调语言模型以构建不同的 LoRA 以进行角色扮演的主要挑战之一是获取质量数据。成功的微调需要高质量的自定义数据集,需要仔细构建这些数据集以捕获角色的各个方面,包括他们的语言风格、行为风格、个性特征、成语、背景故事等。数据集的构建需要大量的文学创作、剧本汇编和角色研究,以确保生成的语言不仅适合角色的角色和特征,而且以适当的方式与用户互动 [Wang et al., 2023b]。

为丰富智能体的多样性,我们设立了多个后处理模块,包括行动验证模块和冲突识别模块。行动验证模块是环境交互模块的一部分,用于检查生成的行动能否在游戏中正确执行。相反,在认知架构中,冲突识别模块检查决策和对话是否与角色关系、个性和游戏世界观存在冲突。一旦检测到此类冲突,该模块将采取诸如拒绝结果或重写等措施,以防止智能体行为不符合角色设定。

讨论

多智能体协作与智能体社会化

在本文所提出的框架下,单个语言智能体进行角色扮演,不足以解决开放世界游戏中创造丰富内容的问题。为了让由智能体支撑的每个角色栩栩如生,需要建立一个强大的社交网络。一种可行的方法是在大语言模型驱动的智能体之上构建合适的社会学机制和行为,以确保非玩家角色在经过大量的角色扮演推理后,仍能保持其理性和逻辑。

模型集群的置信度与评估反馈系统

将语言模型与认知科学相结合,能使语言智能体更贴近人类真实认知。这种方法有效缓解了单个大模型因数据不足而无法提升角色扮演效果的问题。同时,由于认知系统仅由领域任务构成,经过微调的小规模模型就能取得不错的性能,与微调大模型相比还节省了成本。然而,由于语言模型输出结果具有随机性,每个任务产生的结果累积偏差会如何影响整个认知架构的偏差难以预测,这很困难。可以说这样一个扭曲的智能体可被称为类人可信智能体。因此,需要一个相应的评估和测量框架,对认知系统的扭曲施加约束并使其收敛。为整个系统建立测量和反馈机制,以测量每个逻辑单元的逻辑偏差,能够优化系统的稳健性,并将单个系统扭曲对整体系统的影响降至最低。

结论

在本研究中,我们提出了一个面向开放世界游戏的语言智能体框架,并从认知架构、环境交互以及与不同价值视角的一致性这三个方面对该框架进行了详细阐述。在认知架构方面,我们运用了认知科学中更为复杂的技术,使智能体能够做出更合理的决策,同时实施后处理约束,以防止智能体出现过度自由的情况,从而使其在角色扮演场景中更接近真实的人类行为。我们设想,我们的工作在开放世界游戏领域具有巨大的潜力,能够为这一传统领域注入新的活力,并最终提供类似于《西部世界》的体验。