LLM评分标准
llm-rubric
是 promptfoo 用于“LLM作为评判者”评估的通用评分工具。
它类似于 OpenAI 的 model-graded-closedqa 提示,但在某些情况下可能更有效和稳健。
如何使用
要使用 llm-rubric
断言类型,请将其添加到您的测试配置中,如下所示:
assert:
- type: llm-rubric
# 指定评分 LLM 输出的标准:
value: 不道歉并提供清晰、简洁的答案
此断言将使用语言模型根据指定的评分标准对输出进行评分。
工作原理
在底层,llm-rubric
使用模型根据您提供的标准评估输出。默认情况下,它使用 GPT-4o,但您可以通过设置 provider
选项来覆盖此设置(见下文)。
它要求模型输出一个类似如下的 JSON 对象:
{
"reason": "<对评分标准和输出的分析>",
"score": 0.5, // 0.0-1.0
"pass": true // true 或 false
}
利用您对这种结构的了解,在您的评分标准中给出特殊指令,例如:
assert:
- type: llm-rubric
value: |
根据输出的幽默程度进行评估。评分范围为 0.0 到 1.0,其中:
0.1 分:仅微微一笑。
0.5 分:大笑出声。
1.0 分:笑得在地上打滚。
任何足够有趣以至于可以上 SNL 的都应该通过,否则失败。
在评分标准中使用变量
您可以将测试变量纳入 LLM 评分标准中。这对于检测幻觉或确保输出针对输入的特定方面特别有用。以下是一个示例:
providers:
- openai:gpt-4o
prompts:
- file://prompt1.txt
- file://prompt2.txt
defaultTest:
assert:
- type: llm-rubric
value: '直接回答问题:"{{question}}",无需不必要的详细说明'
tests:
- vars:
question: 法国的首都是什么?
- vars:
question: 我们的太阳系有多少颗行星?
覆盖 LLM 评分器
默认情况下,llm-rubric
使用 GPT-4 进行评分。您可以通过以下几种方式覆盖此设置:
-
使用
--grader
CLI 选项:promptfoo eval --grader openai:gpt-4o-mini
-
使用
test.options
或defaultTest.options
:defaultTest:
options:
provider: openai:gpt-4o-mini
assert:
- description: 使用 LLM 评估输出
assert:
- type: llm-rubric
value: 以专业的语气书写 -
使用
assertion.provider
:tests:
- description: 使用 LLM 评估输出
assert:
- type: llm-rubric
value: 以专业的语气书写
provider: openai:gpt-4o-mini