AI賦能游戲:?jiǎn)柎饳C(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)
AI發(fā)展快速,最適合的應(yīng)用場(chǎng)景,應(yīng)該是游戲了。光是NPC的問(wèn)答、選項(xiàng),就有很多可以操作的空間。本文從游戲行業(yè)出發(fā),分析了問(wèn)答機(jī)器人的實(shí)現(xiàn)原理和語(yǔ)料的經(jīng)驗(yàn),供大家參考。
隨著AI這兩年的快速發(fā)展,游戲廠商躍躍欲試如何讓AI融入游戲。
半年前,我們也在游戲內(nèi)嵌社區(qū)中,上線了一款以大語(yǔ)言模型為核心打造的問(wèn)答機(jī)器人,旨在滿足玩家快速獲取攻略的需求。
這篇文章,將以游戲行業(yè)產(chǎn)品經(jīng)理的角度,分享這款問(wèn)答機(jī)器人的實(shí)現(xiàn)原理,及其語(yǔ)料的制作經(jīng)驗(yàn)。
一、為什么需要問(wèn)答機(jī)器人
問(wèn)答機(jī)器人所落地的游戲,是一款三國(guó)策略類游戲。游戲中玩家被隨機(jī)分到魏蜀吳中的一個(gè)國(guó)家,并通過(guò)一系列玩法攻城略地,擴(kuò)展疆土。玩家可以招募各色三國(guó)英雄,并給英雄搭配不同裝備、學(xué)習(xí)不同技能以提升戰(zhàn)力,并可以組建不同的英雄陣容去挑戰(zhàn)別的玩家以及掠奪別國(guó)的城池。因此,游戲玩法的自由度給予了玩家很多策略探索的可能。
起初,我們只是搭建了一個(gè)問(wèn)答社區(qū),供用戶發(fā)表問(wèn)題與分享攻略心得。隨著玩家人數(shù)增加及賽季的深入,玩家對(duì)攻略的需求日益明顯。官方發(fā)布的攻略,不一定能滿足玩家快速獲取攻略的需求。有時(shí)候玩家只想找一個(gè)答案,卻要看完一整篇攻略。因此,我們想通過(guò)智能問(wèn)答機(jī)器人的形式,滿足玩家快問(wèn)快答的痛點(diǎn),以提升玩家的游戲體驗(yàn)。
我們的智能機(jī)器人名為“諸葛先生”,以H5的形式開展對(duì)話。對(duì)用戶來(lái)說(shuō)沒有復(fù)雜的功能,只要提問(wèn),機(jī)器人就會(huì)回答。
(頁(yè)面樣式這里用原型圖代替了哈)
二、機(jī)器人技術(shù)原理:大語(yǔ)言模型RAG的應(yīng)用
在介紹問(wèn)答機(jī)器人的原理前,先說(shuō)一個(gè)前提,就是我們的大語(yǔ)言模型的語(yǔ)料庫(kù)中,有一種語(yǔ)料是QA形式的,即一問(wèn)(question)一答(answer),與一般的段落形文章有所區(qū)別。關(guān)于語(yǔ)料庫(kù)的介紹,下邊章節(jié)會(huì)繼續(xù)細(xì)說(shuō)。這里將繼續(xù)講機(jī)器人的運(yùn)行原理。
如下圖,在用戶提出問(wèn)題后,我們的機(jī)器人分有兩個(gè)答案輸出邏輯。首先,用戶提問(wèn)的問(wèn)題都會(huì)先進(jìn)行內(nèi)容檢索,通過(guò)檢索模型檢索出與用戶提問(wèn)相關(guān)的內(nèi)容。當(dāng)檢索到用戶提問(wèn)有匹配的QA時(shí)(即玩家提問(wèn)匹配到語(yǔ)料庫(kù)中預(yù)設(shè)的Question),則程序會(huì)直接輸出Answer;另一種邏輯是,當(dāng)檢索模型沒有檢索到匹配的QA,那程序就會(huì)繼續(xù)檢索其他內(nèi)容(如文章段落),并產(chǎn)出一條帶內(nèi)容的提示詞(prompt)輸入到大語(yǔ)言模型中,由大語(yǔ)言模型生成答案。
舉個(gè)例子,假設(shè)用戶提問(wèn)了“趙云怎么培養(yǎng)”,則程序會(huì)通過(guò)檢索模型,先檢索是否存在與“趙云怎么培養(yǎng)”接近的question,存在則輸出對(duì)應(yīng)answer,否則找出“趙云培養(yǎng)”相關(guān)的內(nèi)容。我們比擬程序找到的相關(guān)內(nèi)容為AABB,此時(shí)給到大語(yǔ)言模型的提示詞(prompt)就是:“AABB,請(qǐng)根據(jù)上述內(nèi)容回答:趙云怎么培養(yǎng)?!贝笳Z(yǔ)言模型則根據(jù)上述提示詞生成答案。
為什么我們不直接使用大語(yǔ)言模型,而是前置一步加入檢索模型呢?
我們知道,大語(yǔ)言模型基于神經(jīng)網(wǎng)絡(luò)模型,使用大量的語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,比如互聯(lián)網(wǎng)上的大量文本數(shù)據(jù)。因此,大語(yǔ)言模型能高效準(zhǔn)確地回答通用知識(shí)類的問(wèn)題。而游戲?qū)儆趯S蓄I(lǐng)域,如何讓大語(yǔ)言模型直接回答專有領(lǐng)域知識(shí),則它給出的答案必定會(huì)差強(qiáng)人意(答非所問(wèn)或是回答不出)。因此我們會(huì)先前置一步進(jìn)行內(nèi)容搜索,通過(guò)內(nèi)容來(lái)約束大語(yǔ)言模型的生成。這樣的技術(shù)邏輯也稱為RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)。
RAG其實(shí)就是對(duì)大語(yǔ)言模型的檢索能力及聯(lián)想能力的外擴(kuò),讓大語(yǔ)言模型在可控范圍內(nèi)生成更準(zhǔn)確高精的回答,尤其適用于專有領(lǐng)域的問(wèn)答工具。RAG的原理如下圖:
圖片源自《Chatbot從0到1》(第2版),作者李佳芮、李卓桓
RAG 系統(tǒng)的起點(diǎn)一般是一個(gè)文本文檔的語(yǔ)料庫(kù),簡(jiǎn)單看起來(lái)是這樣的: 把文本分割成塊,然后把這些分塊嵌入到向量與transformer編碼器模型,把所有這些向量建立索引,從而查詢出與用戶提問(wèn)相關(guān)的上下文,最后創(chuàng)建一個(gè)帶上下文的大語(yǔ)言模型提示語(yǔ),讓模型回答用戶的查詢。
我們可以對(duì)比有無(wú)檢索模型對(duì)回答的差別:
大語(yǔ)言模型同樣是ChatGPT3.5,提問(wèn)“趙云要怎么培養(yǎng)”,單純使用大語(yǔ)言模型,而沒有檢索模型的約束時(shí),回答的內(nèi)容就和游戲不沾邊(左圖)。而使用了檢索模型,讓大語(yǔ)言模型的回答就完全貼合游戲了(右圖)。
三、問(wèn)答質(zhì)量的打磨調(diào)優(yōu)
為了提升機(jī)器人的回答準(zhǔn)確率。我們的調(diào)優(yōu)有幾個(gè)方面:
增強(qiáng)對(duì)用戶提問(wèn)的理解
對(duì)于用戶的提問(wèn),除了分詞切割,我們還有錯(cuò)字甄別、同義詞判定等邏輯,希望程序能盡量清晰理解用戶的意向。
增強(qiáng)檢索模型的召回質(zhì)量
在眾多語(yǔ)料中如何找到最匹配玩家的內(nèi)容呢?我們的檢索算法,會(huì)在對(duì)用戶提問(wèn)進(jìn)行分詞后,會(huì)先用BM25算法根據(jù)關(guān)鍵詞對(duì)文檔進(jìn)行第一次評(píng)分,然后根據(jù)評(píng)分閾值提取top-k文檔進(jìn)行第二次評(píng)分,還有問(wèn)題和文檔稠密向量的相關(guān)性評(píng)分等。每一步都可能影響檢索的內(nèi)容及LLM的回答結(jié)果。
選擇更智能的語(yǔ)言模型
機(jī)器人上線初期,使用的模型是國(guó)內(nèi)的ChatGLM2.0。但通過(guò)拉取用戶的實(shí)際問(wèn)答數(shù)據(jù),我們發(fā)現(xiàn)答案質(zhì)量并不理想,答案中存在較多答非所問(wèn)、胡編亂造的問(wèn)題。并且在多次調(diào)優(yōu)檢索模型后(提高召回文檔的相關(guān)性),答案質(zhì)量仍然不佳。
于是我們考慮更換大語(yǔ)言模型。我們找來(lái)了兩款智能體做對(duì)比,分別是ChatGPT3.5及Google旗下的Gemma。三者對(duì)比后我們發(fā)現(xiàn),ChatGLM2.0的幻覺問(wèn)題較其他兩個(gè)模型會(huì)更為明顯。意思就是,如果檢索模型召回的文檔中不存在用戶提問(wèn)的相關(guān)內(nèi)容(相關(guān)性低),則ChatGLM2.0會(huì)一本正經(jīng)胡說(shuō)八道。即便是檢索模型召回的文檔中有用戶所需的內(nèi)容(相關(guān)性高),ChatGLM2.0也可能會(huì)回答失準(zhǔn)。
最后我們選擇了ChatGPT3.5。對(duì)比下來(lái),ChatGPT3.5在對(duì)話生成的流暢度、連貫性以及上下文理解方面的表現(xiàn)都更出色,能夠生成更加精準(zhǔn)和自然的回答,對(duì)于無(wú)法回答的問(wèn)題,也會(huì)更直接地告知用戶它不清楚。
四、語(yǔ)料的構(gòu)成
如果說(shuō)模型是問(wèn)答機(jī)器人的肉軀,那語(yǔ)料就是血液。語(yǔ)料足夠多,覆蓋面足夠廣,問(wèn)答機(jī)器人才會(huì)更具活力。
我們的語(yǔ)料有幾個(gè)部分構(gòu)成:
- 游戲內(nèi)所有呈現(xiàn)給玩家的文案,包括道具名稱、說(shuō)明及玩法簡(jiǎn)介。這類內(nèi)容屬于短內(nèi)容,只有單個(gè)句子或單一段落。
- 發(fā)布于官網(wǎng)、論壇的游戲攻略。這類內(nèi)容屬于長(zhǎng)內(nèi)容,由多個(gè)段落構(gòu)成。
- QA問(wèn)答對(duì)。一問(wèn)一答的固定內(nèi)容。
如前所述,我們機(jī)器人分了兩個(gè)答案輸出邏輯,如果檢索模型命中QA,則會(huì)更快給玩家產(chǎn)出答案?;诖?,我們加大了QA問(wèn)答對(duì)的產(chǎn)量,以提升問(wèn)答效率。QA來(lái)源于玩家的真實(shí)提問(wèn),我們提取了高頻問(wèn)題,以及部分刁鉆的提問(wèn),做成了問(wèn)答對(duì)。
制作問(wèn)答對(duì)比較費(fèi)人工,因?yàn)閍nswer都是人工寫的,有時(shí)候還要玩一下游戲驗(yàn)證寫的answer是否正確。為了節(jié)約工時(shí),我們又借用了AI工具協(xié)助我們生產(chǎn)問(wèn)答對(duì)。這里AI工具的作用不是幫我們快速生成答案,而是提前生成玩家可能問(wèn)到的問(wèn)題并產(chǎn)出答案。我們給AI喂入上述語(yǔ)料中的2-攻略長(zhǎng)內(nèi)容,并讓AI根據(jù)文章內(nèi)容中生成QA。不過(guò),雖然生產(chǎn)速度提高了,但內(nèi)容的實(shí)用性卻并不高。AI生成的問(wèn)題并不像玩家的提問(wèn),更像是老師出的考題,需要再二次修改問(wèn)答對(duì)的內(nèi)容。因此,目前的問(wèn)答對(duì)維護(hù)還是集中在人工生產(chǎn)。
五、問(wèn)答機(jī)器人的未來(lái)創(chuàng)想
我們的問(wèn)答機(jī)器人還有很多優(yōu)化空間。目前,雖然它在提升玩家體驗(yàn)方面已經(jīng)取得一定成效,但仍存在一些需要改進(jìn)的地方。例如尚未開發(fā)連續(xù)對(duì)話,玩家無(wú)法追問(wèn),造成對(duì)話交互不夠自然流暢。此外,隨著游戲內(nèi)容的不斷更新,我們的語(yǔ)料庫(kù)也需要持續(xù)地維護(hù)和擴(kuò)充,這也是需要不斷消耗人力的工作。
不過(guò)我相信,問(wèn)答機(jī)器人將在未來(lái)的游戲世界中扮演更加重要的角色,為玩家?guī)?lái)更加精彩和便捷的游戲體驗(yàn)。
歡迎在評(píng)論區(qū)一起探討問(wèn)答機(jī)器人的更多可能~
作者:楊桃,游戲行業(yè)B端產(chǎn)品經(jīng)理,愛用文字記錄觀察及想法。
本文由 @楊桃 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
請(qǐng)問(wèn)下 從語(yǔ)料學(xué)習(xí)訓(xùn)練到成為可用的問(wèn)答機(jī)器人,大概用了多久?
從0到1的階段其實(shí)很快,一個(gè)月左右就產(chǎn)出模型和功能了。不過(guò),驗(yàn)證問(wèn)答效果及打磨問(wèn)答質(zhì)量的用時(shí)就比較久,花了將近半年。
否則找出“趙云培養(yǎng)”相關(guān)的內(nèi)容。我們比擬程序找到的相關(guān)內(nèi)容為AABB,此時(shí)給到大語(yǔ)言模型的提示詞(prompt)就是:“AABB,請(qǐng)根據(jù)上述內(nèi)容回答:趙云怎么培養(yǎng)。”這段內(nèi)容沒看懂,AABB是什么意思?能不能舉一下具體的例子,謝謝
好像是把大模型找到的相關(guān)內(nèi)容,再以一個(gè)新的prompt輸入給程序,新的指令不是趙云怎么培養(yǎng),而是根據(jù)AABB的內(nèi)容回答趙云怎么培養(yǎng)
明白了,謝謝
是的,正如那位朋友說(shuō)的那樣。當(dāng)用戶提問(wèn)“趙云怎么培養(yǎng)”,檢索模型會(huì)找出一段內(nèi)容,然后再把這段內(nèi)容加上用戶的提問(wèn),以提示詞的形式喂入大語(yǔ)言模型。
再舉個(gè)例子:
玩家提問(wèn):趙云怎么培養(yǎng)
檢索模型:找到的內(nèi)容是“趙云是一個(gè)×××的英雄,他應(yīng)該這樣培養(yǎng):×××?!?br /> 大語(yǔ)言模型的提示詞:“趙云是一個(gè)×××的英雄,他應(yīng)該這樣培養(yǎng):×××。,請(qǐng)根據(jù)上述內(nèi)容回答:趙云怎么培養(yǎng)”
明白了,謝謝