當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

0 評論 3713 瀏覽 7 收藏 52 分鐘

本文圍繞多技術(shù)融合的虛擬人技術(shù),把握三個主題:虛擬人技術(shù)框架、多虛擬人互動框架、虛擬人玩轉(zhuǎn)Among Us,聚焦于如何利用大模型來驅(qū)動虛擬人,并結(jié)合 AI 智能體的概念和技術(shù)進行架構(gòu)設(shè)計。

2022年12月19日,Twitch上出現(xiàn)了一個名為“vedal987”的新直播頻道。該頻道沒有真人主播,只有一個可愛的二次元女孩形象在屏幕上移動和說話。她自稱為Neurosama,是一位人工智能VTuber。

從那天起,她開始了自己的直播生涯,并迅速獲得了大量關(guān)注和支持。與傳統(tǒng)基于動作捕捉的中之人范式的虛擬主播不同的是,Neuro完全是由人工智能驅(qū)動的,準確來說是由背后大語言模型驅(qū)動的。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

AI驅(qū)動的虛擬人具有許多優(yōu)點和廣闊的前景:

  • 強大的交互能力:在大模型技術(shù)的驅(qū)動下,虛擬人的表達能力、交互能力和智能化水平將不斷提高,可以與人類進行實時對話和互動。這使得虛擬人能夠理解和回應(yīng)人類的需求,提供個性化的服務(wù)和支持。
  • 高效的工作效率:由于虛擬人可以進行24小時不間斷的工作,而不需要休息和睡眠,因此它們能夠在短時間內(nèi)完成大量的任務(wù)和工作。這大大提高了工作效率和生產(chǎn)力。
  • 減少人力成本:虛擬人可以替代一些重復性和機械性的工作,從而減少了企業(yè)的人力成本。通過使用虛擬人,企業(yè)可以將人力資源用于更具創(chuàng)造力和戰(zhàn)略性的任務(wù)。
  • 提供個性化的用戶體驗:AI驅(qū)動的虛擬人可以根據(jù)用戶的需求和喜好提供個性化的服務(wù)和建議。這種個性化的用戶體驗不僅可以提高用戶滿意度,還能增強用戶對品牌的忠誠度。
  • 商業(yè)應(yīng)用場景不斷拓展:虛擬人可以應(yīng)用于廣告營銷、客戶服務(wù)、培訓教育、社交媒體、游戲娛樂等領(lǐng)域。隨著技術(shù)的發(fā)展和推廣,虛擬人的應(yīng)用場景將不斷擴大。

受到 Neuro-sama 的啟發(fā),本文中將介紹我們基于大模型驅(qū)動以及 AI 智能體思考的虛擬人技術(shù)的相關(guān)嘗試。首先,我們將介紹基于 AI Agent 思想構(gòu)建的虛擬人技術(shù)框架,然后我們將介紹在多虛擬人場景如何搭建靈活的互動框架,最后基于 AmongUs 游戲我們探索了游戲智能體的技術(shù)可能性,進一步豐富虛擬人的應(yīng)用場景。

一、虛擬人技術(shù)框架

在基于大模型驅(qū)動的虛擬人的整體技術(shù)框架設(shè)計中,我們主要參考 AI Agent 模式進行設(shè)計,并根據(jù)虛擬人的特定場景和需求進行相應(yīng)的優(yōu)化。

如下圖所示,整個虛擬人框架主要包括兩個基礎(chǔ)組件,AI 智能體和 Live2D 模型:

  • AI Agent 部分是虛擬人的大腦,包括虛擬人的人格(Persona)、知識(Knowledge)、記憶(Memory)和能力(Skill),以及虛擬人的組織邏輯、回復生成和肢體驅(qū)動等。
  • Live2D 模型則是虛擬人的形象,是虛擬形象的展示和呈現(xiàn)的載體,包括可見的外貌、表情和肢體動作等。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

1、虛擬人感知

我們將虛擬人的感知系統(tǒng)主要分為兩部分:環(huán)境信息感知和交互信息感知。

  • 環(huán)境信息即虛擬人所處的世界的信息,通俗來講,我們在進行虛擬人應(yīng)用開發(fā)時,通常需要考慮場景的設(shè)定,比如在直播的場景下,虛擬人需要能感知直播間的狀態(tài):直播間人數(shù)、粉絲送禮物等。又比如在多虛擬人場景下,每個個體需要了解該場景下是否存在可見朋友、以及朋友當前狀態(tài)等。具體實現(xiàn)時,這類信息可以以全局或局部變量的形式存儲在 Agent 類中。
  • 交互信息即指用戶與虛擬人以及虛擬人之間的交流信息,這類信息是虛擬人可以互動交流的主要依賴,以文本輸入和輸出為主,也是語言模型的基礎(chǔ)能力。

2、虛擬人大腦

虛擬人的大腦是整個大模型驅(qū)動的虛擬人的核心部分,即上圖的 AI Agent 部分。我們需要在這里定義虛擬人的角色設(shè)定、行為決策及對話生成。

(1)大模型選型

大模型驅(qū)動著整體虛擬人的行為,因此選擇合適的大模型尤為重要。由于 OpenAI 的 ChatGPT 和 GPT4因為其優(yōu)秀的推理能力以及潛在的角色扮演能力,想必會成為大家的首選。但是在虛擬人這一具體場景中,由于考量的因素不同,ChatGPT 并不一定會是最優(yōu)的選擇。在實踐過程中,我們主要的考量因素包括兩點:

  1. 響應(yīng)的實時性。雖然 ChatGPT 具備優(yōu)秀的推理能力和對話能力,但是由于其整體模型的規(guī)模導致響應(yīng)速度慢,這將會對整體的體驗帶來很大的影響。因此,在大模型的選擇時,我們可能更加傾向于規(guī)模更小、生成速度更快的模型,同時一定程度忽略模型的復雜推理能力,因為這對于展示型虛擬人往往不是必須的。
  2. 對話的擬人性。由于 ChatGPT 考慮的是通用場景,并為針對角色扮演這一領(lǐng)域針對性訓練,導致 ChatGPT 的整體回復跟傾向于正式、嚴肅的風格,并且回復內(nèi)容通常冗余啰嗦,不是自然的人類聊天,這在一定程度上會影響虛擬人的擬人性。

