一个基于大语言模型的多智能体狼人杀游戏模拟系统。通过配置不同的AI模型(如GPT-4、Claude、Gemini等)作为玩家,实现完整的狼人杀游戏流程,支持6-12人局,包含多种角色和规则配置。
- 多种角色支持:狼人、村民、预言家、女巫、猎人、白痴、守卫、骑士等
- 灵活人数配置:支持6-12人局,每种人数提供多种预设配置
- 完整游戏流程:夜晚行动、白天讨论、投票处决、遗言发表
- 平票处理:平票时进入补充发言阶段并重新投票
- MVP/SVP评选:每局结束后评选胜方MVP和败方SVP
- 多模型支持:GPT-4、Claude、Gemini、DeepSeek、Qwen、Grok、Llama、Kimi等
- 角色认知:AI清楚自己的角色身份和阵营目标
- 记忆系统:AI会记录游戏历史,进行推理分析
- 智能投票:支持弃票,API错误时自动处理
- 胜率统计:追踪每个AI模型扮演不同角色的胜率
- 投票分析:记录投票准确率、无效投票率
- 游戏记录:完整保存游戏过程,支持复盘分析
- Python 3.8+
- OpenAI API兼容的接口(支持voapi等代理服务)
git clone https://github.com/hikariming/AIWolfGame.git
cd AIWolfGamepip install -r requirements.txt复制示例配置文件:
cp config/ai_config.example.json config/ai_config.json
cp config/role_config.example.json config/role_config.json编辑 config/ai_config.json,配置你的API密钥:
{
"evaluation_settings": {
"models_to_evaluate": ["GPT4O", "CLAUDE", "DEEPSEEK"],
"export_format": ["json"]
},
"ai_players": {
"GPT4O": {
"baseurl": "https://your-api-endpoint.com/v1",
"api_key": "your-api-key-here",
"model": "gpt-4o-2024-11-20",
"retry_attempts": 3,
"timeout": 30
}
}
}python main.py --rounds 1 --delay 0.5系统会根据配置的模型数量自动推荐可用的游戏人数。
# 运行9人局
python main.py --preset 9 --rounds 1 --delay 0.5
# 运行12人局
python main.py --preset 12 --rounds 1 --delay 0.5python main.py --preset 8 --rounds 1 --debug| 参数 | 说明 | 默认值 | 示例 |
|---|---|---|---|
--preset |
选择人数局(6-12) | 自动询问 | --preset 9 |
--rounds |
运行轮数 | 100 | --rounds 5 |
--delay |
每步延迟(秒) | 1.0 | --delay 0.5 |
--debug |
调试模式 | False | --debug |
--resume |
从中断处继续 | False | --resume |
--role-config |
角色配置文件 | config/role_config.json | --role-config custom.json |
--ai-config |
AI配置文件 | config/ai_config.json | --ai-config custom.json |
支持的模型类型:
| 模型 | 说明 | 推荐模型名 |
|---|---|---|
| GPT4O | OpenAI GPT-4 | gpt-4o-2024-11-20 |
| CLAUDE | Anthropic Claude | claude-3-7-sonnet-20250219 |
| DEEPSEEK | DeepSeek | deepseek-chat |
| GEMINI | Google Gemini | gemini-2.5-pro |
| QWEN | 阿里通义千问 | qwen-max-latest |
| GROK | xAI Grok | grok-3 |
| LLAMA | Meta Llama | llama3-70b-8192 |
| KIMI | Moonshot Kimi | kimi-k2-0711-preview |
- 全网通用标准配置:2狼人、1预言家、1女巫、2平民
- 官方极简变种配置:2狼人、1预言家、3平民
- 官方标准配置(预女猎白板子):3狼人、1预言家、1女巫、1猎人、1白痴、3平民
- 进阶变种配置-守卫局:3狼人、1预言家、1女巫、1守卫、4平民
- 新手入门标准板(预女猎白):4狼人、1预言家、1女巫、1猎人、1白痴、4平民
- 狼王守卫局:3狼人、1狼王、1预言家、1女巫、1猎人、1守卫、4平民
- 石像鬼守墓人局:3狼人、1石像鬼、1预言家、1女巫、1守墓人、5平民
- 白狼王骑士局:3狼人、1白狼王、1预言家、1女巫、1猎人、1骑士、4平民
- 血月使徒猎魔人局:3狼人、1血月使徒、1预言家、1女巫、1猎人、1猎魔人、4平民
| 角色 | 阵营 | 技能 | 说明 |
|---|---|---|---|
| 狼人 | 狼人 | 夜间杀人 | 每晚可以杀死一名玩家 |
| 预言家 | 好人 | 查验身份 | 每晚可以查验一名玩家是否是狼人 |
| 女巫 | 好人 | 解药/毒药 | 可以使用解药救人或毒药杀人,各限一次 |
| 猎人 | 好人 | 开枪 | 死亡时可以开枪带走一名玩家 |
| 白痴 | 好人 | 免疫放逐 | 被投票放逐时不会死亡 |
| 守卫 | 好人 | 守护 | 每晚可以守护一名玩家免受狼人攻击 |
| 骑士 | 好人 | 决斗 | 可以与一名玩家决斗,如果对方是狼人则死亡 |
| 平民 | 好人 | 无 | 通过发言和投票帮助好人获胜 |
-
夜晚阶段
- 狼人讨论并选择击杀目标
- 预言家查验玩家身份
- 女巫选择是否使用解药或毒药
-
白天阶段
- 公布夜间死亡信息
- 存活玩家轮流发言
- 进行投票,得票最多者出局
- 平票时进入补充发言并重新投票
-
游戏结束
- 狼人全部死亡:好人胜利
- 狼人数量 ≥ 好人数量:狼人胜利
评分标准:
- 存活到游戏结束:+10分
- 获胜阵营:+20分
- 投票准确率:最高+10分
- 角色技能使用:+3~5分/次
- 发言活跃度:+1分/次
AIWolfGame/
├── config/ # 配置文件目录
│ ├── ai_config.json # AI模型配置(需自行创建)
│ ├── ai_config.example.json # AI配置示例
│ ├── role_config.json # 角色配置(需自行创建)
│ ├── role_config.example.json # 角色配置示例
│ └── preset_configs.json # 预设游戏配置
├── game/ # 游戏核心逻辑
│ ├── __init__.py
│ ├── game_controller.py # 游戏控制器
│ ├── ai_players.py # AI玩家系统
│ └── roles.py # 角色定义
├── utils/ # 工具函数
│ ├── __init__.py
│ ├── game_utils.py # 游戏工具函数
│ └── logger.py # 日志系统
├── logs/ # 日志目录(自动生成)
├── game_results/ # 游戏结果(自动生成)
├── test_all.py # 测试脚本
├── main.py # 主程序入口
├── requirements.txt # 依赖列表
├── LICENSE # MIT许可证
└── README.md # 项目说明
游戏主控制器,管理游戏流程。
from game.game_controller import GameController
# 创建游戏
config = {
"game_settings": {"total_players": 9, "random_roles": True},
"role_counts": {"werewolf": 3, "seer": 1, "witch": 1, "villager": 4},
"players": {...},
"ai_players": {...}
}
game = GameController(config)
game.run_game()AI玩家基类,提供统一的AI接口。
from game.ai_players import create_ai_agent
from game.roles import Werewolf
# 创建AI代理
role = Werewolf("player1", "小欧")
config = {"api_key": "xxx", "model": "gpt-4", "baseurl": "..."}
agent = create_ai_agent(config, role)
# 讨论
result = agent.discuss(game_state)
# 投票
vote_result = agent.vote(game_state)A: 请确保已安装依赖:pip install -r requirements.txt
A: 这是模型服务暂时不可用,系统会自动处理为弃票。可以尝试更换模型或稍后重试。
A: 在 ai_config.json 的 ai_players 中添加多个模型配置,并在 evaluation_settings.models_to_evaluate 中列出要使用的模型键名。
A: 至少需要配置6个模型才能运行6人局。如果模型数量不足,请添加更多模型配置。
A: 游戏记录保存在 logs/ 目录下,按日期分类。
A: 复制 role_config.example.json 为 role_config.json,修改其中的 role_counts 和 players 配置。
- ✅ 基础游戏功能完成
- ✅ 支持6-12人局
- ✅ 支持多种角色:狼人、预言家、女巫、猎人、白痴、守卫、骑士等
- ✅ 支持12种AI模型
- ✅ MVP/SVP评选系统
- ✅ 平票处理机制
- ✅ 完整的游戏记录和统计
欢迎提交Issue和Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
本项目采用 MIT 许可证开源。
- 感谢所有开源的大语言模型
- 感谢狼人杀游戏社区
- 感谢所有贡献者