當(dāng)虛擬人學(xué)會(huì)玩“狼人殺”:一次由大模型帶來的智能體變革
本文圍繞多技術(shù)融合的虛擬人技術(shù),把握三個(gè)主題:虛擬人技術(shù)框架、多虛擬人互動(dòng)框架、虛擬人玩轉(zhuǎn)Among Us,聚焦于如何利用大模型來驅(qū)動(dòng)虛擬人,并結(jié)合 AI 智能體的概念和技術(shù)進(jìn)行架構(gòu)設(shè)計(jì)。
2022年12月19日,Twitch上出現(xiàn)了一個(gè)名為“vedal987”的新直播頻道。該頻道沒有真人主播,只有一個(gè)可愛的二次元女孩形象在屏幕上移動(dòng)和說話。她自稱為Neurosama,是一位人工智能VTuber。
從那天起,她開始了自己的直播生涯,并迅速獲得了大量關(guān)注和支持。與傳統(tǒng)基于動(dòng)作捕捉的中之人范式的虛擬主播不同的是,Neuro完全是由人工智能驅(qū)動(dòng)的,準(zhǔn)確來說是由背后大語言模型驅(qū)動(dòng)的。
AI驅(qū)動(dòng)的虛擬人具有許多優(yōu)點(diǎn)和廣闊的前景:
- 強(qiáng)大的交互能力:在大模型技術(shù)的驅(qū)動(dòng)下,虛擬人的表達(dá)能力、交互能力和智能化水平將不斷提高,可以與人類進(jìn)行實(shí)時(shí)對(duì)話和互動(dòng)。這使得虛擬人能夠理解和回應(yīng)人類的需求,提供個(gè)性化的服務(wù)和支持。
- 高效的工作效率:由于虛擬人可以進(jìn)行24小時(shí)不間斷的工作,而不需要休息和睡眠,因此它們能夠在短時(shí)間內(nèi)完成大量的任務(wù)和工作。這大大提高了工作效率和生產(chǎn)力。
- 減少人力成本:虛擬人可以替代一些重復(fù)性和機(jī)械性的工作,從而減少了企業(yè)的人力成本。通過使用虛擬人,企業(yè)可以將人力資源用于更具創(chuàng)造力和戰(zhàn)略性的任務(wù)。
- 提供個(gè)性化的用戶體驗(yàn):AI驅(qū)動(dòng)的虛擬人可以根據(jù)用戶的需求和喜好提供個(gè)性化的服務(wù)和建議。這種個(gè)性化的用戶體驗(yàn)不僅可以提高用戶滿意度,還能增強(qiáng)用戶對(duì)品牌的忠誠度。
- 商業(yè)應(yīng)用場(chǎng)景不斷拓展:虛擬人可以應(yīng)用于廣告營(yíng)銷、客戶服務(wù)、培訓(xùn)教育、社交媒體、游戲娛樂等領(lǐng)域。隨著技術(shù)的發(fā)展和推廣,虛擬人的應(yīng)用場(chǎng)景將不斷擴(kuò)大。
受到 Neuro-sama 的啟發(fā),本文中將介紹我們基于大模型驅(qū)動(dòng)以及 AI 智能體思考的虛擬人技術(shù)的相關(guān)嘗試。首先,我們將介紹基于 AI Agent 思想構(gòu)建的虛擬人技術(shù)框架,然后我們將介紹在多虛擬人場(chǎng)景如何搭建靈活的互動(dòng)框架,最后基于 AmongUs 游戲我們探索了游戲智能體的技術(shù)可能性,進(jìn)一步豐富虛擬人的應(yīng)用場(chǎng)景。
一、虛擬人技術(shù)框架
在基于大模型驅(qū)動(dòng)的虛擬人的整體技術(shù)框架設(shè)計(jì)中,我們主要參考 AI Agent 模式進(jìn)行設(shè)計(jì),并根據(jù)虛擬人的特定場(chǎng)景和需求進(jìn)行相應(yīng)的優(yōu)化。
如下圖所示,整個(gè)虛擬人框架主要包括兩個(gè)基礎(chǔ)組件,AI 智能體和 Live2D 模型:
- AI Agent 部分是虛擬人的大腦,包括虛擬人的人格(Persona)、知識(shí)(Knowledge)、記憶(Memory)和能力(Skill),以及虛擬人的組織邏輯、回復(fù)生成和肢體驅(qū)動(dòng)等。
- Live2D 模型則是虛擬人的形象,是虛擬形象的展示和呈現(xiàn)的載體,包括可見的外貌、表情和肢體動(dòng)作等。
1、虛擬人感知
我們將虛擬人的感知系統(tǒng)主要分為兩部分:環(huán)境信息感知和交互信息感知。
- 環(huán)境信息即虛擬人所處的世界的信息,通俗來講,我們?cè)谶M(jìn)行虛擬人應(yīng)用開發(fā)時(shí),通常需要考慮場(chǎng)景的設(shè)定,比如在直播的場(chǎng)景下,虛擬人需要能感知直播間的狀態(tài):直播間人數(shù)、粉絲送禮物等。又比如在多虛擬人場(chǎng)景下,每個(gè)個(gè)體需要了解該場(chǎng)景下是否存在可見朋友、以及朋友當(dāng)前狀態(tài)等。具體實(shí)現(xiàn)時(shí),這類信息可以以全局或局部變量的形式存儲(chǔ)在 Agent 類中。
- 交互信息即指用戶與虛擬人以及虛擬人之間的交流信息,這類信息是虛擬人可以互動(dòng)交流的主要依賴,以文本輸入和輸出為主,也是語言模型的基礎(chǔ)能力。
2、虛擬人大腦
虛擬人的大腦是整個(gè)大模型驅(qū)動(dòng)的虛擬人的核心部分,即上圖的 AI Agent 部分。我們需要在這里定義虛擬人的角色設(shè)定、行為決策及對(duì)話生成。
(1)大模型選型
大模型驅(qū)動(dòng)著整體虛擬人的行為,因此選擇合適的大模型尤為重要。由于 OpenAI 的 ChatGPT 和 GPT4因?yàn)槠鋬?yōu)秀的推理能力以及潛在的角色扮演能力,想必會(huì)成為大家的首選。但是在虛擬人這一具體場(chǎng)景中,由于考量的因素不同,ChatGPT 并不一定會(huì)是最優(yōu)的選擇。在實(shí)踐過程中,我們主要的考量因素包括兩點(diǎn):
- 響應(yīng)的實(shí)時(shí)性。雖然 ChatGPT 具備優(yōu)秀的推理能力和對(duì)話能力,但是由于其整體模型的規(guī)模導(dǎo)致響應(yīng)速度慢,這將會(huì)對(duì)整體的體驗(yàn)帶來很大的影響。因此,在大模型的選擇時(shí),我們可能更加傾向于規(guī)模更小、生成速度更快的模型,同時(shí)一定程度忽略模型的復(fù)雜推理能力,因?yàn)檫@對(duì)于展示型虛擬人往往不是必須的。
- 對(duì)話的擬人性。由于 ChatGPT 考慮的是通用場(chǎng)景,并為針對(duì)角色扮演這一領(lǐng)域針對(duì)性訓(xùn)練,導(dǎo)致 ChatGPT 的整體回復(fù)跟傾向于正式、嚴(yán)肅的風(fēng)格,并且回復(fù)內(nèi)容通常冗余啰嗦,不是自然的人類聊天,這在一定程度上會(huì)影響虛擬人的擬人性。
隨著 Llama 系列模型的開源,以及開源社區(qū)的活躍二創(chuàng),許多針對(duì)角色扮演的小規(guī)模開源大模型陸續(xù)推出?;谏鲜鰞牲c(diǎn)考量,我們將模型選型聚焦于針對(duì)角色扮演微調(diào)的 7B~13B開源大模型,經(jīng)過社區(qū)評(píng)估和實(shí)際測(cè)試,綜合考慮以下兩個(gè)模型:
①Nous-Hermes-Llama2-13b
Nous-Hermes-Llama2-13b是基于 Llama 2 13B微調(diào)的語言模型,由經(jīng)過超過300,000條指令的精細(xì)調(diào)整。該模型在開源社區(qū)非常火爆,TheBloke/Nous-Hermes-13B-GPTQ的下載量已經(jīng)高達(dá)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是一個(gè)聚焦于角色扮演領(lǐng)域的開源研究組織,旨在嘗試獲得可用于對(duì)話、角色扮演和寫作故事的模型,同時(shí)可以像其他通用語言模型一樣使用自然語言進(jìn)行引導(dǎo)。用于微調(diào)此模型的數(shù)據(jù)集包括PIPPA,以及其他幾個(gè)指令數(shù)據(jù)集和從各種RP論壇獲取的數(shù)據(jù)集。
(2)角色設(shè)定
角色設(shè)定定義了角色的性格、背景、經(jīng)歷等信息,這直接決定著生成的對(duì)話風(fēng)格。有關(guān)角色大模型微調(diào)和角色定義的詳細(xì)介紹,可以參考我們的另一篇文章《一文帶你低成本打造屬于自己的 CharacterAI》。我們將定義角色的要素主要?jiǎng)澐譃?3 類:
a. 人格設(shè)定
人格設(shè)定定義了虛擬人的特性,包括個(gè)人信息(姓名、外貌、工作等)、性格(性格特點(diǎn)、喜好、語氣等)、人物背景等。
b. 知識(shí)與記憶庫
除了大模型訓(xùn)練過程中蘊(yùn)含的海量知識(shí)外,虛擬人仍需要和自身世界觀相關(guān)的垂直知識(shí),這里我們考慮在本地外掛知識(shí)庫,方便檢索召回。我們主要考慮三類:世界知識(shí),即虛擬人所在場(chǎng)景的通用信息;實(shí)體知識(shí),即虛擬人所了解到的重要實(shí)體信息;以及事件知識(shí),即虛擬人自身所經(jīng)歷的事件。
記憶庫則主要存儲(chǔ)的是虛擬人的歷史記錄,包括短期記憶和長(zhǎng)期記憶。短期記憶即最近 N 次對(duì)話記錄,以大模型的連續(xù)對(duì)話形式呈現(xiàn)。長(zhǎng)期記憶則是以將對(duì)話記錄本地化存儲(chǔ)實(shí)現(xiàn),并在對(duì)話過程中實(shí)時(shí)召回。批量的對(duì)話數(shù)據(jù)可以通過離線的方式進(jìn)行摘要總結(jié)轉(zhuǎn)換為事件。
c. 技能庫
技能庫主要用于存儲(chǔ)虛擬人可實(shí)現(xiàn)的技能,比如:唱歌、講故事、玩游戲等。
(3)行為決策
對(duì)虛擬人角色進(jìn)行定義后,當(dāng)有對(duì)話消息(Query)傳入后,首先我們需要虛擬人進(jìn)行行為決策。這里考慮到互動(dòng)的實(shí)時(shí)性,我們不再考慮AI 智能體標(biāo)準(zhǔn)定義中復(fù)雜的任務(wù)拆分和規(guī)劃流程,而是采用意圖識(shí)別的方式,根據(jù)虛擬人的技能庫對(duì)當(dāng)前對(duì)話信息進(jìn)行意圖識(shí)別來決定虛擬人的行為分支。
比如當(dāng)對(duì)話消息為“Can you sing a song?”時(shí),我們會(huì)判斷當(dāng)前信息的意圖,當(dāng)識(shí)別到意圖為“Sing”時(shí),我們便可以執(zhí)行唱歌行為分支,將離線生成的歌曲音頻進(jìn)行加載以及對(duì)話響應(yīng)進(jìn)行生成。(歌曲生成的方案可以參考 AI 孫燕姿的技術(shù)選型:so-vits-svc)若當(dāng)前意圖和虛擬人技能庫中已有能力不匹配或者當(dāng)前意圖為 chat 時(shí),我們將執(zhí)行對(duì)話行為分支。
對(duì)話行為分支,我們采用的是召回增強(qiáng)檢索(RAG)的方式。事先,我們將知識(shí)庫中的文檔進(jìn)行文本分句切片后通過向量化之后生成 embedding 保存到向量 中,記憶庫中的聊天歷史記錄采用相同的方式,唯一的區(qū)別是在切分時(shí),對(duì)話歷史會(huì)切分成 [對(duì)方-自己] 對(duì)話對(duì)。
然后當(dāng)有 Query 產(chǎn)生時(shí),我們利用同樣的向量化技術(shù)生成對(duì)應(yīng)的 embedding,然后根據(jù)向量相似度計(jì)算,從知識(shí)向量庫和記憶向量庫中分別召回最相關(guān)的內(nèi)容,然后在 Prompt 模板中在對(duì)應(yīng)位置進(jìn)行文本替換,重構(gòu)出新的 Prompt。最終,新的 Prompt 被輸入到 LLM 中獲得當(dāng)前的響應(yīng)。
(4)語音合成
虛擬人的語音作為用戶感知最明顯的特征之一,對(duì)于整個(gè)虛擬人的表現(xiàn)力至關(guān)重要。經(jīng)過調(diào)研和實(shí)際測(cè)試,最終我們考慮兩個(gè)技術(shù)選型:微軟 TTS 和Elevenlabs 。
微軟 TTS 是一種被廣泛使用的語音合成技術(shù),擁有豐富的多語種的音色。優(yōu)點(diǎn)是合成質(zhì)量穩(wěn)定,響應(yīng)速度快,費(fèi)用相對(duì)較低。但是它不支持語音克隆,只能從已有的音色中選擇,同時(shí)生成的語音語氣較為平淡,表現(xiàn)力差。
ElevenLabs是一家提供文本生成語音解決方案的語音技術(shù)研究公司。它可以合成高質(zhì)量語音,能夠生成高質(zhì)量的語音,同時(shí)支持語音克隆,用戶可以通過提供幾十秒語音片段,便可生成相應(yīng)的語音克隆聲音,并且語音富有情感,表現(xiàn)力強(qiáng)。但是它的缺點(diǎn)是生成速度慢,想比于微軟的 TTS 服務(wù)大約慢 3~5倍,同時(shí)費(fèi)用相對(duì)較高。
針對(duì)上述兩種方案的優(yōu)缺點(diǎn),我們根據(jù)不同場(chǎng)景的需要進(jìn)行選擇。
3、虛擬人形象
(1)外貌選型
目前,在虛擬主播的外貌選型上大致可以分為 3 種方案:
- ?SadTalker/Video-retalk:使用圖片與音頻文件自動(dòng)合成人物說話動(dòng)畫的開源模型,給模型一張圖片以及一段音頻文件,模型會(huì)根據(jù)音頻文件把傳遞的圖片進(jìn)行人臉的相應(yīng)動(dòng)作,比如張嘴,眨眼,移動(dòng)頭部等動(dòng)作,適用于真人形象的虛擬人,缺點(diǎn)是動(dòng)作幅度小,表現(xiàn)力低。
- ?Live2D + VtubeStudio:二次元?jiǎng)勇摂M角色,可以建模多種動(dòng)作,肢體豐富,缺點(diǎn)是受眾局限于二次元。
- ?Omniverse Audio2Face:3D 虛擬角色形象,可直接通過音頻文件創(chuàng)建面部動(dòng)畫的AI工具,其推理和生成情緒的功能可用于制作所有面部特征動(dòng)畫,將繁瑣的手動(dòng) blendshape 過程交給了 AI。
實(shí)踐中,我們最終選擇 Live2D二次元角色作為虛擬人形象。Live2D的優(yōu)點(diǎn)在于模型的建模相對(duì)簡(jiǎn)單且具備優(yōu)秀的表現(xiàn)力,同時(shí)可以通過動(dòng)作捕捉生成大量的動(dòng)作和表情。相比于 3D 模型,Live2D 的建模和表情、口型驅(qū)動(dòng)難度更低,這可以降低恐怖谷效應(yīng)的風(fēng)險(xiǎn)。
恐怖谷效應(yīng)是指1970 年日本機(jī)器人專家森昌弘提出“恐怖谷”理論,由于機(jī)器人與人類在外表、動(dòng)作上相似,所以人類會(huì)對(duì)機(jī)器人產(chǎn)生正面的情感。當(dāng)機(jī)器人與人類的相似程度達(dá)到一個(gè)特定程度的時(shí)候,一點(diǎn)點(diǎn)的差別都會(huì)被放大,并帶來負(fù)面和反感情緒。而當(dāng)機(jī)器人與人類的相似度繼續(xù)上升,人類對(duì)其情感會(huì)再度回到正面。
(2)口型驅(qū)動(dòng)
二次元角色的口型同步一種比較簡(jiǎn)單的方式是根據(jù)音頻片段音量決定嘴巴張合大小。具體操作步驟為:
- 獲取語音合成的音頻片段
- 針對(duì)音頻按一定步長(zhǎng)進(jìn)行切片
- 獲取切片的音量大小并進(jìn)行歸一化,然后將其映射到 Live2D 角色的嘴巴張合。
(3)動(dòng)作表情驅(qū)動(dòng)
除了一些 Idel 的動(dòng)作預(yù)置外,我們會(huì)引導(dǎo)大模型在對(duì)話過程中生成與情景相符的動(dòng)作和表情。如下圖所示,我們將解析獲得動(dòng)作或表情與 Live2D 已建模的動(dòng)作表情進(jìn)行相似性匹配,獲得最符合的表情或動(dòng)作。
二、多虛擬人互動(dòng)框架
在實(shí)際的應(yīng)用場(chǎng)景中,只依靠單個(gè)個(gè)體虛擬人往往缺乏表現(xiàn)力。為了增加虛擬主播的娛樂性和互動(dòng)性,往往需要多個(gè)虛擬人的參與。因此,我們?cè)趥€(gè)體虛擬人的基礎(chǔ)上提出了下面的多虛擬人互動(dòng)框架。
如下圖所示,我們的多虛擬人技術(shù)框架主要包含 3 類組件:
- 世界沙盒:即 World Sandbox,它定義了當(dāng)前虛擬人應(yīng)用所處的場(chǎng)景,他相當(dāng)于智能體系統(tǒng)中的環(huán)境,主要定義了一些用戶配置信息(虛擬人數(shù)量、虛擬人可見性)、組件初始化(Agent 初始化、消息隊(duì)列初始化、用戶組件初始化等)以及消息管理(包括事件分發(fā)、任務(wù)展示等)。
- 用戶交互組件:主要包括 User 和 Live Room,分別作為交互入口獲取運(yùn)營(yíng)用戶互動(dòng)和直播間互動(dòng)信息。
- 虛擬人智能體:即 AI Agent+Live2D 模型,他們是虛擬人的邏輯主體。
整個(gè)虛擬人框架的通訊范式采用的是生產(chǎn)者-消費(fèi)者的模式,全局維護(hù)兩個(gè)消息隊(duì)列 Event_Queue和 Task_Queue,前者用于管理互動(dòng)事件消息,后者用于展示虛擬人的多媒體任務(wù)。
User Agent主要用于用戶交互,包含語音識(shí)別 ASR 、文本輸入和指令監(jiān)聽等。User Agent 作為虛擬人系統(tǒng)與用戶交互入口之一,便于與用戶進(jìn)行實(shí)時(shí)對(duì)話或運(yùn)營(yíng)場(chǎng)景切換等等。
Live Room Agent 主要用于監(jiān)聽直播間信息,主要包括監(jiān)聽直播評(píng)論彈幕、粉絲 Super Chat 、粉絲禮物互動(dòng)和其他直播間信息。不同信息會(huì)分為不同的優(yōu)先級(jí)。
Event Queue 主要用于互動(dòng)事件管理。它主要監(jiān)聽兩個(gè)來源,一個(gè)是用戶生產(chǎn)的互動(dòng)事件(來自 User 、 Live Room等),另外一個(gè)是虛擬人生產(chǎn)的互動(dòng)事件(來自 AI Agent),互動(dòng)事件實(shí)質(zhì)是指對(duì)話內(nèi)容或互動(dòng)內(nèi)容。在監(jiān)聽到互動(dòng)事件后,World Sandbox 會(huì)將其分發(fā)至具體的 AI Agent 進(jìn)行消費(fèi)處理,即上圖中的distribute 函數(shù)。
分發(fā)的策略可以設(shè)置為順序執(zhí)行和規(guī)則執(zhí)行。順序執(zhí)行是指事件處理順序是固定的、依次執(zhí)行的,比如假設(shè)存在兩個(gè)虛擬人,用戶生產(chǎn)的互動(dòng)事件1先分發(fā)給 AI Agent1處理后生成互動(dòng)事件 2,然后再將互動(dòng)事件 2 分發(fā)給 AI Agent2生成互動(dòng)事件 3,然后互動(dòng)事件 3 再分發(fā)給 AI Agent1進(jìn)行處理。規(guī)則執(zhí)行則是根據(jù)一定的規(guī)則來進(jìn)行分發(fā),比如解析對(duì)話內(nèi)容中的目標(biāo)聽眾,從而將相應(yīng)事件分發(fā)給該聽眾。
Task Queue 主要用于管理虛擬人生產(chǎn)的行為展示的任務(wù)。當(dāng) AI Agent 的處理某個(gè)互動(dòng)事件后會(huì)生產(chǎn)出對(duì)應(yīng)的新的互動(dòng)事件以及行為任務(wù),這里一個(gè)行為任務(wù)塊通常包括:對(duì)話語音、技能行動(dòng)(Skill Action)以及用于驅(qū)動(dòng) Live2D 模型的表情動(dòng)作。
當(dāng)任務(wù)塊發(fā)送到 Task Queue 之后,World Sandbox會(huì)按照任務(wù)塊的生產(chǎn)順序?qū)⑵浞峙浣o相應(yīng)的 Live2D 角色依次進(jìn)行展示,即上圖中 display 函數(shù)。這里之所以要對(duì)所有 AI Agent 生成的行為展示任務(wù)塊進(jìn)行統(tǒng)一管理,是為了避免當(dāng)存在多個(gè)虛擬人時(shí)可能會(huì)存在大家同時(shí)說話導(dǎo)致展示混亂的情況。
執(zhí)行流程示例:
- 監(jiān)聽用戶或粉絲產(chǎn)生的互動(dòng)消息、提出的問題或?qū)υ捫畔?,并將其發(fā)送給 Event_Queue。
- 當(dāng)Event_Queue中有新消息到達(dá)后,World Sandbox通過配置的分發(fā)策略將其分配給對(duì)應(yīng)的 AI Agent 進(jìn)行處理
- AI Agent 拿到新事件消息后對(duì)其響應(yīng),并生成對(duì)應(yīng)的回復(fù)信息和行為任務(wù)。行為任務(wù)被封裝為任務(wù)塊發(fā)送到 Task_Queue,回復(fù)信息則根據(jù)需要判斷是否被封裝為新的事件發(fā)送給Event_Queue進(jìn)行下一步的處理(有可能不產(chǎn)生新的事件)。
- 當(dāng)Task_Queue 中存在消息時(shí),World Sandbox 根據(jù)生產(chǎn)的時(shí)間順序依次將對(duì)應(yīng)任務(wù)塊分配給對(duì)應(yīng)的虛擬人 Live2D 角色進(jìn)行展示。
三、虛擬人玩轉(zhuǎn) Among Us
AmongUs是一款場(chǎng)景在太空中的狼人殺類型的游戲,玩家通過聯(lián)機(jī)一起玩耍,在游戲中我們將會(huì)進(jìn)入太空,在這個(gè)封閉的世界中,尋找背叛者,并完成一項(xiàng)一項(xiàng)得任務(wù)。游戲中有兩類角色:船員(Crewmate,好人)和背叛者(Imposter,壞人)。他們有不同的目標(biāo):對(duì)于船員來說,他們需要完成任務(wù)并找到所有的背叛者并通過會(huì)議聊天投票將其淘汰;對(duì)于背叛者來說,他們需要?dú)⑺浪械拇瑔T。
《Among Us》是一款需要船員合作、推理和判斷的游戲,這對(duì)于基于大模型的具備推理能力的智能體來說進(jìn)行模擬實(shí)驗(yàn)十分合適。我們的模擬實(shí)驗(yàn)的任務(wù)是讓智能體通過扮演上述兩類不同角色參與到游戲中,并通過推理、欺騙、自主行為決策來取得最終的勝利。我們構(gòu)建了一個(gè)可以自動(dòng)玩 AmongUs 的游戲智能體,整體技術(shù)框架被設(shè)計(jì)為三部分:環(huán)境感知、行為決策和行動(dòng)實(shí)施。
1、環(huán)境感知
為了自動(dòng)化參與游戲,游戲智能體需要對(duì)游戲角色所處的環(huán)境信息擁有充分的感知,因此需要了解在 AmongUs 的游戲設(shè)定中需要哪些重要的信息。經(jīng)過對(duì)該游戲的研究歸納,Amongus 中的可感知環(huán)境信息包括:地圖信息、玩家信息(位置、狀態(tài)、行為)、任務(wù)信息(列表與位置)以及舉報(bào)會(huì)議中的對(duì)話信息。
(1)地圖信息
AmongUs的游戲設(shè)定是在太空飛船上,所以玩家所處的地圖是一個(gè)密閉的游戲空間。因此對(duì)于整個(gè)地圖空間的感知變得至關(guān)重要,這需要我們對(duì)游戲地圖進(jìn)行建模。
基于地圖提供的空間信息,游戲智能體可以決定如何移動(dòng)角色、如何執(zhí)行任務(wù)以及與其他玩家如何互動(dòng),這對(duì)于推動(dòng)游戲進(jìn)程起著關(guān)鍵作用。那么我們?nèi)绾螌?duì)地圖進(jìn)行建模呢?一種直觀的想法就是先人為探索整個(gè)游戲地圖,然后依次將地圖的空間信息記錄下來,最后組成完整的地圖信息。
具體來說:
- 首先,我們需要了解如何實(shí)際地移動(dòng)玩家角色,值得慶幸的是,Python 中提供了一個(gè)名為vgamepad的庫,允許我們模擬游戲手柄來驅(qū)動(dòng)角色進(jìn)行上下左右的移動(dòng)。這樣我們就可以通過簡(jiǎn)單的模擬將操縱桿向某個(gè)方向移動(dòng)來移動(dòng)角色。
- 然后,對(duì)于整個(gè)地圖的建模,我們可以使用圖論的技術(shù),通過移動(dòng)角色在地圖上走動(dòng)并將多個(gè)(x,y)坐標(biāo)記錄為圖中的節(jié)點(diǎn),這樣我們就可以建模得到完整的地圖。
- 最后,記錄下太空飛船中不同設(shè)施(比如:Boiler Room,Storage,Office,Upper Engine 等)的位置,這通常和游戲中所要做的任務(wù)位置相關(guān),有利于后面定義策略規(guī)則。
這樣我們就獲得了完整的地圖信息,這些信息將幫助智能體進(jìn)行環(huán)境空間感知,為行為決策提供參考。
通過圖論建模地圖的好處有很多,比如我們可以了解整個(gè)地圖的空間結(jié)構(gòu),比如哪里是互通的、哪里是有障礙的。比如同時(shí)基于圖論的已有技術(shù),我們可以使用使用很多眾所周知的圖論算法(如迪杰斯特拉算法)來確定如何將角色從移動(dòng)一個(gè)位置移動(dòng)到另一個(gè)目標(biāo)位置,這將簡(jiǎn)化智能體做決策后的行動(dòng)實(shí)施。
(2)玩家信息
在AmongUs游戲中,玩家之間需要我們需要游戲智能體可以感知其他玩家的信息,包括:
- 當(dāng)前玩家信息。玩家身份和玩家位置。
- 玩家狀態(tài)。主要包括周圍是否存在尸體,當(dāng)前的存活玩家和死亡玩家。
- 視野范圍內(nèi)的其他玩家的相對(duì)位置。因?yàn)槲覀冎啦煌婕以趫D中的坐標(biāo),因此相對(duì)位置可以通過圖中兩點(diǎn)的距離得到。這一信息可以影響智能體對(duì)其他玩家的信任度(玩家是否是壞人,是否可能單獨(dú)行動(dòng))以及特殊角色的行為決策(比如背叛者將根據(jù)視野內(nèi)的玩家位置和玩家數(shù)量決定是否需要?dú)⑷艘约霸谑裁磿r(shí)候殺人)。
(3)任務(wù)信息
AmongUs 中船員的任務(wù)是完成各種任務(wù),這些任務(wù)可以分為兩類:任務(wù)欄任務(wù)和緊急任務(wù)。任務(wù)欄任務(wù)是指完成后會(huì)在任務(wù)欄上顯示進(jìn)度的任務(wù),如修復(fù)電路、清理垃圾等。而緊急任務(wù)則是指需要在一定時(shí)間內(nèi)完成的任務(wù),如緊急修復(fù)氧氣供應(yīng)、緊急修復(fù)核心等。
完成任務(wù)對(duì)于船員來說非常重要,因?yàn)橥瓿扇蝿?wù)可以增加船員的勝利機(jī)會(huì),并幫助船員區(qū)分誰是背叛者。背叛者可以假裝完成任務(wù),但他們無法真正執(zhí)行任務(wù)欄任務(wù),只能執(zhí)行一些特殊的任務(wù),如殺死船員、破壞設(shè)備等。
任務(wù)信息主要包括當(dāng)前地圖上任務(wù)列表以及每個(gè)任務(wù)所處的位置,由于相同類型的任務(wù)可能分布在不同的設(shè)施上,因此位置信息包括設(shè)施名+位置坐標(biāo),具體形式如下:
(4)會(huì)議信息
會(huì)議信息是一類特殊的環(huán)境信息,主要是在進(jìn)行緊急會(huì)議時(shí)玩家之間的聊天記錄,包括玩家和聊天內(nèi)容,這可以通過 OCR 識(shí)別或AmongUs插件獲取。
2、行為決策
在大模型出現(xiàn)前,游戲智能體的行為決策主要依靠的是強(qiáng)化學(xué)習(xí)。游戲智能體中強(qiáng)化學(xué)習(xí)的劣勢(shì)主要體現(xiàn)在以下幾個(gè)方面:
- 樣本低效性:強(qiáng)化學(xué)習(xí)通常需要通過大量的試錯(cuò)和反饋來優(yōu)化策略,智能體必須不斷地與環(huán)境進(jìn)行實(shí)驗(yàn)并接收反饋信號(hào),這就意味著需要花費(fèi)大量的時(shí)間來構(gòu)建高質(zhì)量的數(shù)據(jù)進(jìn)行訓(xùn)練。
- 環(huán)境理解要求高:強(qiáng)化學(xué)習(xí)算法對(duì)環(huán)境的建模和理解能力要求較高,如果環(huán)境復(fù)雜或不確定性較高,強(qiáng)化學(xué)習(xí)的效果可能會(huì)受到限制,難以在許多現(xiàn)實(shí)場(chǎng)景下迅速實(shí)現(xiàn)良好的性能。
- 好的獎(jiǎng)勵(lì)函數(shù)難以設(shè)計(jì):強(qiáng)化學(xué)習(xí)依賴于獎(jiǎng)勵(lì)信號(hào)來指導(dǎo)學(xué)習(xí)過程,但如何設(shè)計(jì)合適的獎(jiǎng)勵(lì)信號(hào)是一個(gè)挑戰(zhàn),不恰當(dāng)?shù)莫?jiǎng)勵(lì)信號(hào)可能導(dǎo)致學(xué)習(xí)過程出現(xiàn)偏差或不穩(wěn)定。
而當(dāng)智能體出現(xiàn)后,大語言模型在邏輯推理方面涌現(xiàn)出的能力,使得AI智能體的實(shí)施成本大大降低,同時(shí)保持良好的性能,比如英偉達(dá)AI智能體 Voyager、清華等機(jī)構(gòu)提出了能夠自主學(xué)習(xí)解決任務(wù)的AI智能體 Ghost in the Minecraft (GITM) 在 Minecraft 中取得的令人驚訝的表現(xiàn)。
大語言模型,如ChatGPT,在游戲智能體中進(jìn)行行為決策時(shí)的關(guān)鍵在于理解游戲規(guī)則、情境和目標(biāo),以及玩家的意圖和行為,并利用這些信息來采取合適的游戲行為。這一過程中需要考慮以下方面:
- 游戲規(guī)則:游戲都有特定的規(guī)則,這些規(guī)則可能是明文規(guī)定的,也可能是需要玩家自己探索和理解的。大語言模型需要理解這些規(guī)則,并根據(jù)這些規(guī)則來生成游戲行為。
- 玩家意圖:理解玩家的意圖對(duì)于生成合適的游戲行為至關(guān)重要。例如,如果玩家想要攻擊敵人,大語言模型就需要生成攻擊性的游戲行為。
- 游戲情境:大語言模型還需要理解游戲的情境,例如當(dāng)前的游戲狀態(tài)、玩家的位置、資源情況等。這樣,它就可以根據(jù)這些信息來生成合適的游戲行為。
- 策略戰(zhàn)術(shù):大語言模型需要理解游戲的策略和戰(zhàn)術(shù),例如如何在游戲中獲得優(yōu)勢(shì)、如何有效地使用資源等。這樣,它就可以根據(jù)這些策略和戰(zhàn)術(shù)來生成合適的游戲行為。
如前文的介紹的環(huán)境感知,實(shí)際上便是在感知游戲情景,而其他方面,比如:游戲規(guī)則、玩家意圖和策略戰(zhàn)術(shù)等,則需要我們?cè)谧尨竽P瓦M(jìn)行行為決策時(shí)進(jìn)行額外的背景設(shè)定。以 AmongUs 為例,這些游戲背景包括:
①角色:當(dāng)前玩家的游戲身份,AmongUs 中不同的角色對(duì)應(yīng)不同的行動(dòng)目標(biāo)和行動(dòng)策略
②目標(biāo):根據(jù)游戲身份的不同,游戲的目標(biāo)也不同。船員的游戲目標(biāo)是找出并投票出背叛者,而背叛者則需要成功殺死足夠多的船員。
③知識(shí):即游戲規(guī)則,比如,常見的游戲規(guī)則有:
- 飛船上會(huì)有一定數(shù)量的船員和背叛者。
- 船員需要找出藏身于眾人中的背叛者,背叛者有兩種獲得游戲的勝利方式:第一種是不斷搞破壞,讓玩家所乘坐的飛船故障,不能順利返航;第二種則是不斷地殺死船員,直到剩余船員數(shù)量小于或等于背叛者數(shù)量。
- 當(dāng)發(fā)現(xiàn)被殺死的船員尸體后,游戲進(jìn)入發(fā)言投票環(huán)節(jié)。所有成員開啟演技和邏輯的較量,投出自己認(rèn)為的兇手。
- 死亡玩家不會(huì)出局,而是繼續(xù)存在游戲中,可以修理或破壞飛船,也可以與存活玩家進(jìn)行交流。
④策略:即游戲戰(zhàn)術(shù),這些策略可以從游戲社區(qū)中獲取和總結(jié)。以船員為例,常見的策略有:
- 時(shí)刻注意其他玩家的行為和動(dòng)向,特別是當(dāng)有可疑玩家靠近時(shí),要保持警惕,以避免被背叛者攻擊。
- 如果發(fā)現(xiàn)有背叛者攻擊或發(fā)現(xiàn)尸體時(shí),立即開啟緊急會(huì)議,并投票淘汰可疑的玩家,以避免被背叛者淘汰。
- 快速完成所有任務(wù)并在完成任務(wù)過程中盡可能靠近其他玩家,防止獨(dú)自行動(dòng)被殺。?充分利用地圖中的障礙物、管道等元素,以避免被背叛者攻擊。
⑤記憶:上面 4 種背景信息可以在游戲開始前提前預(yù)置在外部知識(shí)庫中,但是記憶模塊中的內(nèi)容則是在游戲過程中實(shí)時(shí)產(chǎn)生的。記憶模塊主要記錄游戲進(jìn)程中的主要事件,比如:玩家死亡事件,任務(wù)執(zhí)行事件,會(huì)議召開事件等。這些事件信息可以幫助大模型分析和推理出哪些玩家是船員,哪些是背叛者。
⑥行動(dòng)集:即可采取的原子行動(dòng),這些原子行動(dòng)包括:角色移動(dòng)、常規(guī)任務(wù)、特殊任務(wù)、召開會(huì)議等。我們需要提供單個(gè)原子行動(dòng)的描述以及必要信息(比如:行動(dòng)名稱、行動(dòng)描述、重要性、位置等)
有了這些大模型進(jìn)行決策所需要的信息以及環(huán)境信息后,我們便需要構(gòu)建 Prompt 提示通過大模型推理獲得當(dāng)前狀態(tài)的行動(dòng)列表。這里,為了讓智能體能獲得更準(zhǔn)確和智能地在模擬環(huán)境中推理和行動(dòng),我們采用了Yao 等人提出的 ReAct 提示工程技術(shù)。
ReAct的靈感來自“行動(dòng)”(Acting)和“推理”(Reasoning)之間的協(xié)同作用,通過把行動(dòng)(Act,通常使用工具)獲取的外部知識(shí),反饋給LLM幫助推理(Reason)并做出下一步的行動(dòng)決策。思維鏈(CoT)提示顯示了LLM執(zhí)行推理軌跡的能力,以生成涉及算術(shù)和常識(shí)推理等任務(wù)的問題的答案(Wei 等人,2022 年)。
但是,由于無法進(jìn)入外部世界或無法更新其知識(shí),可能會(huì)導(dǎo)致事實(shí)幻覺和錯(cuò)誤傳播等問題。ReAct則基于思維鏈改進(jìn)了這一點(diǎn),它是一種通用范式,它將推理和行動(dòng)與LLM相結(jié)合。
簡(jiǎn)單來說,ReAct 針對(duì)任務(wù)目標(biāo)顯示引導(dǎo) LLM 生成完成該任務(wù)的思考(Thought)、行動(dòng)(Action)和觀察(Observation),同時(shí),提供可獲得的當(dāng)前狀態(tài)以及行動(dòng)列表以提供給 LLM 作為參考。
各種操作的反應(yīng)分解
ReAct Prompt必須包含以下四個(gè)關(guān)鍵信息:
- 任務(wù)指令(Instruction):Prompt必須為 LLM 提供主指令(任務(wù)目標(biāo)),幾乎每個(gè)提示框架都需要,目標(biāo)可以讓模型理解我們真正希望它做什么。
- 反應(yīng)步驟(ReAct steps):指定推理和行動(dòng)計(jì)劃的步驟?!癐nterleaving thought, action, and observation steps”是ReAct 提示中使用的推理序列,也可以將其明確指定為 LLM 響應(yīng)回復(fù)的格式。
- 推理(Reasoning):使用通用指令(例如“思考可以推理當(dāng)前情況”)或者一系列思維提示(例如“我們逐步來思考這個(gè)問題”),啟用推理功能。這可以與小樣本提示框架相結(jié)合,以提供將推理與行動(dòng)聯(lián)系起來的確切示例。
- 行動(dòng)(Actions):最后一個(gè)關(guān)鍵信息是一組行動(dòng)列表,LLM 可以從中選擇一個(gè)來響應(yīng)推理思考。在上面的示例中,”Search[entity],” “Lookup[keyword],” 和 “Finish[answer]”是行動(dòng)命令。
一個(gè)符合ReAct的行動(dòng)流程里,包含多次Thought-Act-Obs的迭代,也就是思考-行動(dòng)-觀察/分析的反復(fù)過程。
Thought(思考):反映了LLM大模型的思考過程,這體現(xiàn)出了LLM的“大腦“的作用。LLM根據(jù)輸入或者外部環(huán)境反饋生成本次迭代需要完成的行動(dòng)。
Act(行動(dòng)):根據(jù)思考的結(jié)果采取的具體行動(dòng),這個(gè)具體的行動(dòng)最終體現(xiàn)到某個(gè)外部工具的使用,實(shí)現(xiàn)與外部環(huán)境的交互并獲得結(jié)果。
Obs(觀察):從外部行動(dòng)獲取到的反饋信息,用于LLM做出下一步的行動(dòng)決策。
通過這樣的循環(huán)過程,最終完成任務(wù)?;?ReAct 思想,我們可以提供游戲環(huán)境的背景和玩家狀態(tài)并指定可執(zhí)行的行動(dòng),然后通過推理將任務(wù)目標(biāo)和采取行動(dòng)關(guān)聯(lián)起來,完成對(duì)應(yīng)的任務(wù)。
這里我們首先指定了LLM 需要扮演的角色并設(shè)定了任務(wù)目標(biāo)(RoleGoal),然后我們提供了它可以參考的信息(Game Background、Game Rules、Role Strategies、Executed Tasks、Extra Info、Your Status),以及可以選擇的行動(dòng)列表(Action List),最后給定了一些特殊的限制條件(Constraint Rule)以幫助其更好的完成目標(biāo),最后指定了 LLM 的回復(fù)格式(Response Format)。
3、行動(dòng)實(shí)施
在智能體根據(jù)目前的環(huán)境、狀態(tài)利用大模型推理獲得所需要采取的行動(dòng)列表后,我們便需要開始實(shí)施行動(dòng)了。根據(jù)我們對(duì)不同的行動(dòng)類型進(jìn)行了如下4類:角色移動(dòng),常規(guī)任務(wù)、特殊任務(wù)和開展會(huì)議。我們將對(duì)應(yīng)的每個(gè)原子行動(dòng)進(jìn)行了封裝(相當(dāng)于智能體框架中的工具),當(dāng)目標(biāo)任務(wù)出現(xiàn)在行動(dòng)列表時(shí),智能體則依次執(zhí)行每個(gè)任務(wù)的行動(dòng)流。
(1)角色移動(dòng)
角色移動(dòng)是一個(gè)最常見的行動(dòng),通常包含在任務(wù)執(zhí)行中,如果任務(wù)中不包含位置信息,游戲智能體則會(huì)閑逛。在智能體行為決策的輸出中通常只包含角色移動(dòng)目標(biāo)點(diǎn)信息,獲得這些信息后,角色移動(dòng)的行動(dòng)流程為:
- 獲取當(dāng)前起始點(diǎn)和目標(biāo)點(diǎn)的圖位置坐標(biāo)
- 使用迪杰斯特拉算法規(guī)劃出移動(dòng)路徑
- 將移動(dòng)路徑依次映射為游戲手柄模擬中的移動(dòng)控件,驅(qū)動(dòng)角色進(jìn)行移動(dòng)
需要注意的是,角色移動(dòng)過程中需要實(shí)時(shí)監(jiān)聽感知環(huán)境,以應(yīng)對(duì)緊急事件的發(fā)生。
(2)常規(guī)任務(wù)
常規(guī)任務(wù)也叫做任務(wù)欄任務(wù),主要是船員來執(zhí)行。AmongUs 中存在許多任務(wù)欄任務(wù),每一個(gè)常規(guī)任務(wù)都被封裝成獨(dú)立的行動(dòng)流,方便任務(wù)執(zhí)行過程中進(jìn)行簡(jiǎn)潔的調(diào)用。AmongUs中存在大量的任務(wù)欄任務(wù),需要一一構(gòu)建行動(dòng)流,其中會(huì)使用到許多其他 AI 技術(shù)。以電路修復(fù)(Fix Wiring)任務(wù)為例,其執(zhí)行步驟為:
- 尋找電線:任務(wù)要求修復(fù)一些斷開的電線。不同的電線具有不同的顏色。我們需要使用一個(gè)簡(jiǎn)單的圖像識(shí)別模型來識(shí)別游戲中出現(xiàn)的電路圖案和對(duì)應(yīng)的顏色,以判斷斷開的線路。
- 連接電線:基于識(shí)別出的電路信息,利用圖像匹配算法判斷需要連接電路的起止位置,然后使用Python 包pyautogui模擬鼠標(biāo)控制,依次將斷開的電線連接起來。在游戲中,需要將電線的兩個(gè)端點(diǎn)拖動(dòng)到正確的位置,使它們連接在一起。根據(jù)任務(wù)列表上的指示,連接所有需要修復(fù)的電線。
- 完成任務(wù):一旦將所有電線連接好,F(xiàn)ix Wiring任務(wù)就會(huì)被標(biāo)記為完成。便可以退出該任務(wù),繼續(xù)完成其他行動(dòng)列表中的任務(wù)或活動(dòng)。
(3)特殊任務(wù)
特殊任務(wù)主要是背叛者需要執(zhí)行的任務(wù),這類任務(wù)比較簡(jiǎn)單,通常為殺人和破壞設(shè)施,只需要在對(duì)應(yīng)玩家和設(shè)施旁模擬鼠標(biāo)點(diǎn)擊便可以直接執(zhí)行。
(4)開展會(huì)議
會(huì)議開展的目的是為了討論和展開投票,以找出背叛者。船員可以利用會(huì)議的時(shí)間來分享自己的觀察和懷疑,并與其他船員進(jìn)行討論。通過投票淘汰懷疑對(duì)象,船員可以一步步接近找出真正的背叛者。在會(huì)議中,船員可以通過聊天功能與其他船員進(jìn)行交流。船員可以分享自己的懷疑對(duì)象、提供觀察到的行為和線索,并與其他船員進(jìn)行思維碰撞。船員可以提出問題,尋找矛盾之處,并通過邏輯推理和投票找出可能的背叛者。在會(huì)議末尾,船員將通過投票的方式淘汰懷疑對(duì)象。每個(gè)船員都有一票,被投票最多的人將被認(rèn)定為懷疑對(duì)象,淘汰出局。投票是船員們找出背叛者的關(guān)鍵步驟,需要慎重考慮,不能隨意投票。
由此可見,會(huì)議的過程可以充分利用大模型的對(duì)話能力以及邏輯推理能力,在我們的實(shí)現(xiàn)中,會(huì)議的行動(dòng)流即是一個(gè)小型智能體,在該場(chǎng)景下我們唯一需要感知以及能夠感知的信息只有玩家之間的聊天信息。
在會(huì)議智能體的行為決策階段,我們需要提供給大模型提供的決策信息包括:
- 角色玩法:主要包括當(dāng)前游戲智能體的身份(船員還是背叛者),不同身份對(duì)應(yīng)的玩法規(guī)則。
- 角色策略:不同的角色身份需要提前預(yù)定義對(duì)應(yīng)的游戲策略,可以參考網(wǎng)上玩家提供的策略。
- 游戲事件:主要是智能體在游戲過程中經(jīng)歷的事件,包括所見玩家、會(huì)議召開者、召開歷史、以及其他玩家狀態(tài)。
- 角色狀態(tài):告知大模型目前正在進(jìn)行會(huì)議,并提示他遵循角色定位,進(jìn)行擬人化回復(fù)。
- 對(duì)話歷史:監(jiān)聽會(huì)議過程中的聊天信息,以及最后的投票結(jié)果。
最終,會(huì)議智能體的輸出即是它對(duì)應(yīng)的發(fā)言,實(shí)際場(chǎng)景下,我們需要將會(huì)議智能體的發(fā)言輸入到對(duì)話框與其他玩家參與討論。這里,我們采用的是Python提供的keyboard包模擬文字輸入,然后識(shí)別發(fā)送按鈕和其他玩家交流。
4、游戲解說
當(dāng)游戲智能體可以自主的玩游戲之后,如何與虛擬人進(jìn)行聯(lián)動(dòng)呢?這里我們想到了一個(gè)好玩的經(jīng)典場(chǎng)景,即虛擬人游戲解說。人工智能的優(yōu)勢(shì)在于不同的行為可以同步進(jìn)行,我們可以讓虛擬人一邊玩游戲,一邊進(jìn)行解說,該過程是完全 AI 驅(qū)動(dòng)的,低成本的。
虛擬人想要解說游戲,我們需要能實(shí)時(shí)了解游戲的對(duì)局情況,幸運(yùn)的是,當(dāng)我們構(gòu)建了以上的游戲智能體之后,通過在不同的模塊中監(jiān)聽,我們可以及時(shí)地獲取游戲情況。這里的監(jiān)聽信息主要分為三類:
- 世界信息:比如游戲過程中,觀察到的緊急事件或玩家事件,比如玩家死亡、緊急事件的召開、船艙氧含量等等。
- 思考決策:游戲智能體的思考決策過程,這里可以使用ReAct行為決策過程中的 Observation 和 Thinking 結(jié)果。
- 行為狀態(tài):當(dāng)前執(zhí)行的任務(wù)名,行動(dòng)流描述等等。
然后,我們將這些監(jiān)聽消息封裝為一類名為 GameDecisionEvent 獨(dú)特的event,這類 event 會(huì)攜帶有關(guān)游戲解說所需的信息,主要包括游戲背景(game name,role,map等)和實(shí)時(shí)事件信息(task,action,thought,observation 等)。這類消息在監(jiān)聽后會(huì)發(fā)送到多虛擬人交互框架中介紹的全局 Event Queue 中,然后由 World Sandobox分發(fā)給對(duì)應(yīng)的虛擬人進(jìn)行處理。
虛擬人 AI Agent 發(fā)現(xiàn)這類消息后會(huì)進(jìn)入游戲解說流進(jìn)行單獨(dú)處理,游戲解說流中的特殊之處在于我們?cè)谧裱摂M人角色性格設(shè)定的同時(shí),加強(qiáng)了解說場(chǎng)景的限制(Prompt 中進(jìn)行規(guī)則設(shè)定),從而讓解說流程更加準(zhǔn)確、生動(dòng)。
GameDecisionEvent類中我們引入了專門的優(yōu)先級(jí),這主要是為了防止消息累積,因此游戲智能體在游戲進(jìn)程中會(huì)產(chǎn)生大量用于游戲解說的消息,但是虛擬人智能體在處理和解說過程中是需要時(shí)間的,隨著游戲運(yùn)行可能會(huì)造成消息積累,導(dǎo)致游戲進(jìn)程和解說進(jìn)程不同步。
然后我們對(duì)這類消息在消息隊(duì)列中施加一些策略進(jìn)行管理。比如 :某些緊急事件會(huì)被設(shè)定為最高優(yōu)先級(jí),比如玩家死亡、緊急會(huì)議等,這類事件出現(xiàn)后需要立即解說,因此它們會(huì)插隊(duì)中優(yōu)先級(jí)事件,以及清空隊(duì)列中的低優(yōu)先級(jí)事件。
四、總結(jié)與展望
總的來說,虛擬人技術(shù)是一項(xiàng)多技術(shù)融合的復(fù)雜工程。在本文中,主要聚焦于如何利用大模型來驅(qū)動(dòng)虛擬人,并結(jié)合 AI 智能體的概念和技術(shù)進(jìn)行架構(gòu)設(shè)計(jì)。LLM 的快速發(fā)展推動(dòng)了虛擬人領(lǐng)域的進(jìn)步,這主要是因?yàn)?LLM 為虛擬人提供了更加流暢的對(duì)話體驗(yàn),同時(shí)借助于LLM 優(yōu)秀的推理能力以及智能體技術(shù)的引入使得整體技術(shù)框架得以簡(jiǎn)化。
但是,虛擬人是極其依賴于互動(dòng)體驗(yàn)和角色表現(xiàn)力,這需要我們?cè)诳紤]智能的同時(shí),加強(qiáng)語音和角色動(dòng)作等方面的能力。情緒飽滿的語音和流暢、豐富的肢體動(dòng)作能給觀眾帶來最直觀的感知。
在游戲智能體方面,如何讓 LLM 進(jìn)行更準(zhǔn)確的行動(dòng)決策依賴于我們對(duì)環(huán)境全方位的感知,可感知的信息越多,行動(dòng)決策越準(zhǔn)確、游戲目標(biāo)達(dá)成的成功率就越高,這方面我們?nèi)栽诶^續(xù)探索。
當(dāng)然 LLM 在響應(yīng)時(shí)延方面仍然有一定的局限性,這一點(diǎn)非常影響虛擬人的實(shí)時(shí)交互,無論是從模型還是從流程上都需要進(jìn)一步的優(yōu)化,也將是是否能為實(shí)時(shí)虛擬人領(lǐng)域真正帶來技術(shù)突破的關(guān)鍵。
參考文獻(xià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)用研究員
來源公眾號(hào):騰訊大講堂(ID:TX_DJT ),聚焦前沿,打造互聯(lián)網(wǎng)人的高光時(shí)刻
本文由人人都是產(chǎn)品經(jīng)理合作媒體 @騰訊大講堂 授權(quán)發(fā)布,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒評(píng)論,等你發(fā)揮!