跳至主要內容

語氣一致性評分器

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