跳至主要內容

語氣一致性評分器

createToneScorer() 函式會評估文本的情緒語氣和情感一致性。它可使用兩種模式:比較輸入/輸出配對之間的語氣,或分析單一文本內的語氣穩定性。

參數
參數 的直接連結

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

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

.run() 傳回值
run-returns 的直接連結

runId:

string
執行的 ID(選填)。

analyzeStepResult:

object
包含語氣指標的物件:{ responseSentiment: number, referenceSentiment: number, difference: number }(比較模式)或 { avgSentiment: number, sentimentVariance: number }(穩定性模式)

score:

number
語氣一致性/穩定性分數(0 至 1)。

.run() 會傳回以下結構的結果:

{
runId: string,
analyzeStepResult: {
responseSentiment?: number,
referenceSentiment?: number,
difference?: number,
avgSentiment?: number,
sentimentVariance?: number,
},
score: number
}

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

評分器透過語氣模式分析及各模式專用的評分方式,評估情感一致性。

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

  1. 分析語氣模式:
    • 擷取情感特徵
    • 計算情感分數
    • 量度語氣變化
  2. 計算模式專用分數: 語氣一致性(輸入和輸出):
    • 比較文本之間的情感
    • 計算情感差異
    • 分數 = 1 - (sentiment_difference / max_difference) 語氣穩定性(單一輸入):
    • 分析各句子的情感
    • 計算情感變異數
    • 分數 = 1 - (sentiment_variance / max_variance)

最終分數:mode_specific_score * scale

分數解讀
分數解讀 的直接連結

(0 至 scale,預設為 0 至 1)

  • 1.0:語氣一致性/穩定性完美
  • 0.7-0.9:一致性高,只有輕微變化
  • 0.4-0.6:一致性中等,有明顯轉變
  • 0.1-0.3:一致性低,語氣有重大變化
  • 0.0:毫無一致性——語氣完全不同

analyzeStepResult
analyzestepresult 的直接連結

包含語氣指標的物件:

  • responseSentiment:回應的情感分數(比較模式)。
  • referenceSentiment:輸入/參考文本的情感分數(比較模式)。
  • difference:情感分數之間的絕對差異(比較模式)。
  • avgSentiment:各句子的平均情感分數(穩定性模式)。
  • sentimentVariance:各句子情感分數的變異數(穩定性模式)。

範例
範例 的直接連結

評估相關 Agent 回應之間的語氣一致性:

src/example-tone-consistency.ts
import { runEvals } from '@mastra/core/evals'
import { createToneScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'

const scorer = createToneScorer()

const result = await runEvals({
data: [
{
input: 'How was your experience with our service?',
groundTruth: 'The service was excellent and exceeded expectations!',
},
{
input: 'Tell me about the customer support',
groundTruth: 'The support team was friendly and very helpful.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
})
},
})

console.log(result.scores)

有關 runEvals 的詳情,請參閱 runEvals 參考

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