隨著 Llama 系列模型的開源,以及開源社區(qū)的活躍二創(chuàng),許多針對角色扮演的小規(guī)模開源大模型陸續(xù)推出。基于上述兩點考量,我們將模型選型聚焦于針對角色扮演微調(diào)的 7B~13B開源大模型,經(jīng)過社區(qū)評估和實際測試,綜合考慮以下兩個模型:

①Nous-Hermes-Llama2-13b

Nous-Hermes-Llama2-13b是基于 Llama 2 13B微調(diào)的語言模型,由經(jīng)過超過300,000條指令的精細調(diào)整。該模型在開源社區(qū)非常火爆,TheBloke/Nous-Hermes-13B-GPTQ的下載量已經(jīng)高達160K。

其微調(diào)數(shù)據(jù)包括:由Teknium提供的GPTeacher、由nlpxucan提供的Wizard LM、由Microsoft提供的GPT4-LLM和Unnatural Instructions、由jondurbin提供的Airoboros dataset以及來自Camel-AI的Camel-AI的領(lǐng)域?qū)<覕?shù)據(jù)集等。

②Pygmalion-2-13b

Pygmalion-2 13B同樣基于Meta AI發(fā)布的Llama-2 13B。Pygmalion是一個聚焦于角色扮演領(lǐng)域的開源研究組織,旨在嘗試獲得可用于對話、角色扮演和寫作故事的模型,同時可以像其他通用語言模型一樣使用自然語言進行引導。用于微調(diào)此模型的數(shù)據(jù)集包括PIPPA,以及其他幾個指令數(shù)據(jù)集和從各種RP論壇獲取的數(shù)據(jù)集。

(2)角色設(shè)定

角色設(shè)定定義了角色的性格、背景、經(jīng)歷等信息,這直接決定著生成的對話風格。有關(guān)角色大模型微調(diào)和角色定義的詳細介紹,可以參考我們的另一篇文章《一文帶你低成本打造屬于自己的 CharacterAI》。我們將定義角色的要素主要劃分為 3 類:

a. 人格設(shè)定

人格設(shè)定定義了虛擬人的特性,包括個人信息(姓名、外貌、工作等)、性格(性格特點、喜好、語氣等)、人物背景等。

b. 知識與記憶庫

除了大模型訓練過程中蘊含的海量知識外,虛擬人仍需要和自身世界觀相關(guān)的垂直知識,這里我們考慮在本地外掛知識庫,方便檢索召回。我們主要考慮三類:世界知識,即虛擬人所在場景的通用信息;實體知識,即虛擬人所了解到的重要實體信息;以及事件知識,即虛擬人自身所經(jīng)歷的事件。

記憶庫則主要存儲的是虛擬人的歷史記錄,包括短期記憶和長期記憶。短期記憶即最近 N 次對話記錄,以大模型的連續(xù)對話形式呈現(xiàn)。長期記憶則是以將對話記錄本地化存儲實現(xiàn),并在對話過程中實時召回。批量的對話數(shù)據(jù)可以通過離線的方式進行摘要總結(jié)轉(zhuǎn)換為事件。

c. 技能庫

技能庫主要用于存儲虛擬人可實現(xiàn)的技能,比如:唱歌、講故事、玩游戲等。

(3)行為決策

對虛擬人角色進行定義后,當有對話消息(Query)傳入后,首先我們需要虛擬人進行行為決策。這里考慮到互動的實時性,我們不再考慮AI 智能體標準定義中復雜的任務(wù)拆分和規(guī)劃流程,而是采用意圖識別的方式,根據(jù)虛擬人的技能庫對當前對話信息進行意圖識別來決定虛擬人的行為分支。

比如當對話消息為“Can you sing a song?”時,我們會判斷當前信息的意圖,當識別到意圖為“Sing”時,我們便可以執(zhí)行唱歌行為分支,將離線生成的歌曲音頻進行加載以及對話響應(yīng)進行生成。(歌曲生成的方案可以參考 AI 孫燕姿的技術(shù)選型:so-vits-svc)若當前意圖和虛擬人技能庫中已有能力不匹配或者當前意圖為 chat 時,我們將執(zhí)行對話行為分支。

對話行為分支,我們采用的是召回增強檢索(RAG)的方式。事先,我們將知識庫中的文檔進行文本分句切片后通過向量化之后生成 embedding 保存到向量 中,記憶庫中的聊天歷史記錄采用相同的方式,唯一的區(qū)別是在切分時,對話歷史會切分成 [對方-自己] 對話對。

然后當有 Query 產(chǎn)生時,我們利用同樣的向量化技術(shù)生成對應(yīng)的 embedding,然后根據(jù)向量相似度計算,從知識向量庫和記憶向量庫中分別召回最相關(guān)的內(nèi)容,然后在 Prompt 模板中在對應(yīng)位置進行文本替換,重構(gòu)出新的 Prompt。最終,新的 Prompt 被輸入到 LLM 中獲得當前的響應(yīng)。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

(4)語音合成

