|
|
# AgentScope 三国狼人杀案例
|
|
|
|
|
|
本目录包含第六章 AgentScope 框架的完整实战案例,展示了如何使用 AgentScope 构建一个融合中国古典文化元素的多智能体在线游戏。
|
|
|
|
|
|
## 📁 文件说明
|
|
|
|
|
|
- `main_cn.py` - 主要游戏逻辑和控制器
|
|
|
- `prompt_cn.py` - 中文提示词管理
|
|
|
- `game_roles.py` - 游戏角色定义和配置
|
|
|
- `structured_output_cn.py` - 结构化输出模型定义
|
|
|
- `utils_cn.py` - 游戏工具函数和辅助方法
|
|
|
- `README.md` - 本说明文档
|
|
|
|
|
|
## 🎮 案例特点
|
|
|
|
|
|
- **消息驱动架构**:展示 AgentScope 的核心消息传递机制
|
|
|
- **并发协作**:演示多智能体同时在线的实时交互
|
|
|
- **角色扮演**:每个智能体具备双重身份(游戏角色+三国人物)
|
|
|
- **结构化输出**:通过 Pydantic 模型约束智能体行为
|
|
|
- **容错机制**:单个智能体异常不影响整体游戏流程
|
|
|
|
|
|
## 🛠️ 环境准备
|
|
|
|
|
|
### 1. 安装依赖
|
|
|
|
|
|
```bash
|
|
|
pip install agentscope
|
|
|
pip install dashscope
|
|
|
pip install pydantic
|
|
|
```
|
|
|
|
|
|
### 2. 配置环境变量
|
|
|
|
|
|
设置阿里云 DashScope API Key:
|
|
|
|
|
|
```bash
|
|
|
# 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 Key:https://dashscope.console.aliyun.com/apiKey
|
|
|
|
|
|
### 3. 运行游戏
|
|
|
|
|
|
```bash
|
|
|
python main_cn.py
|
|
|
```
|
|
|
|
|
|
## 🎭 游戏角色说明
|
|
|
|
|
|
### 游戏角色
|
|
|
- **狼人**:夜晚击杀好人,白天隐藏身份
|
|
|
- **预言家**:每晚查验一名玩家身份
|
|
|
- **女巫**:拥有解药和毒药各一瓶
|
|
|
- **猎人**:被投票出局时可开枪带走一名玩家
|
|
|
- **村民**:通过推理和投票找出狼人
|
|
|
|
|
|
### 三国人物
|
|
|
- **刘备**:仁德宽厚,善于团结众人
|
|
|
- **关羽**:忠义刚烈,言辞直接
|
|
|
- **张飞**:性格豪爽,容易冲动
|
|
|
- **诸葛亮**:智慧超群,分析透彻
|
|
|
- **曹操**:雄才大略,善于权谋
|
|
|
- **司马懿**:深谋远虑,城府极深
|
|
|
|
|
|
## 🏗️ 架构设计
|
|
|
|
|
|
### 分层架构
|
|
|
```
|
|
|
游戏控制层 (ThreeKingdomsWerewolfGame)
|
|
|
├── 游戏状态管理
|
|
|
├── 流程控制
|
|
|
└── 胜负判定
|
|
|
|
|
|
智能体交互层 (MsgHub)
|
|
|
├── 消息路由
|
|
|
├── 并发处理
|
|
|
└── 状态同步
|
|
|
|
|
|
角色建模层 (DialogAgent)
|
|
|
├── 角色提示词
|
|
|
├── 结构化输出
|
|
|
└── 行为约束
|
|
|
```
|
|
|
|
|
|
### 核心组件
|
|
|
|
|
|
**1. 消息中心 (MsgHub)**
|
|
|
```python
|
|
|
async with MsgHub(
|
|
|
participants=self.werewolves,
|
|
|
enable_auto_broadcast=True
|
|
|
) as hub:
|
|
|
# 狼人夜晚讨论
|
|
|
for wolf in self.werewolves:
|
|
|
await wolf(structured_model=DiscussionModelCN)
|
|
|
```
|
|
|
|
|
|
**2. 结构化输出**
|
|
|
```python
|
|
|
class VoteModelCN(BaseModel):
|
|
|
vote: str = Field(description="投票目标玩家姓名")
|
|
|
reason: str = Field(description="投票理由")
|
|
|
confidence: int = Field(ge=1, le=10, description="信心程度")
|
|
|
```
|
|
|
|
|
|
**3. 并发管道**
|
|
|
```python
|
|
|
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. **猎人技能**:被淘汰的猎人可开枪
|
|
|
|
|
|
## 🔧 自定义配置
|
|
|
|
|
|
### 修改游戏人数
|
|
|
```python
|
|
|
# 在 main_cn.py 中修改
|
|
|
await game.setup_game(player_count=8) # 支持 6-12 人
|
|
|
```
|
|
|
|
|
|
### 添加新角色
|
|
|
```python
|
|
|
# 在 game_roles.py 中添加
|
|
|
ROLES["守护者"] = {
|
|
|
"description": "守护者",
|
|
|
"ability": "每晚可以守护一名玩家",
|
|
|
"team": "好人阵营"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### 自定义提示词
|
|
|
```python
|
|
|
# 在 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 框架在构建复杂多智能体应用方面的强大能力。* |