跳到主要内容

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

· 7 min read
Adam Fourney
Qingyun Wu

AutoGenBench

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

TL;DR

今天我们发布了AutoGenBench - 一个用于在已建立的大语言模型(LLM)和代理基准上评估AutoGen代理和工作流程的工具。

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围绕三个核心设计原则构建。了解这些原则将帮助您理解该工具、其操作及其输出。这三个原则是:

  • 重复性: 大型语言模型(LLMs)具有随机性,在很多情况下,它们编写的代码也具有随机性。例如,一个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,AutoGenBench就可以从PyPI中作为独立工具进行安装。使用pip,安装可以通过以下方式完成:

pip install autogenbench

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

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

export OAI_CONFIG_LIST=$(cat ./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

CAUTION: 'autogenbench tabulate' is in early preview.
Please do not cite these values in academic work without first inspecting and verifying the results in the logs yourself.

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

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

  • autogenbench --help
  • autogenbench clone --help
  • autogenbench run --help
  • autogenbench tabulate --help

路线图

在我们宣布AutoGenBench的同时,我们注意到它本身就是一个不断发展的项目。在接下来的几周和几个月里,我们希望:

  • 在现有基础上,增加更多的基准测试
  • 大幅改进日志记录和遥测
  • 引入新的核心指标,包括总成本、任务完成时间、对话轮次等。
  • 提供与 AgentEval 和 AutoGen Studio 的更紧密集成

要查看我们在此项目上的最新工作项,请参阅 AutoGenBench Work Items

参与邀请

最后,我们想以开放呼吁贡献的方式结束这篇博客文章。AutoGenBench 还处于初期阶段,有很大的改进空间。新的基准测试不断发布,需要不断添加。每个人可能都有自己最关心的优化指标,这些指标应该被纳入。为此,我们欢迎对 AutoGen 项目的这个部分做出任何贡献。如果你对贡献感兴趣,请查看贡献者指南并加入我们在#autogenbench频道的Discord讨论!