虛擬人的語音作為用戶感知最明顯的特征之一,對于整個虛擬人的表現(xiàn)力至關(guān)重要。經(jīng)過調(diào)研和實際測試,最終我們考慮兩個技術(shù)選型:微軟 TTS 和Elevenlabs 。

微軟 TTS 是一種被廣泛使用的語音合成技術(shù),擁有豐富的多語種的音色。優(yōu)點是合成質(zhì)量穩(wěn)定,響應(yīng)速度快,費用相對較低。但是它不支持語音克隆,只能從已有的音色中選擇,同時生成的語音語氣較為平淡,表現(xiàn)力差。

ElevenLabs是一家提供文本生成語音解決方案的語音技術(shù)研究公司。它可以合成高質(zhì)量語音,能夠生成高質(zhì)量的語音,同時支持語音克隆,用戶可以通過提供幾十秒語音片段,便可生成相應(yīng)的語音克隆聲音,并且語音富有情感,表現(xiàn)力強。但是它的缺點是生成速度慢,想比于微軟的 TTS 服務(wù)大約慢 3~5倍,同時費用相對較高。

針對上述兩種方案的優(yōu)缺點,我們根據(jù)不同場景的需要進行選擇。

3、虛擬人形象

(1)外貌選型

目前,在虛擬主播的外貌選型上大致可以分為 3 種方案:

  1. ?SadTalker/Video-retalk:使用圖片與音頻文件自動合成人物說話動畫的開源模型,給模型一張圖片以及一段音頻文件,模型會根據(jù)音頻文件把傳遞的圖片進行人臉的相應(yīng)動作,比如張嘴,眨眼,移動頭部等動作,適用于真人形象的虛擬人,缺點是動作幅度小,表現(xiàn)力低。
  2. ?Live2D + VtubeStudio:二次元動漫虛擬角色,可以建模多種動作,肢體豐富,缺點是受眾局限于二次元。
  3. ?Omniverse Audio2Face:3D 虛擬角色形象,可直接通過音頻文件創(chuàng)建面部動畫的AI工具,其推理和生成情緒的功能可用于制作所有面部特征動畫,將繁瑣的手動 blendshape 過程交給了 AI。

實踐中,我們最終選擇 Live2D二次元角色作為虛擬人形象。Live2D的優(yōu)點在于模型的建模相對簡單且具備優(yōu)秀的表現(xiàn)力,同時可以通過動作捕捉生成大量的動作和表情。相比于 3D 模型,Live2D 的建模和表情、口型驅(qū)動難度更低,這可以降低恐怖谷效應(yīng)的風險。

恐怖谷效應(yīng)是指1970 年日本機器人專家森昌弘提出“恐怖谷”理論,由于機器人與人類在外表、動作上相似,所以人類會對機器人產(chǎn)生正面的情感。當機器人與人類的相似程度達到一個特定程度的時候,一點點的差別都會被放大,并帶來負面和反感情緒。而當機器人與人類的相似度繼續(xù)上升,人類對其情感會再度回到正面。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

(2)口型驅(qū)動

二次元角色的口型同步一種比較簡單的方式是根據(jù)音頻片段音量決定嘴巴張合大小。具體操作步驟為:

  1. 獲取語音合成的音頻片段
  2. 針對音頻按一定步長進行切片
  3. 獲取切片的音量大小并進行歸一化,然后將其映射到 Live2D 角色的嘴巴張合。

(3)動作表情驅(qū)動

除了一些 Idel 的動作預(yù)置外,我們會引導大模型在對話過程中生成與情景相符的動作和表情。如下圖所示,我們將解析獲得動作或表情與 Live2D 已建模的動作表情進行相似性匹配,獲得最符合的表情或動作。

二、多虛擬人互動框架

在實際的應(yīng)用場景中,只依靠單個個體虛擬人往往缺乏表現(xiàn)力。為了增加虛擬主播的娛樂性和互動性,往往需要多個虛擬人的參與。因此,我們在個體虛擬人的基礎(chǔ)上提出了下面的多虛擬人互動框架。

如下圖所示,我們的多虛擬人技術(shù)框架主要包含 3 類組件:

  1. 世界沙盒:即 World Sandbox,它定義了當前虛擬人應(yīng)用所處的場景,他相當于智能體系統(tǒng)中的環(huán)境,主要定義了一些用戶配置信息(虛擬人數(shù)量、虛擬人可見性)、組件初始化(Agent 初始化、消息隊列初始化、用戶組件初始化等)以及消息管理(包括事件分發(fā)、任務(wù)展示等)。
  2. 用戶交互組件:主要包括 User 和 Live Room,分別作為交互入口獲取運營用戶互動和直播間互動信息。
  3. 虛擬人智能體:即 AI Agent+Live2D 模型,他們是虛擬人的邏輯主體。

整個虛擬人框架的通訊范式采用的是生產(chǎn)者-消費者的模式,全局維護兩個消息隊列 Event_Queue和 Task_Queue,前者用于管理互動事件消息,后者用于展示虛擬人的多媒體任務(wù)。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

User Agent主要用于用戶交互,包含語音識別 ASR 、文本輸入和指令監(jiān)聽等。User Agent 作為虛擬人系統(tǒng)與用戶交互入口之一,便于與用戶進行實時對話或運營場景切換等等。

Live Room Agent 主要用于監(jiān)聽直播間信息,主要包括監(jiān)聽直播評論彈幕、粉絲 Super Chat 、粉絲禮物互動和其他直播間信息。不同信息會分為不同的優(yōu)先級。

Event Queue 主要用于互動事件管理。它主要監(jiān)聽兩個來源,一個是用戶生產(chǎn)的互動事件(來自 User 、 Live Room等),另外一個是虛擬人生產(chǎn)的互動事件(來自 AI Agent),互動事件實質(zhì)是指對話內(nèi)容或互動內(nèi)容。在監(jiān)聽到互動事件后,World Sandbox 會將其分發(fā)至具體的 AI Agent 進行消費處理,即上圖中的distribute 函數(shù)。

