提供LLM模型评估的开源框架和基准测试集合。对AI开发者有很高价值,可用于量化模型性能和对标。
你现在可以在 OpenAI Dashboard 中直接配置和运行 Evals。开始 →
Evals 提供了一个框架,用于评估大语言模型(LLMs)或使用 LLMs 构建的系统。我们提供了一个现有的 Evals 注册表,可以在多个维度上测试 OpenAI 模型,同时还支持为你关心的用例编写自定义 Evals。你也可以使用自己的数据构建私有 Evals,这些 Evals 代表你工作流中常见的 LLM 模式,而无需公开任何数据。
如果你正在使用 LLMs 进行构建,创建高质量的 Evals 是你能做的最有影响力的事情之一。没有 Evals,很难且耗时地理解不同的模型版本可能如何影响你的使用场景。用 OpenAI 总裁 Greg Brockman 的话来说:
评估系统对于所有这些事情都至关重要——它们让我们能够进行有重点的改进,以及帮助确保在改进过程中我们没有返工或破坏东西。
要运行 Evals,你需要设置并指定你的 OpenAI API 密钥。获得 API 密钥后,使用 OPENAI_API_KEY 环境变量来指定它。在运行 Evals 时,请注意与 API 使用相关的成本。你也可以使用 Weights & Biases 来运行和创建 Evals。
最低需要的版本:Python 3.9
我们的 Evals 注册表使用 Git-LFS 存储。下载并安装 LFS 后,你可以在本地的 Evals 仓库副本中使用以下命令来获取 Evals:
cd evals
git lfs fetch --all
git lfs pull
这将填充 evals/registry/data 下的所有指针文件。
你可能只想为某个特定的 Eval 获取数据。你可以通过以下方式实现:
git lfs fetch --include=evals/registry/data/${your eval}
git lfs pull
如果你打算创建 Evals,我们建议直接从 GitHub 克隆此仓库,并使用以下命令安装要求:
pip install -e .
使用 -e 后,你对 Eval 所做的更改将立即反映出来,而无需重新安装。
你也可以选择安装用于预提交的格式化程序:
pip install -e .[formatters]
然后运行 pre-commit install 以将 pre-commit 安装到你的 git hooks 中。Pre-commit 将在每次提交时运行。
如果你想手动运行仓库上的所有 pre-commit hooks,请运行 pre-commit run --all-files。要运行单个 hooks,请使用 pre-commit run <hook_id>。
如果你不想贡献新的 Evals,而只是想在本地运行它们,你可以通过 pip 安装 Evals 包:
pip install evals
你可以在 run-evals.md 中找到运行现有 Evals 的完整说明,在 eval-templates.md 中找到现有 Eval 模板。对于 Prompt chains 或使用工具的 Agents 等更高级的用例,你可以使用 Completion Function Protocol。
我们提供了将 Eval 结果记录到 Snowflake 数据库的选项,如果你有或希望设置一个。对于此选项,你还需要指定 SNOWFLAKE_ACCOUNT、SNOWFLAKE_DATABASE、SNOWFLAKE_USERNAME 和 SNOWFLAKE_PASSWORD 环境变量。
我们建议从以下开始:
查看构建 Eval 的完整过程:build-eval.md
探索实现自定义 Eval 逻辑的示例:custom-eval.md
编写你自己的 Completion functions:completion-fns.md
查阅 OpenAI Evals 入门指南:Getting Started with OpenAI Evals
请注意,我们目前不接受包含自定义代码的 Evals!虽然我们要求你暂时不要提交这样的 Evals,但你仍然可以提交带有自定义模型评分 YAML 文件的模型评分 Evals。
如果你认为有有趣的 Eval,请打开一个拉取请求来提交你的贡献。OpenAI 工作人员在考虑对即将推出的模型进行改进时会积极审查这些 Evals。
你有从头到尾构建 Eval 的示例吗?
有的!这些在 examples 文件夹中。我们建议你也阅读 build-eval.md 以更深入地理解这些示例中发生的情况。
你有以多种不同方式实现的 Eval 示例吗?
有的!特别是,参见 evals/registry/evals/coqa.yaml。我们为各种 Eval 模板实现了 CoQA 数据集的小子集,以帮助说明差异。
当我运行 Eval 时,有时它会在最后(在最终报告之后)挂起。发生什么了?
这是一个已知问题,但你应该能够安全地中断它,在中断后 Eval 应该会立即完成。
代码很多,我只想快速启动一个 Eval。帮帮忙?或者
我是一位世界级的 Prompt Engineer。我选择不编码。我如何贡献我的专业知识?
如果你遵循现有的 Eval 模板来构建基础或模型评分 Eval,你根本不需要编写任何评估代码!只需以 JSON 格式提供你的数据,并在 YAML 中指定你的 Eval 参数。build-eval.md 会指导你完成这些步骤,你可以使用 examples 文件夹中的 Jupyter 笔记本来补充这些说明,帮助你快速入门。不过请记住,一个好的 Eval 必然需要仔细的思考和严格的实验!
通过为 Evals 贡献代码,你同意在与本仓库相同的 MIT 许可证下公开你的评估逻辑和数据。你必须拥有上传 Eval 中使用的任何数据的充分权利。OpenAI 保留在未来的产品服务改进中使用此数据的权利。OpenAI Evals 的贡献将受到我们通常使用政策的约束:https://platform.openai.com/docs/usage-policies。