AutoGenBench 是一个独立工具,用于在常见基准上评估 AutoGen 代理和工作流程。
TL;DR
今天我们发布了AutoGenBench - 一个用于在已建立的大语言模型(LLM)和代理基准上评估AutoGen代理和工作流程的工具。
AutoGenBench 是一个独立的命令行工具,可以从 PyPI 安装,它负责下载、配置、运行和报告支持的基准测试。AutoGenBench 在与 Docker 一起运行时效果最佳,因为它使用 Docker 来隔离测试之间的相互影响。
- 查看AutoGenBench README以获取有关安装和运行基准测试的信息。
- 请参阅 AutoGenBench 贡献指南 获取有关开发或贡献基准数据集的信息。
快速开始
通过在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讨论!