分發(fā)的策略可以設(shè)置為順序執(zhí)行和規(guī)則執(zhí)行。順序執(zhí)行是指事件處理順序是固定的、依次執(zhí)行的,比如假設(shè)存在兩個虛擬人,用戶生產(chǎn)的互動事件1先分發(fā)給 AI Agent1處理后生成互動事件 2,然后再將互動事件 2 分發(fā)給 AI Agent2生成互動事件 3,然后互動事件 3 再分發(fā)給 AI Agent1進行處理。規(guī)則執(zhí)行則是根據(jù)一定的規(guī)則來進行分發(fā),比如解析對話內(nèi)容中的目標聽眾,從而將相應(yīng)事件分發(fā)給該聽眾。

Task Queue 主要用于管理虛擬人生產(chǎn)的行為展示的任務(wù)。當 AI Agent 的處理某個互動事件后會生產(chǎn)出對應(yīng)的新的互動事件以及行為任務(wù),這里一個行為任務(wù)塊通常包括:對話語音、技能行動(Skill Action)以及用于驅(qū)動 Live2D 模型的表情動作。

當任務(wù)塊發(fā)送到 Task Queue 之后,World Sandbox會按照任務(wù)塊的生產(chǎn)順序?qū)⑵浞峙浣o相應(yīng)的 Live2D 角色依次進行展示,即上圖中 display 函數(shù)。這里之所以要對所有 AI Agent 生成的行為展示任務(wù)塊進行統(tǒng)一管理,是為了避免當存在多個虛擬人時可能會存在大家同時說話導致展示混亂的情況。

執(zhí)行流程示例:

  1. 監(jiān)聽用戶或粉絲產(chǎn)生的互動消息、提出的問題或?qū)υ捫畔?,并將其發(fā)送給 Event_Queue。
  2. 當Event_Queue中有新消息到達后,World Sandbox通過配置的分發(fā)策略將其分配給對應(yīng)的 AI Agent 進行處理
  3. AI Agent 拿到新事件消息后對其響應(yīng),并生成對應(yīng)的回復信息和行為任務(wù)。行為任務(wù)被封裝為任務(wù)塊發(fā)送到 Task_Queue,回復信息則根據(jù)需要判斷是否被封裝為新的事件發(fā)送給Event_Queue進行下一步的處理(有可能不產(chǎn)生新的事件)。
  4. 當Task_Queue 中存在消息時,World Sandbox 根據(jù)生產(chǎn)的時間順序依次將對應(yīng)任務(wù)塊分配給對應(yīng)的虛擬人 Live2D 角色進行展示。

三、虛擬人玩轉(zhuǎn) Among Us

AmongUs是一款場景在太空中的狼人殺類型的游戲,玩家通過聯(lián)機一起玩耍,在游戲中我們將會進入太空,在這個封閉的世界中,尋找背叛者,并完成一項一項得任務(wù)。游戲中有兩類角色:船員(Crewmate,好人)和背叛者(Imposter,壞人)。他們有不同的目標:對于船員來說,他們需要完成任務(wù)并找到所有的背叛者并通過會議聊天投票將其淘汰;對于背叛者來說,他們需要殺死所有的船員。

《Among Us》是一款需要船員合作、推理和判斷的游戲,這對于基于大模型的具備推理能力的智能體來說進行模擬實驗十分合適。我們的模擬實驗的任務(wù)是讓智能體通過扮演上述兩類不同角色參與到游戲中,并通過推理、欺騙、自主行為決策來取得最終的勝利。我們構(gòu)建了一個可以自動玩 AmongUs 的游戲智能體,整體技術(shù)框架被設(shè)計為三部分:環(huán)境感知、行為決策和行動實施。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

1、環(huán)境感知

為了自動化參與游戲,游戲智能體需要對游戲角色所處的環(huán)境信息擁有充分的感知,因此需要了解在 AmongUs 的游戲設(shè)定中需要哪些重要的信息。經(jīng)過對該游戲的研究歸納,Amongus 中的可感知環(huán)境信息包括:地圖信息、玩家信息(位置、狀態(tài)、行為)、任務(wù)信息(列表與位置)以及舉報會議中的對話信息。

(1)地圖信息

AmongUs的游戲設(shè)定是在太空飛船上,所以玩家所處的地圖是一個密閉的游戲空間。因此對于整個地圖空間的感知變得至關(guān)重要,這需要我們對游戲地圖進行建模。

基于地圖提供的空間信息,游戲智能體可以決定如何移動角色、如何執(zhí)行任務(wù)以及與其他玩家如何互動,這對于推動游戲進程起著關(guān)鍵作用。那么我們?nèi)绾螌Φ貓D進行建模呢?一種直觀的想法就是先人為探索整個游戲地圖,然后依次將地圖的空間信息記錄下來,最后組成完整的地圖信息。

具體來說:

  1. 首先,我們需要了解如何實際地移動玩家角色,值得慶幸的是,Python 中提供了一個名為vgamepad的庫,允許我們模擬游戲手柄來驅(qū)動角色進行上下左右的移動。這樣我們就可以通過簡單的模擬將操縱桿向某個方向移動來移動角色。
  2. 然后,對于整個地圖的建模,我們可以使用圖論的技術(shù),通過移動角色在地圖上走動并將多個(x,y)坐標記錄為圖中的節(jié)點,這樣我們就可以建模得到完整的地圖。
  3. 最后,記錄下太空飛船中不同設(shè)施(比如:Boiler Room,Storage,Office,Upper Engine 等)的位置,這通常和游戲中所要做的任務(wù)位置相關(guān),有利于后面定義策略規(guī)則。

