Skip to main content

AutoGenBench -- 用于测量和评估 AutoGen 代理的工具

· 11 min read
Adam Fourney
Qingyun Wu

AutoGenBench

AutoGenBench 是一个独立的工具,用于评估 AutoGen 代理和工作流在常见基准测试上的表现。

TL;DR

今天我们发布了 AutoGenBench - 一个用于评估 AutoGen 代理和工作流在已建立的 LLM 和代理基准测试上的工具。

AutoGenBench 是一个独立的命令行工具,可以从 PyPI 安装,它负责下载、配置、运行和报告支持的基准测试。AutoGenBench 在与 Docker 一起运行时效果最佳,因为它使用 Docker 来隔离各个测试。

快速入门

在 bash 终端中运行以下命令,快速开始。

注意:根据需要,您可能需要调整 OAI_CONFIG_LIST 的路径。

export OAI_CONFIG_LIST=$(cat ./OAI_CONFIG_LIST)
pip install autogenbench
autogenbench clone HumanEval
cd HumanEval
cat README.md
autogenbench run --subsample 0.1 --repeat 3 Tasks/human_eval_two_agents.jsonl
autogenbench tabulate Results/human_eval_two_agents

简介

测量和评估是每个重要的 AI 或 ML 研究项目的核心组成部分。AutoGen 也不例外。为此,今天我们发布了 AutoGenBench,一个独立的命令行工具,我们一直在使用它来指导 AutoGen 的开发。方便地,AutoGenBench 负责:下载、配置、运行和报告代理在各种公共基准测试数据集上的结果。除了报告总体数据外,每次 AutoGenBench 运行还会生成一套全面的日志和遥测数据,可用于调试、性能分析、计算自定义指标,并作为 AgentEval 的输入。在本博文的剩余部分,我们将概述 AutoGenBench 的核心设计原则(这对于理解其操作非常重要);介绍安装和运行 AutoGenBench 的指南;概述评估的路线图;最后呼吁贡献者的加入。

设计原则

AutoGenBench 的设计围绕着三个核心设计原则。了解这些原则将帮助您理解该工具、其操作和输出。这三个原则是:

  • 重复性: 语言模型是随机的,而且在很多情况下,它们编写的代码也是随机的,用来解决问题。例如,一个Python脚本可能会调用外部搜索引擎,而结果可能会因每次运行而异。这可能导致代理性能的差异。重复性是衡量和理解这种差异的关键。为此,AutoGenBench从头开始构建,理解任务可能会运行多次,并且我们通常希望衡量方差。

  • 隔离性: 代理与其所处的环境以微妙和明显的方式进行交互。例如,代理可能会安装一个Python库或将文件写入磁盘。这可能导致顺序效应,影响未来的测量结果。例如,考虑在一个共同的基准测试中比较两个代理。一个代理可能看起来比另一个代理更高效,仅仅是因为它是第二个运行的,并且受益于第一个代理在安装和调试必要的Python库方面所做的工作。为了解决这个问题,AutoGenBench将每个任务隔离在自己的Docker容器中。这确保所有运行都从相同的初始条件开始。(从一般角度来看,Docker也是运行代理生成的代码的一种更安全的方式。)

  • 仪器化: 虽然顶级指标非常适合比较代理或模型,但我们通常希望获得关于代理性能如何、它们在哪里卡住以及如何改进的更多信息。我们可能还会想到新的研究问题,需要计算一组不同的指标。为此,AutoGenBench被设计为记录所有内容,并从这些日志中计算指标。这确保我们始终可以回到日志中回答关于发生了什么事情的问题,运行性能分析软件,或将日志输入到像AgentEval这样的工具中。

安装和运行AutoGenBench

如上所述,隔离性是一个关键的设计原则,因此AutoGenBench必须在支持Docker的环境中运行(桌面版或Engine)。它无法在GitHub codespaces中运行,除非您选择原生执行(这是强烈不推荐的)。要安装Docker Desktop,请参阅https://www.docker.com/products/docker-desktop/。 安装了Docker之后,可以从PyPI安装AutoGenBench作为一个独立的工具。使用pip,可以按照以下方式进行安装:

pip install autogenbench

安装完成后,您必须配置您的API密钥。与其他AutoGen应用程序一样,AutoGenBench将在当前工作目录中的OAI_CONFIG_LIST文件或OAI_CONFIG_LIST环境变量中查找OpenAI密钥。可以使用命令行参数覆盖此行为。

如果您将运行多个基准测试,通常最方便的方法是利用环境变量选项。您可以通过执行以下命令将您的密钥加载到环境变量中:

将当前目录下的 OAI_CONFIG_LIST 文件的内容赋值给环境变量 OAI_CONFIG_LIST。

一个典型的会话

一旦安装了AutoGenBench和必要的密钥,一个典型的会话将如下所示:

autogenbench clone HumanEval
cd HumanEval
cat README.md
autogenbench run --subsample 0.1 --repeat 3 Tasks/human_eval_two_agents.jsonl
autogenbench tabulate results/human_eval_two_agents

其中:

  • autogenbench clone HumanEval 下载并展开HumanEval基准场景。
  • cd HumanEval; cat README.md 导航到基准目录,并打印README(您应该始终阅读!)
  • autogenbench run --subsample 0.1 --repeat 3 Tasks/human_eval_two_agents.jsonl 运行在Tasks/human_eval_two_agents.jsonl中定义的任务的10%子样本。每个任务运行3次。
  • autogenbench tabulate results/human_eval_two_agents 对运行结果进行表格化处理。

运行上述tabulate命令后,您应该会看到类似以下的输出:

                 Trial 0    Trial 1    Trial 2
Task Id Success Success Success
------------- --------- --------- ---------
HumanEval_107 False True True
HumanEval_22 True True True
HumanEval_43 True True True
HumanEval_88 True True True
HumanEval_14 True True True
HumanEval_157 True True True
HumanEval_141 True True True
HumanEval_57 True True True
HumanEval_154 True True True
HumanEval_153 True True True
HumanEval_93 False True False
HumanEval_137 True True True
HumanEval_143 True True True
HumanEval_13 True True True
HumanEval_49 True True True
HumanEval_95 True True True
------------- --------- --------- ---------
Successes 14 16 15
Failures 2 0 1
Missing 0 0 0
Total 16 16 16

注意:'autogenbench tabulate'处于早期预览阶段。
在未经检查和验证日志结果之前,请不要在学术工作中引用这些值。

从这个输出中,我们可以看到每个任务的三次独立重复的结果,以及每次运行的最终汇总统计数据。在这种情况下,结果是通过GPT-4生成的(如提供的OAI_CONFIG_LIST中定义的),并使用了TwoAgents模板。重要的是要记住,AutoGenBench评估的是_特定的_端到端代理配置(而不是对模型或认知框架进行更一般的评估)。

最后,完整的执行跟踪和日志可以在Results文件夹中找到。有关命令行选项和输出格式的更多详细信息,请参阅AutoGenBench README。每个命令还通过以下方式提供了广泛的内联帮助:

路线图

虽然我们宣布了 AutoGenBench,但它仍然是一个不断发展的项目。在接下来的几周和几个月里,我们希望能够:

  • 添加许多额外的基准测试,超出目前已发布的基准测试
  • 大幅改进日志记录和遥测功能
  • 引入新的核心指标,包括总成本、任务完成时间、对话轮数等
  • 与 AgentEval 和 AutoGen Studio 实现更紧密的集成

要获取我们在这个项目上的最新工作进展,请参阅AutoGenBench 工作项

参与呼吁

最后,我们想以一个开放的参与呼吁结束这篇博文。AutoGenBench 仍处于初期阶段,有很大的改进空间。新的基准测试不断发布,需要添加到 AutoGenBench 中。每个人可能都有自己关心的最重要的优化指标,这些指标应该被纳入。为此,我们欢迎任何形式的贡献。如果您对贡献感兴趣,请参阅贡献者指南,并加入我们的Discord讨论,在#autogenbench频道中与我们交流!