본문으로 건너뛰기

톤 일관성 득점자

그만큼createToneScorer()함수는 텍스트의 감정적 어조와 감정 일관성을 평가합니다. 입력/출력 쌍 간의 톤을 비교하거나 단일 텍스트 내의 톤 안정성을 분석하는 두 가지 모드로 작동할 수 있습니다.

매개변수
매개변수에 대한 직접 링크

그만큼createToneScorer() function doesn't take any options.

이 함수는 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은 스케일, 기본값은 0-1)

  • 1.0: 완벽한 톤 일관성/안정성
  • 0.7-0.9: 사소한 변형이 있는 강력한 일관성
  • 0.4-0.6: 눈에 띄는 변화가 있는 중간 정도의 일관성
  • 0.1-0.3: 주요 톤 변화에 따른 일관성 부족
  • 0.0: 일관성 없음 - 완전히 다른 톤

analyzeStepResult
analyzestepresult에 대한 직접 링크

톤 메트릭이 있는 개체:

  • 반응감정: 응답에 대한 감정 점수(비교 모드)입니다.
  • 참조감정: 입력/참조에 대한 감정 점수(비교 모드)입니다.
  • 차이점: 감정 점수 간의 절대적인 차이입니다(비교 모드).
  • 평균감정: 문장 전체의 평균 감정(안정 모드)입니다.
  • 감정차이: 문장에 따른 감정의 변화(안정 모드).

예에 대한 직접 링크

관련 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에 추가하려면 다음을 참조하세요.Scorers overview guide.