我们如何对深度代理进行基准测试
深度代理的开发因评估困难而颇具挑战。我们最近改进了评估框架,利用 Harbor 在编码、对话和检索三大领域进行端到端评估,并分享了我们的实践方法。
代理设计之所以困难,很大程度上是因为代理的评估本身就很棘手。在开发深度代理(我们的开源、模型无关的代理框架)时,我们不断面临各种决策:如何设计提示、包含哪些工具、加入哪些中间件等。在迭代过程中,我们需要一个稳健的评估集来衡量这些决策的效果。最近,我们改进了评估框架,本文将分享我们对深度代理评估的思考。
我们使用 Harbor 进行端到端评估。Harbor 是一个流行的开源框架,用于运行代理评估,以支持 Terminal Bench(一个领先的编码基准测试)而闻名。要使用 Harbor,你需要提供三样东西:代理(我们评估的是深度代理)、数据集(见下文)以及沙箱(我们在本地和 LangSmith Sandboxes 中运行 Harbor 评估)。每个数据集包含多个任务,每个任务由环境(Dockerfile 或 Docker Compose YAML)、指令(Markdown)和评估脚本(test.sh)组成。与简单的 LLM 评估相比,这里有两个主要区别:代理运行的环境非常重要,因此需要作为任务的一部分明确指定;评估代理时使用脚本,因为代理通常会产生文件或修改状态,仅查看最终响应是不够的。
目前,我们运行三个基准测试,每个覆盖一种不同的代理工作类型。深度代理是一个通用框架,因此我们需要在多个不同领域评估其能力。Harbor-Index 包含 82 个任务,从超过 6000 个候选任务中蒸馏而来,涵盖软件工程、搜索、数据分析和长期工具使用。τ³-bench 是一个 30 任务的子集,涵盖多轮对话,用户是模拟的,但评分检查真实结果。ContextBench 包含 30 个校准任务,每个任务将其完整语料库包含在沙箱内,代理需要找到并整合答案。这些只是开始,未来我们还会扩展任务集。
我们在实践中遵循几个原则:每个任务运行多次以获得稳健估计;保留一个轻量级基准测试用于快速迭代,其速度约为完整版的 8 倍,成本为 1/6;同时保留一个能力套件,包含快速、确定性的单元测试,针对特定框架行为(如工具选择、内存或文件操作)。这些基准测试让我们在迭代时充满信心。例如,在准备深度代理 0.7 版本时,我们利用这些基准测试来决定是否移除待办事项中间件以及精简系统提示。结果证明,这些基准测试帮助我们做出了正确的方向性决策。