AI賦能游戲:?jiǎn)?wèn)答機器人的設計與實(shí)現

7 評論 2498 瀏覽 8 收藏 13 分鐘

AI發(fā)展快速,最適合的應用場(chǎng)景,應該是游戲了。光是NPC的問(wèn)答、選項,就有很多可以操作的空間。本文從游戲行業(yè)出發(fā),分析了問(wèn)答機器人的實(shí)現原理和語(yǔ)料的經(jīng)驗,供大家參考。

隨著(zhù)AI這兩年的快速發(fā)展,游戲廠(chǎng)商躍躍欲試如何讓AI融入游戲。

半年前,我們也在游戲內嵌社區中,上線(xiàn)了一款以大語(yǔ)言模型為核心打造的問(wèn)答機器人,旨在滿(mǎn)足玩家快速獲取攻略的需求。

這篇文章,將以游戲行業(yè)產(chǎn)品經(jīng)理的角度,分享這款問(wèn)答機器人的實(shí)現原理,及其語(yǔ)料的制作經(jīng)驗。

一、為什么需要問(wèn)答機器人

問(wèn)答機器人所落地的游戲,是一款三國策略類(lèi)游戲。游戲中玩家被隨機分到魏蜀吳中的一個(gè)國家,并通過(guò)一系列玩法攻城略地,擴展疆土。玩家可以招募各色三國英雄,并給英雄搭配不同裝備、學(xué)習不同技能以提升戰力,并可以組建不同的英雄陣容去挑戰別的玩家以及掠奪別國的城池。因此,游戲玩法的自由度給予了玩家很多策略探索的可能。

起初,我們只是搭建了一個(gè)問(wèn)答社區,供用戶(hù)發(fā)表問(wèn)題與分享攻略心得。隨著(zhù)玩家人數增加及賽季的深入,玩家對攻略的需求日益明顯。官方發(fā)布的攻略,不一定能滿(mǎn)足玩家快速獲取攻略的需求。有時(shí)候玩家只想找一個(gè)答案,卻要看完一整篇攻略。因此,我們想通過(guò)智能問(wèn)答機器人的形式,滿(mǎn)足玩家快問(wèn)快答的痛點(diǎn),以提升玩家的游戲體驗。

我們的智能機器人名為“諸葛先生”,以H5的形式開(kāi)展對話(huà)。對用戶(hù)來(lái)說(shuō)沒(méi)有復雜的功能,只要提問(wèn),機器人就會(huì )回答。

(頁(yè)面樣式這里用原型圖代替了哈)

二、機器人技術(shù)原理:大語(yǔ)言模型RAG的應用

在介紹問(wèn)答機器人的原理前,先說(shuō)一個(gè)前提,就是我們的大語(yǔ)言模型的語(yǔ)料庫中,有一種語(yǔ)料是QA形式的,即一問(wèn)(question)一答(answer),與一般的段落形文章有所區別。關(guān)于語(yǔ)料庫的介紹,下邊章節會(huì )繼續細說(shuō)。這里將繼續講機器人的運行原理。

如下圖,在用戶(hù)提出問(wèn)題后,我們的機器人分有兩個(gè)答案輸出邏輯。首先,用戶(hù)提問(wèn)的問(wèn)題都會(huì )先進(jìn)行內容檢索,通過(guò)檢索模型檢索出與用戶(hù)提問(wèn)相關(guān)的內容。當檢索到用戶(hù)提問(wèn)有匹配的QA時(shí)(即玩家提問(wèn)匹配到語(yǔ)料庫中預設的Question),則程序會(huì )直接輸出Answer;另一種邏輯是,當檢索模型沒(méi)有檢索到匹配的QA,那程序就會(huì )繼續檢索其他內容(如文章段落),并產(chǎn)出一條帶內容的提示詞(prompt)輸入到大語(yǔ)言模型中,由大語(yǔ)言模型生成答案。

舉個(gè)例子,假設用戶(hù)提問(wèn)了“趙云怎么培養”,則程序會(huì )通過(guò)檢索模型,先檢索是否存在與“趙云怎么培養”接近的question,存在則輸出對應answer,否則找出“趙云培養”相關(guān)的內容。我們比擬程序找到的相關(guān)內容為AABB,此時(shí)給到大語(yǔ)言模型的提示詞(prompt)就是:“AABB,請根據上述內容回答:趙云怎么培養?!贝笳Z(yǔ)言模型則根據上述提示詞生成答案。

為什么我們不直接使用大語(yǔ)言模型,而是前置一步加入檢索模型呢?

