Promptfoo 评估

关于此评估套件的说明

1) 请务必遵循以下说明 - 特别是关于所需软件包的先决条件。

2) 运行完整的评估套件可能需要高于正常速率限制。请考虑仅在 promptfoo 中运行部分测试。

3) 并非所有测试都能立即通过 - 我们设计的评估具有中等挑战性。

先决条件

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

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

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

请参阅官方文档 此处

注意 - 附加依赖项

对于此示例,您需要安装以下依赖项才能使我们的 custom_evals 正常运行。

pip install nltk rouge-score

入门

首先,设置您的 ANTHROPIC_API_KEY 环境变量,或为您选择的提供商设置其他必需的密钥。您可以运行 export ANTHROPIC_API_KEY=YOUR_API_KEY

然后,cd 进入 evaluation 目录并输入 npx promptfoo@latest eval -c promptfooconfig.yaml --output ../data/results.csv

之后,您可以通过运行 npx promptfoo@latest view 来查看结果。

工作原理

promptfooconfig.yaml 文件是我们评估设置的核心。它定义了几个关键部分:

Prompts:

  • Prompts 从 prompts.py 文件导入。
  • 这些 prompts 旨在测试 LM 性能的各个方面。

Providers:

  • 我们在此处配置不同的 Claude 版本及其设置。
  • 这使我们能够跨多个模型或使用不同的参数(例如,不同的温度设置)进行测试。

Tests:

  • Test cases 在此文件中定义,或者在此情况下从 tests.yaml 导入。
  • 这些测试指定了我们评估的输入和预期输出。
  • Promptfoo 提供各种内置测试类型(请参阅文档),或者您可以定义自己的测试。我们有 3 个自定义评估和 1 个开箱即用的评估(包含方法):
    • bleu_eval.py:实现了 BLEU(双语评估辅助)分数,它衡量机器生成的文本与参考文本之间的相似性。
    • rouge_eval.py:实现了 ROUGE(用于摘要评估的召回导向)分数,它通过将摘要与参考摘要进行比较来评估摘要的质量。
    • llm_eval.py:包含自定义评估指标,这些指标利用语言模型来评估生成文本的各个方面,例如连贯性、相关性或事实准确性。

Output:

  • 指定评估结果的格式和位置。
  • Promptfoo 也支持各种输出格式!

覆盖 Python 二进制文件

默认情况下,promptfoo 将在您的 shell 中运行 python。请确保 python 指向适当的可执行文件。

如果不存在 python 二进制文件,您将看到“python: command not found”错误。

要覆盖 Python 二进制文件,请设置 PROMPTFOO_PYTHON 环境变量。您可以将其设置为路径(例如 /path/to/python3.11)或 PATH 中的可执行文件(例如 python3.11)。