這樣我們就獲得了完整的地圖信息,這些信息將幫助智能體進行環(huán)境空間感知,為行為決策提供參考。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

通過圖論建模地圖的好處有很多,比如我們可以了解整個地圖的空間結(jié)構(gòu),比如哪里是互通的、哪里是有障礙的。比如同時基于圖論的已有技術(shù),我們可以使用使用很多眾所周知的圖論算法(如迪杰斯特拉算法)來確定如何將角色從移動一個位置移動到另一個目標位置,這將簡化智能體做決策后的行動實施。

(2)玩家信息

在AmongUs游戲中,玩家之間需要我們需要游戲智能體可以感知其他玩家的信息,包括:

  • 當前玩家信息。玩家身份和玩家位置。
  • 玩家狀態(tài)。主要包括周圍是否存在尸體,當前的存活玩家和死亡玩家。
  • 視野范圍內(nèi)的其他玩家的相對位置。因為我們知道不同玩家在圖中的坐標,因此相對位置可以通過圖中兩點的距離得到。這一信息可以影響智能體對其他玩家的信任度(玩家是否是壞人,是否可能單獨行動)以及特殊角色的行為決策(比如背叛者將根據(jù)視野內(nèi)的玩家位置和玩家數(shù)量決定是否需要殺人以及在什么時候殺人)。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革
(3)任務(wù)信息

AmongUs 中船員的任務(wù)是完成各種任務(wù),這些任務(wù)可以分為兩類:任務(wù)欄任務(wù)和緊急任務(wù)。任務(wù)欄任務(wù)是指完成后會在任務(wù)欄上顯示進度的任務(wù),如修復電路、清理垃圾等。而緊急任務(wù)則是指需要在一定時間內(nèi)完成的任務(wù),如緊急修復氧氣供應(yīng)、緊急修復核心等。

完成任務(wù)對于船員來說非常重要,因為完成任務(wù)可以增加船員的勝利機會,并幫助船員區(qū)分誰是背叛者。背叛者可以假裝完成任務(wù),但他們無法真正執(zhí)行任務(wù)欄任務(wù),只能執(zhí)行一些特殊的任務(wù),如殺死船員、破壞設(shè)備等。

任務(wù)信息主要包括當前地圖上任務(wù)列表以及每個任務(wù)所處的位置,由于相同類型的任務(wù)可能分布在不同的設(shè)施上,因此位置信息包括設(shè)施名+位置坐標,具體形式如下:

(4)會議信息

會議信息是一類特殊的環(huán)境信息,主要是在進行緊急會議時玩家之間的聊天記錄,包括玩家和聊天內(nèi)容,這可以通過 OCR 識別或AmongUs插件獲取。

2、行為決策

在大模型出現(xiàn)前,游戲智能體的行為決策主要依靠的是強化學習。游戲智能體中強化學習的劣勢主要體現(xiàn)在以下幾個方面:

  • 樣本低效性:強化學習通常需要通過大量的試錯和反饋來優(yōu)化策略,智能體必須不斷地與環(huán)境進行實驗并接收反饋信號,這就意味著需要花費大量的時間來構(gòu)建高質(zhì)量的數(shù)據(jù)進行訓練。
  • 環(huán)境理解要求高:強化學習算法對環(huán)境的建模和理解能力要求較高,如果環(huán)境復雜或不確定性較高,強化學習的效果可能會受到限制,難以在許多現(xiàn)實場景下迅速實現(xiàn)良好的性能。
  • 好的獎勵函數(shù)難以設(shè)計:強化學習依賴于獎勵信號來指導學習過程,但如何設(shè)計合適的獎勵信號是一個挑戰(zhàn),不恰當?shù)莫剟钚盘柨赡軐е聦W習過程出現(xiàn)偏差或不穩(wěn)定。

而當智能體出現(xiàn)后,大語言模型在邏輯推理方面涌現(xiàn)出的能力,使得AI智能體的實施成本大大降低,同時保持良好的性能,比如英偉達AI智能體 Voyager、清華等機構(gòu)提出了能夠自主學習解決任務(wù)的AI智能體 Ghost in the Minecraft (GITM) 在 Minecraft 中取得的令人驚訝的表現(xiàn)。

大語言模型,如ChatGPT,在游戲智能體中進行行為決策時的關(guān)鍵在于理解游戲規(guī)則、情境和目標,以及玩家的意圖和行為,并利用這些信息來采取合適的游戲行為。這一過程中需要考慮以下方面:

  • 游戲規(guī)則:游戲都有特定的規(guī)則,這些規(guī)則可能是明文規(guī)定的,也可能是需要玩家自己探索和理解的。大語言模型需要理解這些規(guī)則,并根據(jù)這些規(guī)則來生成游戲行為。
  • 玩家意圖:理解玩家的意圖對于生成合適的游戲行為至關(guān)重要。例如,如果玩家想要攻擊敵人,大語言模型就需要生成攻擊性的游戲行為。
  • 游戲情境:大語言模型還需要理解游戲的情境,例如當前的游戲狀態(tài)、玩家的位置、資源情況等。這樣,它就可以根據(jù)這些信息來生成合適的游戲行為。
  • 策略戰(zhàn)術(shù):大語言模型需要理解游戲的策略和戰(zhàn)術(shù),例如如何在游戲中獲得優(yōu)勢、如何有效地使用資源等。這樣,它就可以根據(jù)這些策略和戰(zhàn)術(shù)來生成合適的游戲行為。

