使用 Promptfoo 进行评估

先决条件

要使用 Promptfoo,您需要在系统上安装 node.js 和 npm。有关更多信息,请遵循 此指南

您可以使用 npm 安装 promptfoo,或直接使用 npx 运行它。在本指南中,我们将使用 npx。

注意:对于此示例,您不需要运行 npx promptfoo@latest init,因为此目录中已有一个初始化的 promptfooconfig.yaml 文件

请在此处参阅官方文档 here

入门

评估由 promptfooconfig.yaml 文件编排。在此文件中,我们定义了以下部分:

  • Prompts
    • Promptfoo 允许您以多种不同格式导入提示。您可以在此处阅读更多相关信息 here
    • 在此示例中,我们将加载 3 个提示 - 与 guide.ipynb 文件中的 prompts.py 相同:
      • 这些函数与 guide.ipynb 中使用的函数相同,只是它们不调用 Anthropic API,而是直接返回提示。Promptfoo 然后负责编排 API 调用和存储结果。
      • 您可以在此处阅读有关提示函数的信息 here。使用 Python 允许我们重用 VectorDB 类,这对于 RAG 是必需的,它在 vectordb.py 中定义。
  • Providers
    • 使用 Promptfoo,您可以连接到不同平台上的多个 LLM,请参阅 此处了解更多。在 guide.ipynb 中,我们使用了 Haiku,默认温度为 0.0。我们将使用 Promptfoo 试验一系列不同的温度设置,以确定最适合我们用例的选择。
  • Tests
    • 我们将使用与 guide.ipynb 中相同的数据,这些数据可以在此 Google 表格 中找到。
    • Promptfoo 具有广泛的内置测试,您可以在此处找到 here
    • 在此示例中,我们将在 dataset.csv 中定义一个测试,因为我们评估的条件随每一行而变化,并在 promptfooconfig.yaml 中为所有测试用例都一致的条件定义一个测试。在此处阅读更多相关信息 here
  • Transform
    • defaultTest 部分,我们定义了一个转换函数。这是一个 Python 函数,用于从 LLM 响应中提取我们想要测试的特定输出。
  • Output
    • 我们为输出文件定义了路径。Promptfoo 可以以多种格式输出结果,参见此处。或者,您可以使用 Promptfoo 的 Web UI,参见此处

运行评估

要开始使用 Promptfoo,请打开终端并导航到此目录 (./evaluation)。

在运行评估之前,您必须定义以下环境变量:

export ANTHROPIC_API_KEY=YOUR_API_KEY export VOYAGE_API_KEY=YOUR_API_KEY

evaluation 目录运行以下命令。

npx promptfoo@latest eval

如果您想增加请求的并发性(默认为 4),请运行以下命令。

npx promptfoo@latest eval -j 25

评估完成后,终端将打印数据集中每一行的结果。

您现在可以返回 guide.ipynb 来分析结果!