You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.4 KiB

AgentScope 三国狼人杀案例

本目录包含第六章 AgentScope 框架的完整实战案例,展示了如何使用 AgentScope 构建一个融合中国古典文化元素的多智能体在线游戏。

📁 文件说明

  • main_cn.py - 主要游戏逻辑和控制器
  • prompt_cn.py - 中文提示词管理
  • game_roles.py - 游戏角色定义和配置
  • structured_output_cn.py - 结构化输出模型定义
  • utils_cn.py - 游戏工具函数和辅助方法
  • README.md - 本说明文档

🎮 案例特点

  • 消息驱动架构:展示 AgentScope 的核心消息传递机制
  • 并发协作:演示多智能体同时在线的实时交互
  • 角色扮演:每个智能体具备双重身份(游戏角色+三国人物)
  • 结构化输出:通过 Pydantic 模型约束智能体行为
  • 容错机制:单个智能体异常不影响整体游戏流程

🛠️ 环境准备

1. 安装依赖

pip install agentscope
pip install dashscope
pip install pydantic

2. 配置环境变量

设置阿里云 DashScope API Key

# Linux/Mac
export DASHSCOPE_API_KEY="your-api-key-here"

# Windows PowerShell
$env:DASHSCOPE_API_KEY="your-api-key-here"

# Windows CMD
set DASHSCOPE_API_KEY=your-api-key-here

获取 API Keyhttps://dashscope.console.aliyun.com/apiKey

3. 运行游戏

python main_cn.py

🎭 游戏角色说明

游戏角色

  • 狼人:夜晚击杀好人,白天隐藏身份
  • 预言家:每晚查验一名玩家身份
  • 女巫:拥有解药和毒药各一瓶
  • 猎人:被投票出局时可开枪带走一名玩家
  • 村民:通过推理和投票找出狼人

三国人物

  • 刘备:仁德宽厚,善于团结众人
  • 关羽:忠义刚烈,言辞直接
  • 张飞:性格豪爽,容易冲动
  • 诸葛亮:智慧超群,分析透彻
  • 曹操:雄才大略,善于权谋
  • 司马懿:深谋远虑,城府极深

🏗️ 架构设计

分层架构

游戏控制层 (ThreeKingdomsWerewolfGame)
    ├── 游戏状态管理
    ├── 流程控制
    └── 胜负判定

智能体交互层 (MsgHub)
    ├── 消息路由
    ├── 并发处理
    └── 状态同步

角色建模层 (DialogAgent)
    ├── 角色提示词
    ├── 结构化输出
    └── 行为约束

核心组件

1. 消息中心 (MsgHub)

async with MsgHub(
    participants=self.werewolves,
    enable_auto_broadcast=True
) as hub:
    # 狼人夜晚讨论
    for wolf in self.werewolves:
        await wolf(structured_model=DiscussionModelCN)

2. 结构化输出

class VoteModelCN(BaseModel):
    vote: str = Field(description="投票目标玩家姓名")
    reason: str = Field(description="投票理由")
    confidence: int = Field(ge=1, le=10, description="信心程度")

3. 并发管道

vote_msgs = await fanout_pipeline(
    self.alive_players,
    msg=vote_announcement,
    structured_model=get_vote_model_cn(self.alive_players),
    enable_gather=False,
)

🎯 游戏流程

夜晚阶段

  1. 狼人讨论:狼人通过 MsgHub 协商击杀目标
  2. 预言家查验:预言家选择查验对象
  3. 女巫行动:女巫决定是否使用解药/毒药

白天阶段

  1. 死亡公布:公布夜晚死亡玩家
  2. 自由讨论:所有存活玩家参与讨论
  3. 投票淘汰:投票选择淘汰对象
  4. 猎人技能:被淘汰的猎人可开枪

🔧 自定义配置

修改游戏人数

# 在 main_cn.py 中修改
await game.setup_game(player_count=8)  # 支持 6-12 人

添加新角色

# 在 game_roles.py 中添加
ROLES["守护者"] = {
    "description": "守护者",
    "ability": "每晚可以守护一名玩家",
    "team": "好人阵营"
}

自定义提示词

# 在 prompt_cn.py 中修改
def get_role_prompt(role: str, character: str) -> str:
    # 自定义角色提示词逻辑
    pass

🐛 常见问题

Q: 游戏无法启动?

A: 检查以下几点:

  • 确认 DASHSCOPE_API_KEY 环境变量已设置
  • 验证 API Key 是否有效
  • 检查网络连接是否正常

Q: 智能体输出格式错误?

A: 可能原因:

  • 模型理解能力限制
  • 提示词设计不够清晰
  • 结构化输出约束过于复杂

Q: 游戏流程卡住?

A: 建议:

  • 检查 MsgHub 的消息传递
  • 验证并发管道的执行状态
  • 查看控制台错误日志

📚 技术亮点

1. 消息驱动架构

  • 智能体间完全通过消息交互
  • 支持异步并发处理
  • 天然的分布式能力

2. 结构化输出约束

  • 游戏规则转化为代码约束
  • 提升系统稳定性和可预测性
  • 便于调试和监控

3. 双重角色建模

  • 游戏角色 + 三国人物的创新设计
  • 展现不同人格的策略差异
  • 增强游戏的趣味性和真实感

🚀 扩展方向

  • 增加游戏模式:支持更多狼人杀变体
  • 优化 AI 策略:提升智能体的游戏水平
  • 可视化界面:开发 Web 或桌面客户端
  • 实时观战:支持人类玩家观战和互动
  • 数据分析:统计游戏数据和智能体表现

🤝 贡献指南

欢迎提交 Issue 和 Pull Request

  • 报告游戏 Bug 或异常
  • 提出新功能建议
  • 优化代码实现
  • 完善文档说明

本案例是 Hello-Agents 教程第六章的核心实战项目,展示了 AgentScope 框架在构建复杂多智能体应用方面的强大能力。