过年走亲戚,总要参与一把欢乐斗地主或者掼蛋。我技术一般,可谓是被家里的亲戚虐了个遍。于是,我突发奇想,能不能让AI来打斗地主,看看会发生什么有意思的事。
由于斗地主涉及到逻辑的推理,因此我选择了使用比较多的三个推理大模型,来参与斗地主游戏,参赛选手如下:
1号选手:
2号选手:
3号选手:
由于使用AI进行游戏可能会破坏游戏平衡,为了营造大众良好的游戏环境,我选择了自己构建一个斗地主平台。
这里感谢onestraw在GitHub中提供的代码
https://github.com/onestraw/doudizhu此项目是一个Python实现的斗地主引擎,我在此项目的基础上,构建了一个斗地主的应用,实现发牌、叫地主、轮流出牌的操作。
运行程序,程序自动发牌,并预留出来了地主牌
初始手牌如下:
玩家1 DeepSeek [ 2 ♦ ], [ A ♣ ], [ K ♠ ], [ K ♣ ], [ J ♦ ], [ J ♣ ], [ 10 ♠ ], [ 10 ♣ ], [ 9 ❤ ], [ 8 ♣ ], [ 7 ♦ ], [ 7 ♠ ], [ 7 ♣ ], [ 5 ❤ ], [ 4 ♦ ], [ 3 ♠ ], [ 3 ♦ ]
玩家2 Kimi [ 2 ♠ ], [ A ♦ ], [ A ♠ ], [ K ❤ ], [ Q ♣ ], [ Q ♦ ], [ J ❤ ], [ 9 ♣ ], [ 9 ♠ ], [ 8 ♠ ], [ 7 ❤ ], [ 6 ♦ ], [ 6 ♣ ], [ 5 ♠ ], [ 4 ♠ ], [ 3 ♣ ], [ 3 ❤ ]
玩家3 ChatGPT o3 mini [ 大王 ], [ 小王 ], [ 2 ❤ ], [ 2 ♣ ], [ A ❤ ], [ K ♦ ], [ Q ❤ ], [ J ♠ ], [ 10 ❤ ], [ 10 ♦ ], [ 9 ♦ ], [ 8 ♦ ], [ 8 ❤ ], [ 6 ❤ ], [ 6 ♠ ], [ 5 ♣ ], [ 4 ♣ ]
地主牌 [ Q ♠ ], [ 5 ♦ ], [ 4 ❤ ]
首先随机选择一名玩家叫地主,我们将当前的手牌和地主牌发送给AI,让AI来决定是否应该叫地主。
程序随机选择了DeepSeek叫地主,我们将手牌和地主牌发送给DeepSeek
DeepSeek在经过一系列分析后,选择了叫地主,原因是:
地主先出牌,所以DeepSeek先出,我们将DeepSeek当前剩余的手牌与当前的对局情况发送给DeepSeek。
DeepSeek又对牌局进行了分析,最终出牌:
顺子:[7♦]-[8♣]-[9❤]-[10♠]-[J♦]
出牌的依据有三个:
接下来轮到Kimi出牌:
kimi在一顿输出后,竟然选择了单出一张黑桃2。
我仔细分析了kimi的推理过程,发现Kimi已经推理出“无法使用顺子来压制地主的出牌”,所以应当“不要”,而kimi却话锋一转继续选择考虑其它牌型。
于是我跟Kimi重申,应当依据上一位玩家的出牌做判断。
这次Kimi做出了正确的回答,选择“不要” ,并且表达了不甘心,只能寄希望于ChatGPT o3mini。
接下来轮到ChatGPT出牌。
GPT直接选择出【大王】......
GPT明明可以选择[ 9 ♦ ][ 10 ♦ ][ J ♠ ][ Q ❤ ][ K ♦ ]来接过牌,但GPT直接选择了出【大王】......
通过这个例子,可以发现,AI大模型并不是万能的,它们似乎还没有真正的学会如何推理,如何理解人类世界中的复杂规则。
实际上,让AI参与棋牌类游戏并非完全不可行(许多棋牌类AI已超越人类),但这些AI模型往往是针对某一特定游戏设计的。但要让通用大模型来玩棋牌类游戏,似乎还有很大的困难。