科学工具
科学工具让世界更美好
让世界更美好

AI驱动的“谁是卧底”社交推理游戏 LieGraph

LieGraph 是一个基于 LangGraph 框架构建的、由 AI 代理驱动的“谁是卧底”社交推理游戏,让智能 AI 玩家能够进行推理、制定策略,以自然语言进行互动,最终找出潜藏的卧底。LieGraph 由自主 AI 代理,具备独特的个性和战略思维能力;拥有动态身份推断系统,持续分析对话历史和投票模式以推断自身及他人的身份;由成熟的概率信念系统,用于跟踪自我信念置信度并构建玩家间的怀疑矩阵;由高级战略推理能力,支持欺骗检测、联盟形成和长期规划,所有关键的发言和投票决策均通过 LLM 驱动的结构化工具实现。LieGraph 集成了度量与评估机制,可自动记录胜负平衡、身份识别准确性和发言多样性等质量指标,生成 JSON 报告,支持提示工程评估和历史分析,整个游戏流程通过 LangGraph 的 StateGraph 进行精心编排,提供从角色分配到最终胜负判定的完整逻辑。

自主决策的AI玩家

每个AI代理都有独特性格和策略思维,不用人工干预就能参与游戏。它们会根据局势调整发言和投票逻辑,有的谨慎分析,有的主动引导,模拟真实玩家的互动状态。

动态身份推理

AI会持续分析对话历史和投票模式,不仅推断他人身份,还会验证自己的角色定位。比如平民会通过发言一致性排查卧底,卧底则会观察他人描述寻找破绽,调整伪装策略。

自然语言交互

所有沟通都通过自然语言完成,AI的发言符合角色设定,不会出现机械感十足的表达。卧底会刻意模糊描述,平民则会精准传递信息,整个对话过程贴近真人游戏场景。

概率信念系统

AI会建立“怀疑矩阵”,用概率量化对其他玩家的信任度,同时记录自身角色的置信度。每一轮发言和投票后,这些数据都会更新,成为后续决策的依据。

内置指标与分析

游戏过程中会自动记录关键数据,包括平民与卧底的胜率平衡、身份识别准确率、发言多样性等,结束后生成JSON报告,方便后续优化prompt或调整游戏规则。

LieGraph 快速上手

系统环境要求

• Python 3.12+

• Node.js 16+

• 推荐使用uv管理Python包

环境配置

1、在项目根目录创建.env文件,配置LLM提供商信息:

• OpenAI示例:

LLM_PROVIDER=openai
OPENAI_API_KEY="你的OpenAI密钥"
OPENAI_MODEL="gpt-4o-mini"

• DeepSeek示例:

LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY="你的DeepSeek密钥"
DEEPSEEK_MODEL="deepseek-chat"

安装启动 LieGraph

1、克隆仓库并进入目录:

git clone https://github.com/leslieo2/LieGraph.git
cd LieGraph

2、安装依赖:

# 如需安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync

# 安装前端依赖
cd ui-web/frontend
npm install

3、启动服务:

# 启动后端(项目根目录)
langgraph dev --config langgraph.json --port 8124 --allow-blocking

# 启动前端(ui-web/frontend目录)
npm start

4、打开 http://localhost:3000 就能开始游戏。

LieGraph 游戏运行机制

游戏全程由LangGraph的StateGraph管理生命周期:

1、准备阶段:主持人代理分配角色(平民/卧底)和对应词语

2、发言阶段:玩家轮流用LLM生成符合自身角色的描述

3、身份推理:AI分析对话中的矛盾点、模糊表述等线索

4、投票阶段:所有玩家同时投票,选出怀疑的卧底

5、结果判定:得票最多的玩家被淘汰

6、胜负条件:卧底被淘汰则平民获胜;卧底数量超过平民则卧底获胜

LieGraph 自定义配置

编辑config.yaml文件就能调整游戏参数:

game:
  player_count: 6  # 玩家数量
  vocabulary:
    - ["Shakespeare", "Dumas"]  # 英文词语对
    - ["太阳", "月亮"]  # 中文词语对
  player_names:
    - "Alice"
    - "Bob"  # 玩家名称,可添加更多

数据指标与评估

游戏内置指标收集器(src/game/metrics.py),记录的核心数据包括:

• 胜率平衡:平民与卧底的获胜比例,目标保持50/50的公平性

• 识别准确率:追踪玩家对自身及他人角色的判断信心变化

• 发言多样性:统计每轮发言的词汇丰富度,避免重复表述

数据会自动保存: • 单局游戏总结:logs/metrics/{game_id}.json

• 累计统计+质量评分:logs/metrics/overall.json

也能通过代码调用指标:

from src.game.dependencies import build_dependencies
deps = build_dependencies()
collector = deps.metrics
audit = collector.get_overall_metrics()
score = collector.compute_quality_score()  # 确定性评分
# 如需LLM辅助评分:collector.compute_quality_score(method="llm", llm=client)