回答類似度 Scorer
createAnswerSimilarityScorer() 関数は、Agent の出力が正解とどの程度類似しているかを評価する Scorer を作成します。この Scorer は、期待する回答があり、長期的な一貫性を確保したい CI/CD テストシナリオ向けに設計されています。
パラメーターパラメーターへの直接リンク
model:
LanguageModel
出力と正解の意味的類似性を評価するために使用する言語モデル。
options:
AnswerSimilarityOptions
Scorer の設定オプション。
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() メソッドは他の Scorer と同じ入力を受け取ります(MastraScorer リファレンスを参照)が、Run オブジェクトに正解を指定する必要があります。
.run() の戻り値run-returnsへの直接リンク
runId:
string
Run の ID(任意)。
score:
number
0~1 の類似度スコア(カスタムスケールを使用する場合は 0~scale)。スコアが高いほど正解との類似度が高いことを示します。
reason:
string
実行可能な Feedback を含む、人が読めるスコアの説明。
preprocessStepResult:
object
出力と正解から抽出した意味単位。
analyzeStepResult:
object
一致、矛盾、追加情報の詳細な分析。
preprocessPrompt:
string
意味単位の抽出に使用した Prompt。
analyzePrompt:
string
類似性の分析に使用した Prompt。
generateReasonPrompt:
string
説明の生成に使用した Prompt。
スコアリングの詳細スコアリングの詳細への直接リンク
Scorer は複数の Step で処理します。
- 抽出:出力と正解を意味単位に分解します
- 分析:意味単位を比較し、一致、矛盾、欠落を特定します
- スコア:矛盾に対するペナルティを適用して、重み付き類似度を計算します
- 理由:人が読める説明を生成します
スコアの計算: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 リファレンスを参照してください。
この Scorer を Agent に追加する方法は、Scorer の概要ガイドを参照してください。