> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # 语气一致性 Scorer `createToneScorer()` 函数用于评估文本的情绪语气和情感一致性。它支持两种模式:比较输入/输出对之间的语气,或分析单段文本内的语气稳定性。 ## 参数 `createToneScorer()` 函数不接受任何选项。 此函数返回 MastraScorer 类的实例。有关 `.run()` 方法及其输入/输出的详情,请参阅 [MastraScorer 参考](https://mastra.zisheng.pro/reference/evals/mastra-scorer)。 ## `.run()` returns **runId** (`string`): 运行 ID(可选)。 **analyzeStepResult** (`object`): 包含语气指标的对象:比较模式下为 { responseSentiment: number, referenceSentiment: number, difference: number },稳定性模式下为 { avgSentiment: number, sentimentVariance: number }。 **score** (`number`): 语气一致性/稳定性分数(0-1)。 `.run()` 返回以下结构的结果: ```typescript { 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` 包含语气指标的对象: - **responseSentiment**:响应的情感分数(比较模式)。 - **referenceSentiment**:输入/参考文本的情感分数(比较模式)。 - **difference**:情感分数之差的绝对值(比较模式)。 - **avgSentiment**:各语句的平均情感分数(稳定性模式)。 - **sentimentVariance**:各语句情感分数的方差(稳定性模式)。 ## 示例 评估相关 Agent 响应之间的语气一致性: ```typescript 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 参考](https://mastra.zisheng.pro/reference/evals/run-evals)。 要将此 Scorer 添加到 Agent,请参阅 [Scorer 概述](https://mastra.zisheng.pro/docs/evals/overview)指南。 ## 相关内容 - [Content Similarity Scorer](https://mastra.zisheng.pro/reference/evals/content-similarity) - [Toxicity Scorer](https://mastra.zisheng.pro/reference/evals/toxicity)