> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 톤 일관성 득점자 그만큼`createToneScorer()`함수는 텍스트의 감정적 어조와 감정 일관성을 평가합니다. 입력/출력 쌍 간의 톤을 비교하거나 단일 텍스트 내의 톤 안정성을 분석하는 두 가지 모드로 작동할 수 있습니다. ## 매개변수 그만큼`createToneScorer()` function doesn't take any options. 이 함수는 MastraScorer 클래스의 인스턴스를 반환합니다. `.run()` 메서드와 그 입력/출력에 대한 자세한 내용은 [MastraScorer 레퍼런스](https://mastra.zisheng.pro/ko/reference/evals/mastra-scorer)를 참조하세요. ## `.run()`보고 **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 } ``` ## 채점 세부정보 채점자는 톤 패턴 분석과 모드별 채점을 통해 정서 일관성을 평가합니다. ### 채점 과정 1. 어조 패턴을 분석합니다. - 감성 특징 추출 - 감성 점수 계산 - 어조 변화 측정 2. 모드별 점수를 계산합니다. **어조 일관성**(입력 및 출력): - 텍스트 간 감성 비교 - 감성 차이 계산 - 점수 = 1 - (sentiment\_difference / max\_difference) **어조 안정성**(단일 입력): - 문장 전체의 감성 분석 - 감성 분산 계산 - 점수 = 1 - (sentiment\_variance / max\_variance) 최종 점수:`mode_specific_score * scale` ### 점수 해석 (0은 스케일, 기본값은 0-1) - 1.0: 완벽한 톤 일관성/안정성 - 0.7-0.9: 사소한 변형이 있는 강력한 일관성 - 0.4-0.6: 눈에 띄는 변화가 있는 중간 정도의 일관성 - 0.1-0.3: 주요 톤 변화에 따른 일관성 부족 - 0.0: 일관성 없음 - 완전히 다른 톤 ### `analyzeStepResult` 톤 메트릭이 있는 개체: - **반응감정**: 응답에 대한 감정 점수(비교 모드)입니다. - **참조감정**: 입력/참조에 대한 감정 점수(비교 모드)입니다. - **차이점**: 감정 점수 간의 절대적인 차이입니다(비교 모드). - **평균감정**: 문장 전체의 평균 감정(안정 모드)입니다. - **감정차이**: 문장에 따른 감정의 변화(안정 모드). ## 예 관련 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/ko/reference/evals/run-evals)를 참조하세요. 이 득점자를 Agent에 추가하려면 다음을 참조하세요.[Scorers overview](https://mastra.zisheng.pro/ko/docs/evals/overview) guide. ## 관련된 - [콘텐츠 유사성 점수 측정기](https://mastra.zisheng.pro/ko/reference/evals/content-similarity) - [독성 점수 측정기](https://mastra.zisheng.pro/ko/reference/evals/toxicity)