中文 | English
一个由大语言模型驱动的AI版德州扑克对战框架
本项目是一个德州扑克AI对战框架,使用大语言模型(LLM)作为AI玩家进行德州扑克游戏对战。框架模拟了完整的德州扑克游戏流程,包括发牌、下注、翻牌、转牌、河牌和摊牌等环节,并支持多个AI玩家同时参与游戏。每个AI玩家由大语言模型驱动,能够根据当前游戏状态做出决策,并在游戏结束后进行反思学习。
- Python 3.10+
- 安装依赖:
pip install -r requirements.txt(主要依赖openai库)
在运行前,需要在main.py中配置大语言模型的API密钥和基础URL。目前支持两种类型的LLM玩家:
- OpenAI兼容接口的模型(如Deepseek、QWen等):
players.append(OpenAiLLMUser(name="玩家名称", model_name="模型名称", api_key='YOUR_API_KEY', base_url="YOUR_BASE_URL"))- Anthropic Claude模型:
players.append(AnthropicLLMUser(name="玩家名称", model_name="模型名称", api_key='YOUR_API_KEY', base_url="YOUR_BASE_URL"))请根据使用的模型类型选择对应的配置方式,并填入相应的API密钥和基础URL。
直接运行main.py文件即可开始游戏:
python main.py可以使用以下命令查看已保存的游戏列表: 直接使用replay_game.py:
python replay_game.py可以通过修改main.py中的参数来调整游戏设置:
start_game(players, hands=10, chips=1000, small_blind=5, big_blind=10)hands: 要进行的手牌数量chips: 初始每位玩家筹码数量small_blind: 小盲注金额big_blind: 大盲注金额
main.py: 主程序入口,用于配置和启动游戏game_controller.py: 游戏控制器,管理多个AI玩家之间的对战poker_engine.py: 德州扑克游戏引擎,实现游戏规则和逻辑ai_player.py: AI玩家接口和实现,包含基于大语言模型的玩家实现engine_info.py: 游戏基础数据结构,如牌、花色、行动类型等game_info.py: 游戏状态信息结构,用于AI决策和游戏记录prompt/: 提示词目录decision_prompt.txt: 用于AI决策的提示词模板reflect_prompt.txt: 用于AI反思的提示词模板reflect_all_prompt.txt: 用于AI对所有玩家进行反思的提示词模板
replay_game.py: 游戏回放工具prompts.py: 提示词管理requirements.txt: 项目依赖
- 初始化游戏,设置盲注和初始筹码
- 为每个玩家发放底牌
- 进行翻牌前下注
- 发放翻牌并进行下注
- 发放转牌并进行下注
- 发放河牌并进行下注
- 进行摊牌并确定赢家
- 分配筹码并记录游戏结果
- AI玩家对本局游戏进行反思
- 开始新一轮游戏
-
边池计算问题: 当前版本在计算赢家筹码时未按照边池进行计算。在poker_engine.py中已有award_pot_new方法实现了边池计算,但当前使用的是简化版的award_pot方法,未考虑边池情况。 -
内容输出不完善: 游戏过程中的信息输出不够完整,部分关键信息可能未显示。
- 支持游戏日志记录和回放
- AI玩家可以对其他玩家进行分析和反思
- 可以自定义不同的大语言模型作为AI玩家
- 支持调整游戏参数,如盲注大小、初始筹码等