跳至主要內容

文字差異評分器

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,請參閱評分器概觀指南。