我們知道,大語(yǔ)言模型基于神經(jīng)網(wǎng)絡(luò )模型,使用大量的語(yǔ)料庫進(jìn)行訓練,比如互聯(lián)網(wǎng)上的大量文本數據。因此,大語(yǔ)言模型能高效準確地回答通用知識類(lèi)的問(wèn)題。而游戲屬于專(zhuān)有領(lǐng)域,如何讓大語(yǔ)言模型直接回答專(zhuān)有領(lǐng)域知識,則它給出的答案必定會(huì )差強人意(答非所問(wèn)或是回答不出)。因此我們會(huì )先前置一步進(jìn)行內容搜索,通過(guò)內容來(lái)約束大語(yǔ)言模型的生成。這樣的技術(shù)邏輯也稱(chēng)為RAG(Retrieval-Augmented Generation,檢索增強生成)。

RAG其實(shí)就是對大語(yǔ)言模型的檢索能力及聯(lián)想能力的外擴,讓大語(yǔ)言模型在可控范圍內生成更準確高精的回答,尤其適用于專(zhuān)有領(lǐng)域的問(wèn)答工具。RAG的原理如下圖:

圖片源自《Chatbot從0到1》(第2版),作者李佳芮、李卓桓

RAG 系統的起點(diǎn)一般是一個(gè)文本文檔的語(yǔ)料庫,簡(jiǎn)單看起來(lái)是這樣的: 把文本分割成塊,然后把這些分塊嵌入到向量與transformer編碼器模型,把所有這些向量建立索引,從而查詢(xún)出與用戶(hù)提問(wèn)相關(guān)的上下文,最后創(chuàng )建一個(gè)帶上下文的大語(yǔ)言模型提示語(yǔ),讓模型回答用戶(hù)的查詢(xún)。

我們可以對比有無(wú)檢索模型對回答的差別:

大語(yǔ)言模型同樣是ChatGPT3.5,提問(wèn)“趙云要怎么培養”,單純使用大語(yǔ)言模型,而沒(méi)有檢索模型的約束時(shí),回答的內容就和游戲不沾邊(左圖)。而使用了檢索模型,讓大語(yǔ)言模型的回答就完全貼合游戲了(右圖)。

三、問(wèn)答質(zhì)量的打磨調優(yōu)

為了提升機器人的回答準確率。我們的調優(yōu)有幾個(gè)方面:

增強對用戶(hù)提問(wèn)的理解

對于用戶(hù)的提問(wèn),除了分詞切割,我們還有錯字甄別、同義詞判定等邏輯,希望程序能盡量清晰理解用戶(hù)的意向。

增強檢索模型的召回質(zhì)量

在眾多語(yǔ)料中如何找到最匹配玩家的內容呢?我們的檢索算法,會(huì )在對用戶(hù)提問(wèn)進(jìn)行分詞后,會(huì )先用BM25算法根據關(guān)鍵詞對文檔進(jìn)行第一次評分,然后根據評分閾值提取top-k文檔進(jìn)行第二次評分,還有問(wèn)題和文檔稠密向量的相關(guān)性評分等。每一步都可能影響檢索的內容及LLM的回答結果。

選擇更智能的語(yǔ)言模型

機器人上線(xiàn)初期,使用的模型是國內的ChatGLM2.0。但通過(guò)拉取用戶(hù)的實(shí)際問(wèn)答數據,我們發(fā)現答案質(zhì)量并不理想,答案中存在較多答非所問(wèn)、胡編亂造的問(wèn)題。并且在多次調優(yōu)檢索模型后(提高召回文檔的相關(guān)性),答案質(zhì)量仍然不佳。

于是我們考慮更換大語(yǔ)言模型。我們找來(lái)了兩款智能體做對比,分別是ChatGPT3.5及Google旗下的Gemma。三者對比后我們發(fā)現,ChatGLM2.0的幻覺(jué)問(wèn)題較其他兩個(gè)模型會(huì )更為明顯。意思就是,如果檢索模型召回的文檔中不存在用戶(hù)提問(wèn)的相關(guān)內容(相關(guān)性低),則ChatGLM2.0會(huì )一本正經(jīng)胡說(shuō)八道。即便是檢索模型召回的文檔中有用戶(hù)所需的內容(相關(guān)性高),ChatGLM2.0也可能會(huì )回答失準。

最后我們選擇了ChatGPT3.5。對比下來(lái),ChatGPT3.5在對話(huà)生成的流暢度、連貫性以及上下文理解方面的表現都更出色,能夠生成更加精準和自然的回答,對于無(wú)法回答的問(wèn)題,也會(huì )更直接地告知用戶(hù)它不清楚。

四、語(yǔ)料的構成

如果說(shuō)模型是問(wèn)答機器人的肉軀,那語(yǔ)料就是血液。語(yǔ)料足夠多,覆蓋面足夠廣,問(wèn)答機器人才會(huì )更具活力。

