LLMs Playing Avalon: Benchmark and Agents
这是 AvalonBench 和 Avalon 智能体 Strategist 的官方代码。对应的论文是 AvalonBench: Evaluating LLMs Playing the Game of Avalon 和 Strategist: Learning Strategic Skills by LLMs via Bi-Level Tree Search。
AvalonBench: Evaluating LLMs Playing the Game of Avalon
基于 AgentBench,我们支持 The Resistance: Avalon 的 Multi-Agent 玩法,这是一款流行的桌游,需要具备演绎推理、协调与合作以及欺骗技巧的能力。
阅读以下说明以了解如何运行 AvalonBench!
Strategist: Learning Strategic Skills by LLMs via Bi-Level Tree Search (ICLR 2025)
在本工作中,我们提出了 Strategist,它利用 LLMs 通过自我改进过程获取玩多人游戏的新技能。我们的方法通过蒙特卡洛树搜索和基于 LLM 的反思进行自对弈模拟来收集高质量反馈,这些反馈随后可用于学习高层战略技能,例如如何评估状态以指导低层执行。
你可以在 这里 学习如何使用 Strategist 在 AvalonBench 上进行游戏,并且可以在 strategist 文件夹中找到 Strategist 的双层树搜索代码/用法。
目录
新闻
- [2025/01] 🎯Strategist 已被 ICLR 2025 接收!
- [2024/08] 🔥使用
avalon-dev-single-discuss配置试用我们的新智能体 Strategist,并在 Strategist: Learning Strategic Skills by LLMs via Bi-Level Tree Search 中查找更多详情! - [2024/07] 我们的新智能体
SearchlightLLMAgentWithDiscussion现已在src/server/tasks/avalon/agents/search_agent.py上可用。学术论文即将发布。 - [2023/11] 🎶AgentBench v0.2 的多 LLM 设置已准备就绪!多智能体子模块的详细信息可在 此处 找到
- [2023/11] ♠️我们添加了一款名为 GOPS(纯策略游戏 [Wiki])的新游戏。有关代码的更多详情,请参阅 此处。
- [2023/10] 🤖我们已根据 AgentBench v0.2 更新了代码。旧版本请访问 此处。
视频演示
GPT-3.5-turbo🤖 在 AvalonBench 中与基于规则的智能体对战
https://github.com/jonathanmli/Avalon-LLM/assets/24936331/e15eadc0-60e6-448d-88a0-854ba35d628c
GPT-4-turbo🤖 在 AvalonBench 中与基于规则的智能体对战
https://github.com/jonathanmli/Avalon-LLM/assets/24936331/23fcb204-7570-4449-8777-b179c25251ad
GPT-3.5-turbos🤖 相互对战
https://github.com/jonathanmli/Avalon-LLM/assets/24936331/9257d081-67ff-43d4-bbcf-b20415b32595
初步结果
LLM 与基线智能体对战
以下是 LLM 与基线智能体对战的结果。

多 LLM 自博弈
我们还让 LLM 相互对战。Evil 对 Good 拥有 8:2 的优势,这与新手人类玩家的统计数据相似!以下是该设置下的一些讨论示例。


入门指南
先决条件
安装依赖项。
conda create -n avalonbench python=3.9
conda activate avalonbench
pip install -r requirements.txt
OpenAI API 密钥
您需要先在 configs/agents/openai-chat 中填写您的 OPENAI API KEY。请将 Bearer <OPENAI_API_KEY> 中的 <OPENAI_API_KEY> 替换为您的密钥。
启动任务服务器和分配器
启动游戏(3 是 worker 的数量)
python -m src.start_task -a --start avalon-dev-single 3
打开一个新的终端 并启动 assigner
python -m src.assigner --config ./configs/assignments/test_avalon.yaml
自定义配置和数据
- 你可以修改文件
configs/tasks/avalon.yaml来配置 agent 列表。配置文件如下所示:
default:
module: "src.server.tasks.avalon.AvalonBench"
parameters:
num_players: 5
discussion: False
avalon-dev-naive:
parameters:
name: "AvalonBench-dev-naive"
data_file: "data/avalon/dev.json"
agent_list: ["naive", "naive", "naive", "naive", "naive"]
avalon-dev-single:
parameters:
name: "AvalonBench-dev-single"
data_file: "data/avalon/dev.json"
agent_list: ["llm", "naive", "naive", "naive", "naive"]
其中 naive 代表 naive bots。Agents 将在数据文件中扮演具有相同索引的角色(见下文)。
Note: There should only be one "llm" in the `agent_list`
- 你还可以在
data/avalon/dev.json中添加数据(注意:目前我们仅支持 5 人游戏设置,其中包括 1 名梅林、2 名忠仆、1 名爪牙和 1 名刺客)。数据项如下所示:
{
"num_players": 5,
"quest_leader": 0,
"role_names": ["Assassin", "Servant", "Servant", "Merlin", "Minion"]
}
其中 quest_leader 是此游戏中初始任务领导者的 ID。你可以通过将 quest_leader 更改为 0 到 4 之间的数字,以及对 role_names 进行排列来更改游戏设置。
朴素实验
您也可以使用以下命令启动一个朴素实验:
python -m src.start_task -a --start avalon-dev-naive 3
其中所有智能体均为朴素机器人。有关朴素策略的详细信息,请参阅论文。
玩转多 LLM
您也可以使用以下命令启动一个 Multi-LLM 实验:
python -m src.start_task -a --start avalon-dev-multi 3
其中所有代理都将是大型语言模型。
与 Strategist 互动
我们的智能体 Strategist 也包含在此仓库中。您可以使用以下命令启动实验:
# Strategist playing against naive baselines
python -m src.start_task -a --start avalon-dev-single-search 1
提示词
所有提示词均维护在 src/server/tasks/avalon/prompt.py 中。你可以在 src/server/tasks/avalon/agents/llm_with_discussion.py 和 src/server/tasks/avalon/wrapper.py 中找到相应的提示词。
使用游戏引擎
我们还在 avalonbench_dev 中为开发者提供了引擎及其使用示例。
您可以通过运行以下命令导入并使用游戏引擎
from engine import AvalonGameEnvironment, AvalonConfig
首先将您的游戏配置输入到 AvalonBasicConfig 中,然后基于该配置创建一个 AvalonGameEnvironment。
有关如何使用游戏引擎的示例,请参阅 avalonbench_dev/avalon/test_engine.py
引用
@inproceedings{
light2025strategist,
title={Strategist: Self-improvement of {LLM} Decision Making via Bi-Level Tree Search},
author={Jonathan Light and Min Cai and Weiqin Chen and Guanzhi Wang and Xiusi Chen and Wei Cheng and Yisong Yue and Ziniu Hu},
booktitle={The Thirteenth International Conference on Learning Representations},
year={2025},
url={https://openreview.net/forum?id=gfI9v7AbFg}
}
@inproceedings{
light2023from,
title={AvalonBench: Evaluating {LLM}s Playing the Game of Avalon},
author={Jonathan Light and Min Cai and Sheng Shen and Ziniu Hu},
booktitle={NeurIPS 2023 Foundation Models for Decision Making Workshop},
year={2023},
url={https://openreview.net/forum?id=ltUrSryS0K}
}