跳至主要內容

文本差異評分器

createTextualDifferenceScorer() 函式使用序列配對,量度兩個字串之間的文本差異。它會提供變更的詳細資料,包括將一段文本轉換成另一段文本所需的操作數目。

參數
參數 的直接連結

createTextualDifferenceScorer() 函式不接受任何選項。

此函式會傳回 MastraScorer 類別的實例。有關 .run() 方法及其輸入/輸出的詳情,請參閱 MastraScorer 參考

.run() 傳回值
run-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
}

評分詳情
評分詳情 的直接連結

評分器會計算多項指標:

  • 相似度比率:根據文本之間的序列配對計算(0 至 1)
  • 變更:所需的不相符操作數目
  • 長度差異:文本長度差異的標準化值
  • 置信度:與長度差異成反比

評分流程
評分流程 的直接連結

  1. 分析文本差異:
    • 對輸入和輸出執行序列配對
    • 計算所需的變更操作數目
    • 量度長度差異
  2. 計算指標:
    • 計算相似度比率
    • 判定置信度分數
    • 合併為加權分數

最終分數:(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 參考

如要將此評分器加入 Agent,請參閱 評分器概覽指南。