ITADN
jonathanmli/Avalon-LLM
jonathanmli/Avalon-LLM · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

LLMs Playing Avalon: Benchmark and Agents

这是 AvalonBench 和 Avalon 智能体 Strategist 的官方代码。对应的论文是 AvalonBench: Evaluating LLMs Playing the Game of AvalonStrategist: Learning Strategic Skills by LLMs via Bi-Level Tree Search

AvalonBench: Evaluating LLMs Playing the Game of Avalon

AvalonBench arXiv

基于 AgentBench,我们支持 The Resistance: AvalonMulti-Agent 玩法,这是一款流行的桌游,需要具备演绎推理协调与合作以及欺骗技巧的能力。

阅读以下说明以了解如何运行 AvalonBench!

Strategist: Learning Strategic Skills by LLMs via Bi-Level Tree Search (ICLR 2025)

Strategist arXiv

在本工作中,我们提出了 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

自定义配置和数据

  1. 你可以修改文件 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`
  1. 你还可以在 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.pysrc/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}
}

许可证