如前文的介紹的環(huán)境感知,實際上便是在感知游戲情景,而其他方面,比如:游戲規(guī)則、玩家意圖和策略戰(zhàn)術(shù)等,則需要我們在讓大模型進行行為決策時進行額外的背景設(shè)定。以 AmongUs 為例,這些游戲背景包括:

①角色:當前玩家的游戲身份,AmongUs 中不同的角色對應(yīng)不同的行動目標和行動策略

②目標:根據(jù)游戲身份的不同,游戲的目標也不同。船員的游戲目標是找出并投票出背叛者,而背叛者則需要成功殺死足夠多的船員。

③知識:即游戲規(guī)則,比如,常見的游戲規(guī)則有:

  1. 飛船上會有一定數(shù)量的船員和背叛者。
  2. 船員需要找出藏身于眾人中的背叛者,背叛者有兩種獲得游戲的勝利方式:第一種是不斷搞破壞,讓玩家所乘坐的飛船故障,不能順利返航;第二種則是不斷地殺死船員,直到剩余船員數(shù)量小于或等于背叛者數(shù)量。
  3. 當發(fā)現(xiàn)被殺死的船員尸體后,游戲進入發(fā)言投票環(huán)節(jié)。所有成員開啟演技和邏輯的較量,投出自己認為的兇手。
  4. 死亡玩家不會出局,而是繼續(xù)存在游戲中,可以修理或破壞飛船,也可以與存活玩家進行交流。

④策略:即游戲戰(zhàn)術(shù),這些策略可以從游戲社區(qū)中獲取和總結(jié)。以船員為例,常見的策略有:

  • 時刻注意其他玩家的行為和動向,特別是當有可疑玩家靠近時,要保持警惕,以避免被背叛者攻擊。
  • 如果發(fā)現(xiàn)有背叛者攻擊或發(fā)現(xiàn)尸體時,立即開啟緊急會議,并投票淘汰可疑的玩家,以避免被背叛者淘汰。
  • 快速完成所有任務(wù)并在完成任務(wù)過程中盡可能靠近其他玩家,防止獨自行動被殺。?充分利用地圖中的障礙物、管道等元素,以避免被背叛者攻擊。

⑤記憶:上面 4 種背景信息可以在游戲開始前提前預(yù)置在外部知識庫中,但是記憶模塊中的內(nèi)容則是在游戲過程中實時產(chǎn)生的。記憶模塊主要記錄游戲進程中的主要事件,比如:玩家死亡事件,任務(wù)執(zhí)行事件,會議召開事件等。這些事件信息可以幫助大模型分析和推理出哪些玩家是船員,哪些是背叛者。

⑥行動集:即可采取的原子行動,這些原子行動包括:角色移動、常規(guī)任務(wù)、特殊任務(wù)、召開會議等。我們需要提供單個原子行動的描述以及必要信息(比如:行動名稱、行動描述、重要性、位置等)

有了這些大模型進行決策所需要的信息以及環(huán)境信息后,我們便需要構(gòu)建 Prompt 提示通過大模型推理獲得當前狀態(tài)的行動列表。這里,為了讓智能體能獲得更準確和智能地在模擬環(huán)境中推理和行動,我們采用了Yao 等人提出的 ReAct 提示工程技術(shù)。

ReAct的靈感來自“行動”(Acting)和“推理”(Reasoning)之間的協(xié)同作用,通過把行動(Act,通常使用工具)獲取的外部知識,反饋給LLM幫助推理(Reason)并做出下一步的行動決策。思維鏈(CoT)提示顯示了LLM執(zhí)行推理軌跡的能力,以生成涉及算術(shù)和常識推理等任務(wù)的問題的答案(Wei 等人,2022 年)。

但是,由于無法進入外部世界或無法更新其知識,可能會導致事實幻覺和錯誤傳播等問題。ReAct則基于思維鏈改進了這一點,它是一種通用范式,它將推理和行動與LLM相結(jié)合。

簡單來說,ReAct 針對任務(wù)目標顯示引導 LLM 生成完成該任務(wù)的思考(Thought)、行動(Action)和觀察(Observation),同時,提供可獲得的當前狀態(tài)以及行動列表以提供給 LLM 作為參考。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

各種操作的反應(yīng)分解

ReAct Prompt必須包含以下四個關(guān)鍵信息:

  1. 任務(wù)指令(Instruction):Prompt必須為 LLM 提供主指令(任務(wù)目標),幾乎每個提示框架都需要,目標可以讓模型理解我們真正希望它做什么。
  2. 反應(yīng)步驟(ReAct steps):指定推理和行動計劃的步驟?!癐nterleaving thought, action, and observation steps”是ReAct 提示中使用的推理序列,也可以將其明確指定為 LLM 響應(yīng)回復的格式。
  3. 推理(Reasoning):使用通用指令(例如“思考可以推理當前情況”)或者一系列思維提示(例如“我們逐步來思考這個問題”),啟用推理功能。這可以與小樣本提示框架相結(jié)合,以提供將推理與行動聯(lián)系起來的確切示例。
  4. 行動(Actions):最后一個關(guān)鍵信息是一組行動列表,LLM 可以從中選擇一個來響應(yīng)推理思考。在上面的示例中,”Search[entity],” “Lookup[keyword],” 和 “Finish[answer]”是行動命令。

一個符合ReAct的行動流程里,包含多次Thought-Act-Obs的迭代,也就是思考-行動-觀察/分析的反復過程。

Thought(思考):反映了LLM大模型的思考過程,這體現(xiàn)出了LLM的“大腦“的作用。LLM根據(jù)輸入或者外部環(huán)境反饋生成本次迭代需要完成的行動。

