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)。