完整性 Scorer
createCompletenessScorer() 函数评估 LLM 输出对输入中关键要素的覆盖程度。它会分析名词、动词、主题和术语以确定覆盖情况,并给出详细的完整性分数。
参数参数的直接链接
createCompletenessScorer() 函数不接受任何选项。
此函数返回 MastraScorer 类的实例。有关 .run() 方法及其输入/输出的详情,请参阅 MastraScorer 参考。
.run() 返回值run-returns的直接链接
runId:
string
本次运行的 id(可选)。
preprocessStepResult:
object
包含提取要素和覆盖详情的对象:{ inputElements: string[], outputElements: string[], missingElements: string[], elementCounts: { input: number, output: number } }
score:
number
完整性分数(0-1),表示输出所覆盖输入要素的比例。
.run() 方法返回以下结构的结果:
{
runId: string,
extractStepResult: {
inputElements: string[],
outputElements: string[],
missingElements: string[],
elementCounts: { input: number, output: number }
},
score: number
}
要素提取详情要素提取详情的直接链接
该 Scorer 会提取并分析多种类型的要素:
- 名词:关键对象、概念和实体
- 动词:动作和状态(转换为不定式形式)
- 主题:主要话题和主题
- 术语:单个有实际意义的词
提取流程包括:
- 文本规范化(移除变音符号并转换为小写)
- 拆分 camelCase 单词
- 处理单词边界
- 特殊处理短词(不超过 3 个字符)
- 对要素去重
extractStepResultextractstepresult的直接链接
通过 .run() 方法,可以获取包含以下属性的 extractStepResult 对象:
- inputElements:在输入中找到的关键要素(例如名词、动词、主题和术语)。
- outputElements:在输出中找到的关键要素。
- missingElements:未在输出中找到的输入要素。
- elementCounts:输入和输出中的要素数量。
评分详情评分详情的直接链接
该 Scorer 通过分析语言要素的覆盖情况来评估完整性。
评分流程评分流程的直接链接
- 提取关键要素:
- 名词和命名实体
- 动作动词
- 特定主题的术语
- 规范化后的词形
- 计算输入要素的覆盖率:
- 对短术语(不超过 3 个字符)进行精确匹配
- 对较长术语要求显著重叠(>60%)
最终分数:(covered_elements / total_input_elements) * scale
分数解读分数解读的直接链接
完整性分数介于 0 和 1 之间:
- 1.0:详细而全面地回应了查询的所有方面。
- 0.7 到 0.9:较为详细地覆盖了大部分重要方面,仅存在少量遗漏。
- 0.4 到 0.6:回应了部分关键点,但遗漏了重要方面或缺少细节。
- 0.1 到 0.3:仅部分回应了查询,存在大量遗漏。
- 0.0:未回应查询,或提供了无关信息。
示例示例的直接链接
评估不同查询复杂度下 Agent 响应的完整性:
src/example-completeness.ts
import { runEvals } from '@mastra/core/evals'
import { createCompletenessScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'
const scorer = createCompletenessScorer()
const result = await runEvals({
data: [
{
input:
'Explain the process of photosynthesis, including the inputs, outputs, and stages involved.',
},
{
input: 'What are the benefits and drawbacks of remote work for both employees and employers?',
},
{
input:
'Compare renewable and non-renewable energy sources in terms of cost, environmental impact, and sustainability.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
})
},
})
console.log(result.scores)
有关 runEvals 的更多详情,请参阅 runEvals 参考。
要将此 Scorer 添加到 Agent,请参阅 Scorer 概览指南。