Skip to main content

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 进行评分。您可以通过以下几种方式覆盖此设置:

  1. 使用 --grader CLI 选项:

    promptfoo eval --grader openai:gpt-4o-mini
  2. 使用 test.optionsdefaultTest.options

    defaultTest:
    options:
    provider: openai:gpt-4o-mini
    assert:
    - description: 使用 LLM 评估输出
    assert:
    - type: llm-rubric
    value: 以专业的语气书写
  3. 使用 assertion.provider

    tests:
    - description: 使用 LLM 评估输出
    assert:
    - type: llm-rubric
    value: 以专业的语气书写
    provider: openai:gpt-4o-mini

自定义评分标准提示

为了更精细地控制 llm-rubric 评估,您可以使用 rubricPrompt 属性设置自定义提示:

defaultTest:
options:
rubricPrompt: >
[
{
"role": "system",
"content": "根据以下标准评估以下输出:\n1. 解释的清晰度\n2. 信息的准确性\n3. 与主题的相关性\n\n为每个标准提供一个 10 分制的评分,并给出总体评价。"
},
{
"role": "user",
"content": "待评估的输出:{{output}}\n\n评分标准:{{rubric}}"
}
]

进一步阅读

请参阅 model-graded metrics 了解更多选项。