我們的語(yǔ)料有幾個(gè)部分構成:

  • 游戲內所有呈現給玩家的文案,包括道具名稱(chēng)、說(shuō)明及玩法簡(jiǎn)介。這類(lèi)內容屬于短內容,只有單個(gè)句子或單一段落。
  • 發(fā)布于官網(wǎng)、論壇的游戲攻略。這類(lèi)內容屬于長(cháng)內容,由多個(gè)段落構成。
  • QA問(wèn)答對。一問(wèn)一答的固定內容。

如前所述,我們機器人分了兩個(gè)答案輸出邏輯,如果檢索模型命中QA,則會(huì )更快給玩家產(chǎn)出答案?;诖?,我們加大了QA問(wèn)答對的產(chǎn)量,以提升問(wèn)答效率。QA來(lái)源于玩家的真實(shí)提問(wèn),我們提取了高頻問(wèn)題,以及部分刁鉆的提問(wèn),做成了問(wèn)答對。

制作問(wèn)答對比較費人工,因為answer都是人工寫(xiě)的,有時(shí)候還要玩一下游戲驗證寫(xiě)的answer是否正確。為了節約工時(shí),我們又借用了AI工具協(xié)助我們生產(chǎn)問(wèn)答對。這里AI工具的作用不是幫我們快速生成答案,而是提前生成玩家可能問(wèn)到的問(wèn)題并產(chǎn)出答案。我們給AI喂入上述語(yǔ)料中的2-攻略長(cháng)內容,并讓AI根據文章內容中生成QA。不過(guò),雖然生產(chǎn)速度提高了,但內容的實(shí)用性卻并不高。AI生成的問(wèn)題并不像玩家的提問(wèn),更像是老師出的考題,需要再二次修改問(wèn)答對的內容。因此,目前的問(wèn)答對維護還是集中在人工生產(chǎn)。

五、問(wèn)答機器人的未來(lái)創(chuàng )想

我們的問(wèn)答機器人還有很多優(yōu)化空間。目前,雖然它在提升玩家體驗方面已經(jīng)取得一定成效,但仍存在一些需要改進(jìn)的地方。例如尚未開(kāi)發(fā)連續對話(huà),玩家無(wú)法追問(wèn),造成對話(huà)交互不夠自然流暢。此外,隨著(zhù)游戲內容的不斷更新,我們的語(yǔ)料庫也需要持續地維護和擴充,這也是需要不斷消耗人力的工作。

不過(guò)我相信,問(wèn)答機器人將在未來(lái)的游戲世界中扮演更加重要的角色,為玩家帶來(lái)更加精彩和便捷的游戲體驗。

歡迎在評論區一起探討問(wèn)答機器人的更多可能~

作者:楊桃,游戲行業(yè)B端產(chǎn)品經(jīng)理,愛(ài)用文字記錄觀(guān)察及想法。

本文由 @楊桃 原創(chuàng )發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉載。

題圖來(lái)自 Unsplash,基于CC0協(xié)議。

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

更多精彩內容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 請問(wèn)下 從語(yǔ)料學(xué)習訓練到成為可用的問(wèn)答機器人,大概用了多久?

    來(lái)自中國 回復
    1. 從0到1的階段其實(shí)很快,一個(gè)月左右就產(chǎn)出模型和功能了。不過(guò),驗證問(wèn)答效果及打磨問(wèn)答質(zhì)量的用時(shí)就比較久,花了將近半年。

      來(lái)自廣東 回復
  2. 否則找出“趙云培養”相關(guān)的內容。我們比擬程序找到的相關(guān)內容為AABB,此時(shí)給到大語(yǔ)言模型的提示詞(prompt)就是:“AABB,請根據上述內容回答:趙云怎么培養?!边@段內容沒(méi)看懂,AABB是什么意思?能不能舉一下具體的例子,謝謝

    來(lái)自北京 回復
    1. 好像是把大模型找到的相關(guān)內容,再以一個(gè)新的prompt輸入給程序,新的指令不是趙云怎么培養,而是根據AABB的內容回答趙云怎么培養

      來(lái)自中國 回復
    2. 明白了,謝謝

      來(lái)自北京 回復
    3. 是的,正如那位朋友說(shuō)的那樣。當用戶(hù)提問(wèn)“趙云怎么培養”,檢索模型會(huì )找出一段內容,然后再把這段內容加上用戶(hù)的提問(wèn),以提示詞的形式喂入大語(yǔ)言模型。
      再舉個(gè)例子:
      玩家提問(wèn):趙云怎么培養
      檢索模型:找到的內容是“趙云是一個(gè)×××的英雄,他應該這樣培養:×××?!?br /> 大語(yǔ)言模型的提示詞:“趙云是一個(gè)×××的英雄,他應該這樣培養:×××。,請根據上述內容回答:趙云怎么培養”

      來(lái)自廣東 回復
    4. 明白了,謝謝

      來(lái)自北京 回復