跳到主要内容

语气一致性 Scorer

createToneScorer() 函数用于评估文本的情绪语气和情感一致性。它支持两种模式:比较输入/输出对之间的语气,或分析单段文本内的语气稳定性。

参数
参数的直接链接

createToneScorer() 函数不接受任何选项。

此函数返回 MastraScorer 类的实例。有关 .run() 方法及其输入/输出的详情,请参阅 MastraScorer 参考

.run() returns
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
}

评分详情
评分详情的直接链接

该 Scorer 通过语气模式分析和特定于模式的评分来评估情感一致性。

评分流程
评分流程的直接链接

  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 参考

要将此 Scorer 添加到 Agent,请参阅 Scorer 概述指南。