답변 유사성 득점자
그만큼createAnswerSimilarityScorer()함수는 Agent의 출력이 정답과 얼마나 유사한지 평가하는 채점자를 생성합니다. 이 채점기는 답변이 예상되고 시간이 지남에 따라 일관성을 보장하려는 CI/CD 테스트 시나리오를 위해 특별히 설계되었습니다.
매개변수매개변수에 대한 직접 링크
model:
LanguageModel
출력과 정답 간의 의미적 유사성을 평가하는 데 사용되는 언어 Model입니다.
options:
AnswerSimilarityOptions
채점기의 구성 옵션입니다.
AnswerSimilarityOptions
requireGroundTruth:
boolean
평가에 정답이 필요한지 여부입니다. false이면 정답이 없을 때 점수 0을 반환합니다.
semanticThreshold:
number
정확한 일치 대비 의미적 일치의 가중치입니다(0~1).
exactMatchBonus:
number
정확히 일치할 때 추가되는 점수 보너스입니다(0~1).
missingPenalty:
number
정답에서 누락된 핵심 개념당 적용되는 페널티입니다.
contradictionPenalty:
number
모순되는 정보에 대한 페널티입니다. 값이 높으면 오답의 점수가 0에 가까워집니다.
extraInfoPenalty:
number
정답에 없는 추가 정보에 대한 낮은 페널티입니다(최대 0.2).
scale:
number
점수 배율입니다.
이 함수는 MastraScorer 클래스의 인스턴스를 반환합니다. .run() 메서드는 다른 채점기와 동일한 입력을 받지만(MastraScorer 레퍼런스 참조), 실행 객체에 정답을 제공해야 합니다.
.run()보고run-returns에 대한 직접 링크
runId:
string
실행 ID입니다(선택 사항).
score:
number
0~1 사이의 유사성 점수입니다(사용자 지정 scale을 사용하면 0~scale). 점수가 높을수록 정답과의 유사성이 높습니다.
reason:
string
실행 가능한 피드백이 포함된 사람이 읽기 쉬운 점수 설명입니다.
preprocessStepResult:
object
출력과 정답에서 추출한 의미 단위입니다.
analyzeStepResult:
object
일치 항목, 모순 및 추가 정보에 대한 상세 분석입니다.
preprocessPrompt:
string
의미 단위 추출에 사용되는 Prompt입니다.
analyzePrompt:
string
유사성 분석에 사용되는 Prompt입니다.
generateReasonPrompt:
string
설명 생성에 사용되는 Prompt입니다.
채점 세부정보채점 세부정보에 대한 직접 링크
채점자는 다단계 프로세스를 사용합니다.
- 발췌: 출력과 Ground Truth를 의미 단위로 분해합니다.
- 분석하다: 단위를 비교하고 일치, 모순, 격차를 식별합니다.
- 점수: 모순에 대한 페널티를 적용하여 가중 유사성을 계산합니다.
- 이유: 사람이 읽을 수 있는 설명을 생성합니다.
점수 계산:max(0, base_score - contradiction_penalty - missing_penalty - extra_info_penalty) × scale
예예에 대한 직접 링크
다양한 시나리오에서 Agent 응답이 실제와 유사한지 평가합니다.
src/example-answer-similarity.ts
import { runEvals } from '@mastra/core/evals'
import { createAnswerSimilarityScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'
const scorer = createAnswerSimilarityScorer({ model: 'openai/gpt-5.6-sol' })
const result = await runEvals({
data: [
{
input: 'What is 2+2?',
groundTruth: '4',
},
{
input: 'What is the capital of France?',
groundTruth: 'The capital of France is Paris',
},
{
input: 'What are the primary colors?',
groundTruth: 'The primary colors are red, blue, and yellow',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
reason: scorerResults[scorer.id].reason,
})
},
})
console.log(result.scores)
runEvals에 관한 자세한 내용은 runEvals 레퍼런스를 참조하세요.
이 득점자를 Agent에 추가하려면 다음을 참조하세요.Scorers overview guide.