Act(行動):根據(jù)思考的結(jié)果采取的具體行動,這個具體的行動最終體現(xiàn)到某個外部工具的使用,實現(xiàn)與外部環(huán)境的交互并獲得結(jié)果。

Obs(觀察):從外部行動獲取到的反饋信息,用于LLM做出下一步的行動決策。

通過這樣的循環(huán)過程,最終完成任務(wù)?;?ReAct 思想,我們可以提供游戲環(huán)境的背景和玩家狀態(tài)并指定可執(zhí)行的行動,然后通過推理將任務(wù)目標和采取行動關(guān)聯(lián)起來,完成對應(yīng)的任務(wù)。

這里我們首先指定了LLM 需要扮演的角色并設(shè)定了任務(wù)目標(RoleGoal),然后我們提供了它可以參考的信息(Game Background、Game Rules、Role Strategies、Executed Tasks、Extra Info、Your Status),以及可以選擇的行動列表(Action List),最后給定了一些特殊的限制條件(Constraint Rule)以幫助其更好的完成目標,最后指定了 LLM 的回復格式(Response Format)。

3、行動實施

在智能體根據(jù)目前的環(huán)境、狀態(tài)利用大模型推理獲得所需要采取的行動列表后,我們便需要開始實施行動了。根據(jù)我們對不同的行動類型進行了如下4類:角色移動,常規(guī)任務(wù)、特殊任務(wù)和開展會議。我們將對應(yīng)的每個原子行動進行了封裝(相當于智能體框架中的工具),當目標任務(wù)出現(xiàn)在行動列表時,智能體則依次執(zhí)行每個任務(wù)的行動流。

(1)角色移動

角色移動是一個最常見的行動,通常包含在任務(wù)執(zhí)行中,如果任務(wù)中不包含位置信息,游戲智能體則會閑逛。在智能體行為決策的輸出中通常只包含角色移動目標點信息,獲得這些信息后,角色移動的行動流程為:

  • 獲取當前起始點和目標點的圖位置坐標
  • 使用迪杰斯特拉算法規(guī)劃出移動路徑
  • 將移動路徑依次映射為游戲手柄模擬中的移動控件,驅(qū)動角色進行移動

需要注意的是,角色移動過程中需要實時監(jiān)聽感知環(huán)境,以應(yīng)對緊急事件的發(fā)生。

(2)常規(guī)任務(wù)

常規(guī)任務(wù)也叫做任務(wù)欄任務(wù),主要是船員來執(zhí)行。AmongUs 中存在許多任務(wù)欄任務(wù),每一個常規(guī)任務(wù)都被封裝成獨立的行動流,方便任務(wù)執(zhí)行過程中進行簡潔的調(diào)用。AmongUs中存在大量的任務(wù)欄任務(wù),需要一一構(gòu)建行動流,其中會使用到許多其他 AI 技術(shù)。以電路修復(Fix Wiring)任務(wù)為例,其執(zhí)行步驟為:

  1. 尋找電線:任務(wù)要求修復一些斷開的電線。不同的電線具有不同的顏色。我們需要使用一個簡單的圖像識別模型來識別游戲中出現(xiàn)的電路圖案和對應(yīng)的顏色,以判斷斷開的線路。
  2. 連接電線:基于識別出的電路信息,利用圖像匹配算法判斷需要連接電路的起止位置,然后使用Python 包pyautogui模擬鼠標控制,依次將斷開的電線連接起來。在游戲中,需要將電線的兩個端點拖動到正確的位置,使它們連接在一起。根據(jù)任務(wù)列表上的指示,連接所有需要修復的電線。
  3. 完成任務(wù):一旦將所有電線連接好,F(xiàn)ix Wiring任務(wù)就會被標記為完成。便可以退出該任務(wù),繼續(xù)完成其他行動列表中的任務(wù)或活動。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

(3)特殊任務(wù)

特殊任務(wù)主要是背叛者需要執(zhí)行的任務(wù),這類任務(wù)比較簡單,通常為殺人和破壞設(shè)施,只需要在對應(yīng)玩家和設(shè)施旁模擬鼠標點擊便可以直接執(zhí)行。

(4)開展會議

會議開展的目的是為了討論和展開投票,以找出背叛者。船員可以利用會議的時間來分享自己的觀察和懷疑,并與其他船員進行討論。通過投票淘汰懷疑對象,船員可以一步步接近找出真正的背叛者。在會議中,船員可以通過聊天功能與其他船員進行交流。船員可以分享自己的懷疑對象、提供觀察到的行為和線索,并與其他船員進行思維碰撞。船員可以提出問題,尋找矛盾之處,并通過邏輯推理和投票找出可能的背叛者。在會議末尾,船員將通過投票的方式淘汰懷疑對象。每個船員都有一票,被投票最多的人將被認定為懷疑對象,淘汰出局。投票是船員們找出背叛者的關(guān)鍵步驟,需要慎重考慮,不能隨意投票。

由此可見,會議的過程可以充分利用大模型的對話能力以及邏輯推理能力,在我們的實現(xiàn)中,會議的行動流即是一個小型智能體,在該場景下我們唯一需要感知以及能夠感知的信息只有玩家之間的聊天信息。

在會議智能體的行為決策階段,我們需要提供給大模型提供的決策信息包括:

  • 角色玩法:主要包括當前游戲智能體的身份(船員還是背叛者),不同身份對應(yīng)的玩法規(guī)則。
  • 角色策略:不同的角色身份需要提前預(yù)定義對應(yīng)的游戲策略,可以參考網(wǎng)上玩家提供的策略。
  • 游戲事件:主要是智能體在游戲過程中經(jīng)歷的事件,包括所見玩家、會議召開者、召開歷史、以及其他玩家狀態(tài)。
  • 角色狀態(tài):告知大模型目前正在進行會議,并提示他遵循角色定位,進行擬人化回復。
  • 對話歷史:監(jiān)聽會議過程中的聊天信息,以及最后的投票結(jié)果。

