您的位置:首頁 > 軟件教程 > 教程 > 使用大模型實(shí)現(xiàn)斗地主游戲?qū)?/span>

使用大模型實(shí)現(xiàn)斗地主游戲?qū)?/h1>
來源:好特整理 | 時(shí)間:2024-06-05 18:45:44 | 閱讀:185 |  標(biāo)簽: T 智能 游戲 扮演 斗地主   | 分享到:

通過大模型來實(shí)現(xiàn)多個(gè)智能體進(jìn)行游戲?qū)诌@個(gè)想對(duì)已經(jīng)比較成熟了無論是去年驚艷的斯坦福小鎮(zhèn)還是比如metaGPT或者類似的框架都是使用智能體技術(shù)讓大模型來操控,從而讓大模型跳出自身“預(yù)測(cè)下一個(gè)token”的文字功能去探索更多的應(yīng)用落地可能性。不過一直沒有真正操作過,直到前段時(shí)間看到一個(gè)新聞《和GPT-4

通過大模型來實(shí)現(xiàn)多個(gè)智能體進(jìn)行游戲?qū)诌@個(gè)想對(duì)已經(jīng)比較成熟了。無論是去年驚艷的斯坦福小鎮(zhèn)還是比如metaGPT或者類似的框架都是使用智能體技術(shù)讓大模型來操控,從而讓大模型跳出自身“預(yù)測(cè)下一個(gè)token”的文字功能去探索更多的應(yīng)用落地可能性。不過一直沒有真正操作過,直到前段時(shí)間看到一個(gè)新聞《和GPT-4這些大模型玩狼人殺,人類因太蠢被票死,真·反向圖靈測(cè)試》決定自己來玩一下。

斗地主是一款國(guó)人比較熟悉的棋牌游戲,考慮到這個(gè)游戲受眾群體,所以基礎(chǔ)大模型使用國(guó)產(chǎn)的通義千問提供的API接口(GPT4太貴用不起)。通過阿里云百煉大模型平臺(tái)即可簡(jiǎn)單注冊(cè)并申請(qǐng)使用:
https://bailian.console.aliyun.com/

接著就是整體框架設(shè)計(jì),其實(shí)整個(gè)游戲設(shè)計(jì)比較簡(jiǎn)單,隨機(jī)發(fā)牌->隨機(jī)定義一個(gè)玩家作為地主并發(fā)出尾牌(由于主要是模擬大模型使用Agent的玩牌所以這里就不加入搶地主環(huán)節(jié)了)->從地主開始玩家輪流出牌->誰的牌出完根據(jù)其角色決定是地主勝利還是農(nóng)民勝利。

游戲整體使用c#編程,游戲主要的處理邏輯就是檢測(cè)AI出牌的合法性,包括AI出牌是否是當(dāng)前智能體的持有的手牌、牌型是否正確(單排/連子/對(duì)子/順子/三帶一/炸彈),出的牌是否可以壓住上一輪玩家的牌等等邏輯。核心的部分如下:

以及玩牌部分的核心邏輯:

接著就是一些游戲狀態(tài)管理,包括初始化牌組、分派給三個(gè)玩家手牌,玩家自身的手牌管理等等這里就不一一贅述了,這里主要講一下基于阿里千問大模型如何設(shè)計(jì)Agent代理的部分。在阿里百煉上,可以查看模型的調(diào)用示例,這里我們選擇阿里目前最大的千億參數(shù)大模型千問-MAX,進(jìn)入調(diào)用示例就可以看到類似如下示例代碼(如果你喜歡SDK則可以選擇python和java的包。如果是其他語言則只有自己手寫http請(qǐng)求調(diào)用):

使用大模型實(shí)現(xiàn)斗地主游戲?qū)? src=

調(diào)用的部分比較簡(jiǎn)單,就是一個(gè)httpclient的封裝,以及對(duì)調(diào)用入?yún)⒑统鰠TO的實(shí)體定義:

接著就是比較關(guān)鍵的部分,即入?yún)⒌亩x,這決定了大模型如何調(diào)用智能體的關(guān)鍵,這里面其實(shí)主要還是編寫特定的prompt讓大模型知道自己要干嘛。由于是斗地主游戲,所以這里我們需要在系統(tǒng)提示詞中編寫一些關(guān)于斗地主的基本游戲規(guī)則、不同角色可以采取的常規(guī)游戲策略,游戲當(dāng)前的對(duì)局情況。接著在用戶提示詞中需要告知大模型扮演智能體的角色、持有的手牌,可以調(diào)取的游戲函數(shù)。其中游戲函數(shù)比較關(guān)鍵,這也是大模型唯一可以讓游戲“動(dòng)起來”的方式。以下是我定義的關(guān)于斗地主游戲的請(qǐng)求入?yún)ⅲ?

接下來就是游戲的運(yùn)行主要部分邏輯,定義一個(gè)游戲?qū)嵗,通過一個(gè)死循環(huán)檢測(cè)是否已經(jīng)有玩家手牌出盡來判斷游戲是否已經(jīng)達(dá)到結(jié)局,沒有出盡則依次讓大模型調(diào)用智能體通過函數(shù)玩游戲,并且當(dāng)模型出牌不符合規(guī)則時(shí)通過函數(shù)回調(diào)告知模型出錯(cuò)的邏輯指導(dǎo)模型重新進(jìn)行對(duì)應(yīng)的出牌:

以上內(nèi)容基本就是主要的部分,演示的內(nèi)容如下:

使用大模型實(shí)現(xiàn)斗地主游戲?qū)? src=

使用大模型實(shí)現(xiàn)斗地主游戲?qū)? src=

可以看到模型的表現(xiàn)還是比較“蠢”,這是因?yàn)槎返刂魇且粋(gè)典型的信息不完全(信息不透明)的游戲。這意味著在游戲過程中不是所有的信息都是對(duì)所有玩家開放的。策略的多樣性和不確定性讓玩家在游戲中必須基于有限的信息做出決策,比如是否搶地主(本示例沒有)、如何出牌以及如何配合或?qū)蛊渌婕。玩家的策略不僅受到手牌的限制,還受到對(duì)其他玩家策略的猜測(cè)和解讀的影響。加之當(dāng)前大模型對(duì)于數(shù)學(xué)的理解能力較差和邏輯短板導(dǎo)致其表現(xiàn)的比較“智障”。一般的斗地主AI主要依賴搜索算法+剪枝策略或者基于神經(jīng)網(wǎng)絡(luò)+強(qiáng)化學(xué)習(xí)+搜索算法來實(shí)現(xiàn)比如典型的棋牌類AI比如Pluribus和AlphaGo都是依賴類似的技術(shù)來實(shí)現(xiàn),而大模型本身主要并非轉(zhuǎn)向基于游戲決策做過訓(xùn)練,所以這里也就不展開了。本作主要還是想討論大模型在智能體應(yīng)用上有哪些可能的落地方式。

完整的代碼如下,有興趣的朋友可以自行申請(qǐng)百煉的千問API接口進(jìn)行嘗試(沒有依賴任何包,所以可以創(chuàng)建一個(gè)控制臺(tái)程序直接粘貼到program.cs即可運(yùn)行):

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)