文字差異評分器
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)
- 變更:所需的不相符操作次數
- 長度差異:文字長度差異的標準化結果
- 信賴度:與長度差異成反比
評分流程「評分流程」的直接連結
- 分析文字差異:
- 對輸入與輸出進行序列比對
- 計算所需的變更操作次數
- 衡量長度差異
- 計算指標:
- 計算相似度比率
- 判定信賴度分數
- 結合成加權分數
最終分數:(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,請參閱評分器概觀指南。