最終,會議智能體的輸出即是它對應(yīng)的發(fā)言,實際場景下,我們需要將會議智能體的發(fā)言輸入到對話框與其他玩家參與討論。這里,我們采用的是Python提供的keyboard包模擬文字輸入,然后識別發(fā)送按鈕和其他玩家交流。

4、游戲解說

當游戲智能體可以自主的玩游戲之后,如何與虛擬人進行聯(lián)動呢?這里我們想到了一個好玩的經(jīng)典場景,即虛擬人游戲解說。人工智能的優(yōu)勢在于不同的行為可以同步進行,我們可以讓虛擬人一邊玩游戲,一邊進行解說,該過程是完全 AI 驅(qū)動的,低成本的。

當虛擬人學會玩“狼人殺”:一次由大模型帶來的智能體變革

虛擬人想要解說游戲,我們需要能實時了解游戲的對局情況,幸運的是,當我們構(gòu)建了以上的游戲智能體之后,通過在不同的模塊中監(jiān)聽,我們可以及時地獲取游戲情況。這里的監(jiān)聽信息主要分為三類:

  1. 世界信息:比如游戲過程中,觀察到的緊急事件或玩家事件,比如玩家死亡、緊急事件的召開、船艙氧含量等等。
  2. 思考決策:游戲智能體的思考決策過程,這里可以使用ReAct行為決策過程中的 Observation 和 Thinking 結(jié)果。
  3. 行為狀態(tài):當前執(zhí)行的任務(wù)名,行動流描述等等。

然后,我們將這些監(jiān)聽消息封裝為一類名為 GameDecisionEvent 獨特的event,這類 event 會攜帶有關(guān)游戲解說所需的信息,主要包括游戲背景(game name,role,map等)和實時事件信息(task,action,thought,observation 等)。這類消息在監(jiān)聽后會發(fā)送到多虛擬人交互框架中介紹的全局 Event Queue 中,然后由 World Sandobox分發(fā)給對應(yīng)的虛擬人進行處理。

虛擬人 AI Agent 發(fā)現(xiàn)這類消息后會進入游戲解說流進行單獨處理,游戲解說流中的特殊之處在于我們在遵循虛擬人角色性格設(shè)定的同時,加強了解說場景的限制(Prompt 中進行規(guī)則設(shè)定),從而讓解說流程更加準確、生動。

GameDecisionEvent類中我們引入了專門的優(yōu)先級,這主要是為了防止消息累積,因此游戲智能體在游戲進程中會產(chǎn)生大量用于游戲解說的消息,但是虛擬人智能體在處理和解說過程中是需要時間的,隨著游戲運行可能會造成消息積累,導致游戲進程和解說進程不同步。

然后我們對這類消息在消息隊列中施加一些策略進行管理。比如 :某些緊急事件會被設(shè)定為最高優(yōu)先級,比如玩家死亡、緊急會議等,這類事件出現(xiàn)后需要立即解說,因此它們會插隊中優(yōu)先級事件,以及清空隊列中的低優(yōu)先級事件。

四、總結(jié)與展望

總的來說,虛擬人技術(shù)是一項多技術(shù)融合的復雜工程。在本文中,主要聚焦于如何利用大模型來驅(qū)動虛擬人,并結(jié)合 AI 智能體的概念和技術(shù)進行架構(gòu)設(shè)計。LLM 的快速發(fā)展推動了虛擬人領(lǐng)域的進步,這主要是因為 LLM 為虛擬人提供了更加流暢的對話體驗,同時借助于LLM 優(yōu)秀的推理能力以及智能體技術(shù)的引入使得整體技術(shù)框架得以簡化。
但是,虛擬人是極其依賴于互動體驗和角色表現(xiàn)力,這需要我們在考慮智能的同時,加強語音和角色動作等方面的能力。情緒飽滿的語音和流暢、豐富的肢體動作能給觀眾帶來最直觀的感知。

在游戲智能體方面,如何讓 LLM 進行更準確的行動決策依賴于我們對環(huán)境全方位的感知,可感知的信息越多,行動決策越準確、游戲目標達成的成功率就越高,這方面我們?nèi)栽诶^續(xù)探索。

當然 LLM 在響應(yīng)時延方面仍然有一定的局限性,這一點非常影響虛擬人的實時交互,無論是從模型還是從流程上都需要進一步的優(yōu)化,也將是是否能為實時虛擬人領(lǐng)域真正帶來技術(shù)突破的關(guān)鍵。

參考文獻

[1] Yao, Shunyu, et al. “ReAct: Synergizing Reasoning and Acting in Language Models.”The Eleventh International Conference on Learning Representations. 2022.

[2] Wei, Jason, et al. “Chain-of-thought prompting elicits reasoning in large language models.”Advances in Neural Information Processing Systems35 (2022): 24824-24837.

[3] Wu, Qingyun, et al. “AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation Framework.”arXiv e-prints(2023): arXiv-2308.

[4] Gosling, Tear, and Alpin Dale. “PIPPA: A Partially Synthetic Conversational Dataset.”arXiv preprint arXiv:2308.05884(2023).

作者:andreihuang,騰訊IEG應(yīng)用研究員

來源公眾號:騰訊大講堂(ID:TX_DJT ),聚焦前沿,打造互聯(lián)網(wǎng)人的高光時刻

本文由人人都是產(chǎn)品經(jīng)理合作媒體 @騰訊大講堂 授權(quán)發(fā)布,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于 CC0 協(xié)議

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!