评估事实性
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 评分器。