文本差异 Scorer
createTextualDifferenceScorer() 函数使用序列匹配来衡量两个字符串之间的文本差异。它会提供详细的变更信息,包括将一段文本转换为另一段文本所需的操作次数。
参数参数的直接链接
createTextualDifferenceScorer() 函数不接受任何选项。
此函数返回 MastraScorer 类的实例。有关 .run() 方法及其输入/输出的详情,请参阅 MastraScorer 参考。
.run() returnsrun-returns的直接链接
runId:
string
运行 ID(可选)。
analyzeStepResult:
object
包含差异指标的对象:{ confidence: number, changes: number, lengthDiff: number }
score:
number
相似度比率(0-1),其中 1 表示文本完全相同。
.run() 返回以下结构的结果:
{
runId: string,
analyzeStepResult: {
confidence: number,
ratio: number,
changes: number,
lengthDiff: number
},
score: number
}
评分详情评分详情的直接链接
该 Scorer 会计算以下几项指标:
- 相似度比率:基于文本之间的序列匹配(0-1)
- 更改数:所需的不匹配操作数量
- 长度差异:文本长度差异的归一化结果
- 置信度:与长度差异成反比
评分流程评分流程的直接链接
- 分析文本差异:
- 对输入和输出执行序列匹配
- 统计所需的更改操作数量
- 衡量长度差异
- 计算指标:
- 计算相似度
- 确定置信度分数
- 合并为加权分数
最终分数: (similarity_ratio * confidence) * scale
分数解读分数解读的直接链接
文本差异分数介于 0 和 1 之间:
- 1.0:文本完全相同。
- 0.7 到 0.9:差异较小,只需少量更改。
- 0.4 到 0.6:存在中等差异,需要明显更改。
- 0.1 到 0.3:差异较大,需要大量更改。
- 0.0:文本完全不同。
示例示例的直接链接
衡量 Agent 预期输出与实际输出之间的文本差异:
src/example-textual-difference.ts
import { runEvals } from '@mastra/core/evals'
import { createTextualDifferenceScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'
const scorer = createTextualDifferenceScorer()
const result = await runEvals({
data: [
{
input: 'Summarize the concept of recursion',
groundTruth:
'Recursion is when a function calls itself to solve a problem by breaking it into smaller subproblems.',
},
{
input: 'What is the capital of France?',
groundTruth: 'The capital of France is Paris.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
groundTruth: scorerResults[scorer.id].groundTruth,
})
},
})
console.log(result.scores)
有关 runEvals 的更多详情,请参阅 runEvals 参考。
要将此 Scorer 添加到 Agent,请参阅 Scorer 概述指南。