菜单

测试与基准测试

相关源文件

本文档介绍了 gpt-engineer 中的测试和基准测试系统。它涵盖了如何运行测试、如何使用基准测试工具评估模型性能以及如何扩展测试和基准测试套件。

有关 gpt-engineer 自身架构的信息,请参阅 系统架构

测试框架

gpt-engineer 使用 pytest 进行单元测试和集成测试。测试组织结构与主代码库相对应。

测试组织

来源

运行测试

运行所有测试

运行特定测试文件

运行带有详细输出的测试

测试类别

测试套件包含多种测试类别

  1. CLI 测试:命令行界面功能的测试(tests/applications/cli/test_main.py
  2. Agent 测试:对 Agent 组件(如 SimpleAgent)的测试(tests/core/default/test_simple_agent.py
  3. 安装测试:用于验证正确安装和基本功能的测试(tests/test_install.py
  4. 学习测试:对学习反馈系统的测试(tests/applications/cli/test_learning.py

用于测试的 Mock AI

The MockAI 类(tests/mock_ai.py)在测试期间提供了 AI 接口的替代方案,允许在不实际调用语言模型 API 的情况下运行测试。它会为特定提示返回预先确定的响应。

来源

基准测试系统

gpt-engineer 中的基准测试系统提供了一种在标准化任务上评估不同 Agent 实现性能的方法。它旨在衡量代码生成的质量、正确性和其他指标。

基准测试架构

来源

基准测试执行流程

来源

可用基准测试

gpt-engineer 目前包含以下基准测试

  1. GPT-Me:一组专门用于测试 gpt-engineer 功能的小型、集中的任务。例如,修改“Hello World”程序。

  2. APPS:基于 APPS 数据集的基准测试,该数据集包含具有输入和预期输出的编程问题。

  3. MBPP:基于 MBPP 数据集的一组基本编程问题,并附带测试用例以验证正确性。

来源

运行基准测试

基准测试系统使用 bench 命令运行。基本用法模式是:

其中

  • path_to_agent 是一个 Python 文件的路径,该文件包含一个名为 default_config_agent 的函数。
  • bench_config 是 TOML 配置文件(默认为 default_bench_config.toml)的路径。

例如

选项包括:

  • --yaml-output:输出 YAML 格式结果的路径。
  • --verbose:为每个单独的任务打印结果。
  • --use-cache:启用 LLM 响应缓存以节省 token(默认:true)。

来源

基准配置

基准测试通过 TOML 文件进行配置。这是一个示例配置:

此配置激活了所有基准测试,并且每个基准测试都有少量测试用例。

来源

解读基准测试结果

当基准测试运行完成后,它会输出性能统计数据。

--- Results ---
Total time: 123.45s
Completely correct tasks: 3/5
Total correct assertions: 8/12
Average success rate: 60.0% on 5 tasks
--- Results ---

关键指标是:

  • 完全正确的任务:所有断言都通过的任务数量。
  • 总正确断言数:通过的单个断言的总数。
  • 平均成功率:所有任务断言通过的平均百分比。

来源

基准测试实现细节

任务执行

每个基准测试任务都经过以下过程:

  1. Agent 接收任务的提示和用于改进的初始代码。
  2. 使用任务的断言来评估改进后的代码。
  3. 收集和汇总结果。

断言因基准测试类型而异:

  • GPT-Me:直接字符串比较输出或文件内容。
  • APPS:使用特定输入运行代码并比较输出。
  • MBPP:运行代码并使用测试用例检查功能。

来源

创建自定义基准测试

要创建一个新的基准测试,请执行以下操作:

  1. gpt_engineer/benchmark/benchmarks/ 中创建一个新模块。
  2. 定义一个返回 Benchmark 对象的 load 函数。
  3. benchmarks/load.py 中将您的基准测试添加到 BENCHMARKS 字典中。
  4. 在您的基准测试配置文件中添加一个配置部分。

每个任务应包含:

  • 一个唯一的名称。
  • 初始代码(如果有)。
  • 运行代码的命令。
  • Agent 的提示。
  • 用于验证结果的断言。

来源

与 CLI 的集成

基准测试系统独立于主 CLI 应用程序,但与之互补。主 CLI 专注于交互式生成和改进代码,而基准测试系统则用于评估和比较 Agent 实现。

对于不进行正式基准测试的单个项目测试,您可以使用 CLI 的内置执行功能,并带有 --no-execution 标志在需要时跳过执行。

来源

旧的基准测试工具

gpt-engineer 还包含一些旧的基准测试脚本,以供参考。

  • scripts/legacy_benchmark.py:一个用于运行基准测试的旧系统。
  • scripts/clean_benchmarks.py:一个用于清理基准测试目录的实用程序。
  • scripts/print_chat.py:一个用于可视化对话日志的实用程序。

这些不是主要基准测试系统的一部分,但在特定场景下可能有用。

来源