Skip to main content

评估事实性

promptfoo 实现了 OpenAI 的事实性评估方法,使用 factuality 断言类型。

模型评分的事实性检查需要以下三个输入:

  • 提示:发送给 LLM 的提示
  • 输出:LLM 生成的文本
  • 参考:由评估作者提供的理想 LLM 输出

使用方法

在这个示例中,我们确保两个提示正确输出加利福尼亚的首府。断言中提供的 value 是理想答案:

providers:
- openai:gpt-4o-mini
prompts:
- file://prompts/name_capitals_concise.txt
- file://prompts/name_capitals_verbose.txt
tests:
- vars:
location: Sacramento
assert:
# 确保答案与提供的事实一致
- type: factuality
value: The capital of California is Sacramento

在这个示例中,我们比较了三个模型(GPT-3.5、GPT-4 和 Llama2-70b)的事实性能力,同时保持提示不变:

providers:
- openai:gpt-4o-mini
- openai:gpt-4o
- ollama:llama3.1:70b
prompts:
- file://prompts/name_capitals_concise.txt
tests:
- vars:
location: Sacramento
assert:
# 确保答案与提供的事实一致
- type: factuality
value: The capital of California is Sacramento

评分和失败情况

评分可以在评分配置中进行自定义,以匹配您偏好的事实一致性水平。

底层评估将 LLM 输出分类为以下五类之一:

  • A:提交的答案是专家答案的子集,并且与其完全一致。
  • B:提交的答案是专家答案的超集,并且与其完全一致。
  • C:提交的答案包含与专家答案相同的所有细节。
  • D:提交的答案与专家答案存在分歧。
  • E:答案不同,但从事实性的角度来看,这些差异无关紧要。

评估返回一个分数和一个通过/失败状态。分数根据 LLM 输出所属的类别确定。默认情况下,类别 A、B、C 和 E 的分数为 1(通过),类别 D 的分数为 0(失败)。

assert:
# 确保答案与提供的事实一致
- type: factuality
value: The capital of California is Sacramento
options:
factuality:
subset: 0.8
superset: 0
agree: 1
disagree: 0
differButFactual: 0

上述配置在 LLM 输出是理想答案的超集,或者即使它仍然符合事实但与理想答案不同时,将评估标记为失败。它倾向于完全一致,但部分答案仍得分为 0.8。

模型评分

一般来说,评分应由擅长推理的模型进行。默认情况下,promptfoo 使用 GPT-4 运行模型评分的评估。

然而,您可以使用任何您想要的模型来评分评估。要使用除 GPT-4 以外的模型,请参阅覆盖 LLM 评分器