ChatArena - LLMs 之间的通信和协作

274 篇文章 44 订阅
94 篇文章 0 订阅
ChatArena是一个Python库,专注于促进多个大型语言模型(LLMs)之间的交流与合作。它提供了语言游戏环境框架、多LLM交互基础设施和用户友好的Web及CLI界面。快速开始包括安装、在线体验和本地运行演示。该库支持创建自定义环境和使用LLM作为游戏环境的控制器。
摘要由CSDN通过智能技术生成


一、关于 ChatArena

Multi-Agent Language Game Environments for LLMs


ChatArena是一个Python库,旨在促进多个大型语言模型(LLMs)之间的通信和协作。它提供了以下功能:

  • Language Game Environments: 它提供了一个创建多代理语言游戏环境的框架,以及一组通用的语言驱动环境。
  • Infrastructure for Multi-LLM Interaction: 它允许您快速创建多个LLM支持的播放器代理,并实现它们之间的无缝通信。
  • User-friendly Interfaces: 它同时提供Web浏览器UI和命令行界面(CLI),以开发(prompt 工程师)您的LLM播放器,从而在环境中取得成功。

在这里插入图片描述


二、快速跑通

在线体验:https://chatarena-chatarena-demo.hf.space/


1、安装

Requirements:

  • Python >= 3. 7
  • OpenAI API key (optional, for using GPT-3.5-turbo or GPT-4 as an LLM agent)

使用 pip 安装

pip install chatarena

从源码安装

git clone https://github.com/chatarena/chatarena
cd chatarena
pip install .

使用 GPT-3 作为 LLM agent, 设置你的 OpenAI API key:

export OPENAI_API_KEY="your_api_key_here"

2、本地运行Demo

查看 ChatArena 最快的方式是 通过演示Web UI。

要在本地机器上启动演示,首先需要git克隆存储库并从源代码进行安装(请参阅上面的说明)。

然后在存储库的根目录中运行以下命令:

gradio app.py

这将为ChatArena启动一个演示服务器,您可以访问:http://127.0.0.1:7860/


三、基本使用


1、核心概念

  • Player 玩家
    玩家是可以在游戏环境中与其他玩家进行交互的代理。一个 player 可以是一个人,也可以是一个大语言模型 (LLM). 玩家是由其名称、后端和角色来定义的。
    • Backend: backend 是一个Python类,用于定义玩家如何与其他玩家交互。 后端可以是一个人、一个 LLM或它们的组合。后端由其名称、类型和参数定义。
  • Environment 环境
    环境是一个定义游戏规则的Python类。环境是由其名称、类型和参数定义的。
    • Moderator: moderator 是一个Python类,它定义了游戏的玩法。moderator 由其名称、类型和参数定义。
  • Arena: 竞技场
    :arena 是一个Python类,它定义了整个游戏。竞技场是由其名称、类型和参数定义的。

Step 1: 定义 LLM Backend 下的多玩家

from chatarena.agent import Player
from chatarena.backends import OpenAIChat

# Describe the environment (which is shared by all players)
environment_description = "It is in a university classroom ..."

# A "Professor" player
player1 = Player(name="Professor", backend=OpenAIChat(),
                 role_desc="You are a professor in ...",
                 global_prompt=environment_description)

# A "Student" player
player2 = Player(name="Student", backend=OpenAIChat(),
                 role_desc="You are a student who is interested in ...",
                 global_prompt=environment_description)

# A "Teaching Assistant" player
player3 = Player(name="Teaching assistant", backend=OpenAIChat(),
                 role_desc="You are a teaching assistant of module ...",
                 global_prompt=environment_description)

Step 2: 创建一个 Language Game 环境

你也可以创建一个语言模型驱动的环境,并将它添加到 ChatArena:

from chatarena.environments.conversation import Conversation

env = Conversation(player_names=[p.name for p in [player1, player2, player3]])

Step 3: 使用 Arena 运行 Language Game

Arena 是一个工具类,来帮助你运行 language games.

from chatarena.arena import Arena

arena = Arena(players=[player1, player2, player3],
              environment=env, global_prompt=environment_description)
# Run the game for 10 steps
arena.run(num_steps=10)

# Alternatively, you can run your own main loop
for _ in range(10):
    arena.step()
    # Your code goes here ...

您可以轻松地将游戏历史记录保存到文件中

arena.save_history(path=...)

并将您的游戏配置保存到文件:

arena.save_config(path=...)

其他工具

从配置文件加载 Arena (在这个repo 我们使用 examples/nlp-classroom-3players.json 作为示例)

arena = Arena.from_config("examples/nlp-classroom-3players.json")
arena.run(num_steps=10)

在交互式 CLI 界面中运行游戏:

arena.launch_cli()

四、高级用法

1、ModeratedConversation: a LLM-driven Environment

我们支持一个更先进的环境,称为 ModeratedConversation ,它允许您使用LLM 来控制游戏动态。

moderator 是一个特殊的玩家,控制游戏状态的转换,并决定游戏何时结束。

例如,您可以定义一个moderator 来跟踪棋盘游戏的棋盘状态,并在玩家获胜时结束游戏。

你可以试试我们的 Tic-tac-toe 和 Rock-paper-scissors 游戏,了解它的工作原理:

# Tic-tac-toe example
Arena.from_config("examples/tic-tac-toe.json").launch_cli()

# Rock-paper-scissors example
Arena.from_config("examples/rock-paper-scissors.json").launch_cli()

2、创建自定义环境

你可以通过扩展 Environment 类,来自定义你的环境;以下是通用步骤:

  1. 继承自基础类,创建类,并设置 type_name, 然后将类添加到 ALL_ENVIRONMENTS
  2. 通过定义 __init__ 方法,初始化类 ( 它的参数将定义相应的配置 ) 和初始化类属性
  3. step 方法中,实现 game 机制;
  4. 通过实现以下方法来处理游戏状态和奖励 reset, get_observation, is_terminal, 和 get_rewards
  5. 使用CLI或Web UI为玩家开发角色描述提示(必要时还提供全局提示),并将其保存到配置文件中。

我们提供 详细教程 演示如何定义自定义环境,使用 Chameleon环境作为示例。

如果要将现有库的环境移植到 ChatArena, 查看 PettingzooChess environment 作为示例.



2023-04-06

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值